diff options
Diffstat (limited to 'sc/source')
669 files changed, 14871 insertions, 18043 deletions
diff --git a/sc/source/core/data/attarray.cxx b/sc/source/core/data/attarray.cxx index e9793ae4d722..5e497a7b3957 100644 --- a/sc/source/core/data/attarray.cxx +++ b/sc/source/core/data/attarray.cxx @@ -234,14 +234,14 @@ BOOL ScAttrArray::Concat(SCSIZE nPos) BOOL ScAttrArray::Search( SCROW nRow, SCSIZE& nIndex ) const { - long nLo = 0; long nHi = static_cast<long>(nCount) - 1; - long nStartRow = 0; - long nEndRow = 0; long i = 0; BOOL bFound = (nCount == 1); if (pData) { + long nLo = 0; + long nStartRow = 0; + long nEndRow = 0; while ( !bFound && nLo <= nHi ) { i = (nLo + nHi) / 2; @@ -818,8 +818,6 @@ void ScAttrArray::ApplyCacheArea( SCROW nStartRow, SCROW nEndRow, SfxItemPoolCac } else { -//!!!!!!!!!!!!!!!!!! mit diesem Remove gibt es Abstuerze (Calc1 Import) -//! pDocument->GetPool()->Remove(*pNewPattern); nStart = pData[nPos].nRow + 1; ++nPos; } diff --git a/sc/source/core/data/attrib.cxx b/sc/source/core/data/attrib.cxx index 7924b4e2612f..a2183af0ac8b 100644 --- a/sc/source/core/data/attrib.cxx +++ b/sc/source/core/data/attrib.cxx @@ -77,7 +77,6 @@ TYPEINIT1(ScPageScaleToItem, SfxPoolItem); BOOL ScHasPriority( const SvxBorderLine* pThis, const SvxBorderLine* pOther ) { -// DBG_ASSERT( pThis || pOther, "LineAttr == 0" ); if (!pThis) return FALSE; @@ -1089,7 +1088,6 @@ int ScDoubleItem::operator==( const SfxPoolItem& rItem ) const DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" ); const ScDoubleItem& _rItem = (const ScDoubleItem&)rItem; return int(nValue == _rItem.nValue); - //int(nValue == ((const ScDoubleItem&)rItem).nValue); } //------------------------------------------------------------------------ diff --git a/sc/source/core/data/autonamecache.cxx b/sc/source/core/data/autonamecache.cxx index 0b97623b7efb..039aedf2735c 100644 --- a/sc/source/core/data/autonamecache.cxx +++ b/sc/source/core/data/autonamecache.cxx @@ -52,7 +52,7 @@ ScAutoNameCache::~ScAutoNameCache() { } -const ScAutoNameAddresses& ScAutoNameCache::GetNameOccurences( const String& rName, SCTAB nTab ) +const ScAutoNameAddresses& ScAutoNameCache::GetNameOccurrences( const String& rName, SCTAB nTab ) { if ( nTab != nCurrentTab ) { diff --git a/sc/source/core/data/bcaslot.cxx b/sc/source/core/data/bcaslot.cxx index abd6f055b716..56d3be92ad5a 100644 --- a/sc/source/core/data/bcaslot.cxx +++ b/sc/source/core/data/bcaslot.cxx @@ -106,15 +106,12 @@ static SCSIZE initSlotDistribution( ScSlotDistribution & rSD, SCSIZE & rBSR ) // Must be sorted by row1,row2! while (nRow2 <= MAXROWCOUNT) { - //fprintf( stderr, "r1,r2,slice,cum: %7zu, %7zu, %7zu, %7zu\n", (size_t)nRow1, (size_t)nRow2, (size_t)nSlice, (size_t)nSlots); - // {0,32k,128,0;32k,64k,256,0+256;64k,128k,512,0+256+128;128k,256k,1024,0+256+128+128;256k,512k,2048,...;512k,1M,4096,...} rSD.push_back( ScSlotData( nRow1, nRow2, nSlice, nSlots)); nSlots += (nRow2 - nRow1) / nSlice; nRow1 = nRow2; nRow2 *= 2; nSlice *= 2; } - //fprintf( stderr, "Slices: %zu, slots per sheet: %zu, memory per referenced sheet: %zu\n", (size_t) nSlots, (size_t) nSlots * BCA_SLOTS_COL, (size_t) nSlots * BCA_SLOTS_COL * sizeof(void*)); rBSR = nSlots; return nSlots; } @@ -543,7 +540,6 @@ inline void ComputeNextSlot( SCSIZE & nOff, SCSIZE & nBreak, ScBroadcastAreaSlot void ScBroadcastAreaSlotMachine::StartListeningArea( const ScRange& rRange, SvtListener* pListener ) { - //fprintf( stderr, "StartListeningArea (c,r,t): %d, %d, %d, %d, %d, %d\n", (int)rRange.aStart.Col(), (int)rRange.aStart.Row(), (int)rRange.aStart.Tab(), (int)rRange.aEnd.Col(), (int)rRange.aEnd.Row(), (int)rRange.aEnd.Tab()); if ( rRange == BCA_LISTEN_ALWAYS ) { if ( !pBCAlways ) @@ -592,7 +588,6 @@ void ScBroadcastAreaSlotMachine::StartListeningArea( const ScRange& rRange, void ScBroadcastAreaSlotMachine::EndListeningArea( const ScRange& rRange, SvtListener* pListener ) { - //fprintf( stderr, "EndListeningArea (c,r,t): %d, %d, %d, %d, %d, %d\n", (int)rRange.aStart.Col(), (int)rRange.aStart.Row(), (int)rRange.aStart.Tab(), (int)rRange.aEnd.Col(), (int)rRange.aEnd.Row(), (int)rRange.aEnd.Tab()); if ( rRange == BCA_LISTEN_ALWAYS ) { DBG_ASSERT( pBCAlways, "ScBroadcastAreaSlotMachine::EndListeningArea: BCA_LISTEN_ALWAYS but none established"); diff --git a/sc/source/core/data/cell.cxx b/sc/source/core/data/cell.cxx index 49676e29525d..46a6ad51b11c 100644 --- a/sc/source/core/data/cell.cxx +++ b/sc/source/core/data/cell.cxx @@ -1648,7 +1648,7 @@ void ScFormulaCell::InterpretTail( ScInterpretTailParameter eTailParam ) if ( !bContentChanged && pDocument->IsStreamValid(aPos.Tab()) ) { - ScFormulaResult aNewResult( p->GetResultToken()); + ScFormulaResult aNewResult( p->GetResultToken().get()); StackVar eOld = aResult.GetCellResultType(); StackVar eNew = aNewResult.GetCellResultType(); if ( eOld == svUnknown && ( eNew == svError || ( eNew == svDouble && aNewResult.GetDouble() == 0.0 ) ) ) @@ -1668,11 +1668,11 @@ void ScFormulaCell::InterpretTail( ScInterpretTailParameter eTailParam ) } } - aResult.SetToken( p->GetResultToken() ); + aResult.SetToken( p->GetResultToken().get() ); } else { - ScFormulaResult aNewResult( p->GetResultToken()); + ScFormulaResult aNewResult( p->GetResultToken().get()); StackVar eOld = aResult.GetCellResultType(); StackVar eNew = aNewResult.GetCellResultType(); bChanged = (eOld != eNew || @@ -1716,12 +1716,12 @@ void ScFormulaCell::InterpretTail( ScInterpretTailParameter eTailParam ) bDirty = FALSE; bTableOpDirty = FALSE; } - if( aResult.GetMatrix().Is() ) + if( aResult.GetMatrix() ) { // If the formula wasn't entered as a matrix formula, live on with // the upper left corner and let reference counting delete the matrix. if( cMatrixFlag != MM_FORMULA && !pCode->IsHyperLink() ) - aResult.SetToken( aResult.GetCellResultToken()); + aResult.SetToken( aResult.GetCellResultToken().get()); } if ( aResult.IsValue() && !::rtl::math::isFinite( aResult.GetDouble() ) ) { @@ -1837,7 +1837,7 @@ ULONG ScFormulaCell::GetStandardFormat( SvNumberFormatter& rFormatter, ULONG nFo } -void __EXPORT ScFormulaCell::Notify( SvtBroadcaster&, const SfxHint& rHint) +void ScFormulaCell::Notify( SvtBroadcaster&, const SfxHint& rHint) { if ( !pDocument->IsInDtorClear() && !pDocument->GetHardRecalcState() ) { @@ -1997,16 +1997,12 @@ void ScFormulaCell::GetURLResult( String& rURL, String& rCellText ) ScConstMatrixRef xMat( aResult.GetMatrix()); if (xMat) { - ScMatValType nMatValType; // determine if the matrix result is a string or value. - const ScMatrixValue* pMatVal = xMat->Get(0, 1, nMatValType); - if (pMatVal) - { - if (!ScMatrix::IsValueType( nMatValType)) - rURL = pMatVal->GetString(); - else - pFormatter->GetOutputString( pMatVal->fVal, nURLFormat, rURL, &pColor ); - } + ScMatrixValue nMatVal = xMat->Get(0, 1); + if (!ScMatrix::IsValueType( nMatVal.nType)) + rURL = nMatVal.GetString(); + else + pFormatter->GetOutputString( nMatVal.fVal, nURLFormat, rURL, &pColor ); } if(!rURL.Len()) diff --git a/sc/source/core/data/cell2.cxx b/sc/source/core/data/cell2.cxx index 4e1823b97b6a..9a8adaf3a918 100644 --- a/sc/source/core/data/cell2.cxx +++ b/sc/source/core/data/cell2.cxx @@ -364,9 +364,6 @@ lcl_checkRangeDimensions( if (bOk && aCur == aEnd) { - bCol = bCol; - bRow = bRow; - bTab = bTab; return true; } return false; @@ -538,12 +535,12 @@ const ScMatrix* ScFormulaCell::GetMatrix() { // Was stored !bDirty but an accompanying matrix cell was bDirty? // => we need to get the matrix. - if (!bDirty && cMatrixFlag == MM_FORMULA && !aResult.GetMatrix().Is()) + if (!bDirty && cMatrixFlag == MM_FORMULA && !aResult.GetMatrix()) bDirty = TRUE; if ( IsDirtyOrInTableOpDirty() ) Interpret(); } - return aResult.GetMatrix(); + return aResult.GetMatrix().get(); } BOOL ScFormulaCell::GetMatrixOrigin( ScAddress& rPos ) const @@ -553,7 +550,6 @@ BOOL ScFormulaCell::GetMatrixOrigin( ScAddress& rPos ) const case MM_FORMULA : rPos = aPos; return TRUE; -// break; case MM_REFERENCE : { pCode->Reset(); @@ -863,7 +859,6 @@ void ScFormulaCell::UpdateReference(UpdateRefMode eUpdateRefMode, else if ( nCol > MAXCOL ) nCol = MAXCOL; aPos.SetCol( nCol ); -// bPosChanged = TRUE; } } if ( nDy && nCol >= nCol1 && nCol <= nCol2 && @@ -877,7 +872,6 @@ void ScFormulaCell::UpdateReference(UpdateRefMode eUpdateRefMode, else if ( nRow > MAXROW ) nRow = MAXROW; aPos.SetRow( nRow ); -// bPosChanged = TRUE; } } if ( nDz && nCol >= nCol1 && nCol <= nCol2 && @@ -892,14 +886,12 @@ void ScFormulaCell::UpdateReference(UpdateRefMode eUpdateRefMode, else if ( nTab > nMaxTab ) nTab = nMaxTab; aPos.SetTab( nTab ); -// bPosChanged = TRUE; } } } else if ( r.In( aPos ) ) { aOldPos.Set( nCol - nDx, nRow - nDy, nTab - nDz ); -// bPosChanged = TRUE; } BOOL bHasRefs = FALSE; diff --git a/sc/source/core/data/clipparam.cxx b/sc/source/core/data/clipparam.cxx index 6cae3916fc47..17690a2f1f8f 100644 --- a/sc/source/core/data/clipparam.cxx +++ b/sc/source/core/data/clipparam.cxx @@ -57,12 +57,12 @@ ScClipParam::ScClipParam(const ScClipParam& r) : bool ScClipParam::isMultiRange() const { - return maRanges.Count() > 1; + return maRanges.size() > 1; } SCCOL ScClipParam::getPasteColSize() { - if (!maRanges.Count()) + if (maRanges.empty()) return 0; switch (meDirection) @@ -70,14 +70,17 @@ SCCOL ScClipParam::getPasteColSize() case ScClipParam::Column: { SCCOL nColSize = 0; - for (ScRangePtr p = maRanges.First(); p; p = maRanges.Next()) + for ( size_t i = 0, nListSize = maRanges.size(); i < nListSize; ++i ) + { + ScRange* p = maRanges[ i ]; nColSize += p->aEnd.Col() - p->aStart.Col() + 1; + } return nColSize; } case ScClipParam::Row: { // We assume that all ranges have identical column size. - const ScRange& rRange = *maRanges.First(); + const ScRange& rRange = *maRanges.front(); return rRange.aEnd.Col() - rRange.aStart.Col() + 1; } case ScClipParam::Unspecified: @@ -89,7 +92,7 @@ SCCOL ScClipParam::getPasteColSize() SCROW ScClipParam::getPasteRowSize() { - if (!maRanges.Count()) + if (maRanges.empty()) return 0; switch (meDirection) @@ -97,14 +100,17 @@ SCROW ScClipParam::getPasteRowSize() case ScClipParam::Column: { // We assume that all ranges have identical row size. - const ScRange& rRange = *maRanges.First(); + const ScRange& rRange = *maRanges.front(); return rRange.aEnd.Row() - rRange.aStart.Row() + 1; } case ScClipParam::Row: { SCROW nRowSize = 0; - for (ScRangePtr p = maRanges.First(); p; p = maRanges.Next()) + for ( size_t i = 0, nListSize = maRanges.size(); i < nListSize; ++i ) + { + ScRange* p = maRanges[ i ]; nRowSize += p->aEnd.Row() - p->aStart.Row() + 1; + } return nRowSize; } case ScClipParam::Unspecified: @@ -118,9 +124,9 @@ ScRange ScClipParam::getWholeRange() const { ScRange aWhole; bool bFirst = true; - ScRangeList aRanges = maRanges; - for (ScRange* p = aRanges.First(); p; p = aRanges.Next()) + for ( size_t i = 0, n = maRanges.size(); i < n; ++i ) { + const ScRange* p = maRanges[i]; if (bFirst) { aWhole = *p; @@ -159,13 +165,15 @@ void ScClipParam::transpose() } ScRangeList aNewRanges; - if (maRanges.Count()) + if (!maRanges.empty()) { - ScRange* p = maRanges.First(); + ScRange* p = maRanges.front(); SCCOL nColOrigin = p->aStart.Col(); SCROW nRowOrigin = p->aStart.Row(); - for (; p; p = maRanges.Next()) + + for ( size_t i = 1, n = maRanges.size(); i < n; ++i ) { + p = maRanges[ i ]; SCCOL nColDelta = p->aStart.Col() - nColOrigin; SCROW nRowDelta = p->aStart.Row() - nRowOrigin; SCCOL nCol1 = 0; @@ -176,8 +184,7 @@ void ScClipParam::transpose() nCol2 += static_cast<SCCOL>(nRowDelta); nRow1 += static_cast<SCROW>(nColDelta); nRow2 += static_cast<SCROW>(nColDelta); - ScRange aNew(nCol1, nRow1, p->aStart.Tab(), nCol2, nRow2, p->aStart.Tab()); - aNewRanges.Append(aNew); + aNewRanges.push_back( new ScRange(nCol1, nRow1, p->aStart.Tab(), nCol2, nRow2, p->aStart.Tab() ) ); } } maRanges = aNewRanges; diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx index 27dce7c8f414..3d34e5320944 100644 --- a/sc/source/core/data/column.cxx +++ b/sc/source/core/data/column.cxx @@ -59,7 +59,7 @@ // STATIC DATA ----------------------------------------------------------- using namespace formula; -inline BOOL IsAmbiguousScriptNonZero( BYTE nScript ) +inline bool IsAmbiguousScriptNonZero( sal_uInt8 nScript ) { //! move to a header file return ( nScript != SCRIPTTYPE_LATIN && @@ -110,13 +110,13 @@ void ScColumn::Init(SCCOL nNewCol, SCTAB nNewTab, ScDocument* pDoc) } -SCsROW ScColumn::GetNextUnprotected( SCROW nRow, BOOL bUp ) const +SCsROW ScColumn::GetNextUnprotected( SCROW nRow, bool bUp ) const { return pAttrArray->GetNextUnprotected(nRow, bUp); } -USHORT ScColumn::GetBlockMatrixEdges( SCROW nRow1, SCROW nRow2, USHORT nMask ) const +sal_uInt16 ScColumn::GetBlockMatrixEdges( SCROW nRow1, SCROW nRow2, sal_uInt16 nMask ) const { // nix:0, mitte:1, unten:2, links:4, oben:8, rechts:16, offen:32 if ( !pItems ) @@ -139,8 +139,8 @@ USHORT ScColumn::GetBlockMatrixEdges( SCROW nRow1, SCROW nRow2, USHORT nMask ) c else { ScAddress aOrg( ScAddress::INITIALIZE_INVALID ); - BOOL bOpen = FALSE; - USHORT nEdges = 0; + bool bOpen = false; + sal_uInt16 nEdges = 0; SCSIZE nIndex; Search( nRow1, nIndex ); while ( nIndex < nCount && pItems[nIndex].nRow <= nRow2 ) @@ -153,7 +153,7 @@ USHORT ScColumn::GetBlockMatrixEdges( SCROW nRow1, SCROW nRow2, USHORT nMask ) c if ( nEdges ) { if ( nEdges & 8 ) - bOpen = TRUE; // obere Kante oeffnet, weitersehen + bOpen = true; // obere Kante oeffnet, weitersehen else if ( !bOpen ) return nEdges | 32; // es gibt was, was nicht geoeffnet wurde else if ( nEdges & 1 ) @@ -164,7 +164,7 @@ USHORT ScColumn::GetBlockMatrixEdges( SCROW nRow1, SCROW nRow2, USHORT nMask ) c || ((nMask & 4) && (nEdges & 16) && !(nEdges & 4)) ) return nEdges; // nur linke/rechte Kante if ( nEdges & 2 ) - bOpen = FALSE; // untere Kante schliesst + bOpen = false; // untere Kante schliesst } } nIndex++; @@ -176,11 +176,11 @@ USHORT ScColumn::GetBlockMatrixEdges( SCROW nRow1, SCROW nRow2, USHORT nMask ) c } -BOOL ScColumn::HasSelectionMatrixFragment(const ScMarkData& rMark) const +bool ScColumn::HasSelectionMatrixFragment(const ScMarkData& rMark) const { if ( rMark.IsMultiMarked() ) { - BOOL bFound = FALSE; + bool bFound = false; ScAddress aOrg( ScAddress::INITIALIZE_INVALID ); ScAddress aCurOrg( ScAddress::INITIALIZE_INVALID ); @@ -188,8 +188,8 @@ BOOL ScColumn::HasSelectionMatrixFragment(const ScMarkData& rMark) const ScMarkArrayIter aMarkIter( rMark.GetArray()+nCol ); while ( !bFound && aMarkIter.Next( nTop, nBottom ) ) { - BOOL bOpen = FALSE; - USHORT nEdges; + bool bOpen = false; + sal_uInt16 nEdges; SCSIZE nIndex; Search( nTop, nIndex ); while ( !bFound && nIndex < nCount && pItems[nIndex].nRow <= nBottom ) @@ -202,16 +202,16 @@ BOOL ScColumn::HasSelectionMatrixFragment(const ScMarkData& rMark) const if ( nEdges ) { if ( nEdges & 8 ) - bOpen = TRUE; // obere Kante oeffnet, weitersehen + bOpen = true; // obere Kante oeffnet, weitersehen else if ( !bOpen ) - return TRUE; // es gibt was, was nicht geoeffnet wurde + return true; // es gibt was, was nicht geoeffnet wurde else if ( nEdges & 1 ) - bFound = TRUE; // mittendrin, alles selektiert? + bFound = true; // mittendrin, alles selektiert? // (4 und nicht 16) oder (16 und nicht 4) if ( (((nEdges & 4) | 16) ^ ((nEdges & 16) | 4)) ) - bFound = TRUE; // nur linke/rechte Kante, alles selektiert? + bFound = true; // nur linke/rechte Kante, alles selektiert? if ( nEdges & 2 ) - bOpen = FALSE; // untere Kante schliesst + bOpen = false; // untere Kante schliesst if ( bFound ) { // alles selektiert? @@ -231,34 +231,34 @@ BOOL ScColumn::HasSelectionMatrixFragment(const ScMarkData& rMark) const aOrg.Col() + nC - 1, aOrg.Row() + nR - 1, aOrg.Tab() ) ); if ( rMark.IsAllMarked( aRange ) ) - bFound = FALSE; + bFound = false; } else - bFound = FALSE; // war schon + bFound = false; // war schon } } } nIndex++; } if ( bOpen ) - return TRUE; + return true; } return bFound; } else - return FALSE; + return false; } -bool ScColumn::HasAttrib( SCROW nRow1, SCROW nRow2, USHORT nMask ) const +bool ScColumn::HasAttrib( SCROW nRow1, SCROW nRow2, sal_uInt16 nMask ) const { return pAttrArray->HasAttrib( nRow1, nRow2, nMask ); } -BOOL ScColumn::HasAttribSelection( const ScMarkData& rMark, USHORT nMask ) const +bool ScColumn::HasAttribSelection( const ScMarkData& rMark, sal_uInt16 nMask ) const { - BOOL bFound = FALSE; + bool bFound = false; SCROW nTop; SCROW nBottom; @@ -269,7 +269,7 @@ BOOL ScColumn::HasAttribSelection( const ScMarkData& rMark, USHORT nMask ) const while (aMarkIter.Next( nTop, nBottom ) && !bFound) { if (pAttrArray->HasAttrib( nTop, nBottom, nMask )) - bFound = TRUE; + bFound = true; } } @@ -277,15 +277,15 @@ BOOL ScColumn::HasAttribSelection( const ScMarkData& rMark, USHORT nMask ) const } -BOOL ScColumn::ExtendMerge( SCCOL nThisCol, SCROW nStartRow, SCROW nEndRow, +bool ScColumn::ExtendMerge( SCCOL nThisCol, SCROW nStartRow, SCROW nEndRow, SCCOL& rPaintCol, SCROW& rPaintRow, - BOOL bRefresh, BOOL bAttrs ) + bool bRefresh, bool bAttrs ) { return pAttrArray->ExtendMerge( nThisCol, nStartRow, nEndRow, rPaintCol, rPaintRow, bRefresh, bAttrs ); } -void ScColumn::MergeSelectionPattern( ScMergePatternState& rState, const ScMarkData& rMark, BOOL bDeep ) const +void ScColumn::MergeSelectionPattern( ScMergePatternState& rState, const ScMarkData& rMark, bool bDeep ) const { SCROW nTop; SCROW nBottom; @@ -303,7 +303,7 @@ void ScColumn::MergeSelectionPattern( ScMergePatternState& rState, const ScMarkD } -void ScColumn::MergePatternArea( ScMergePatternState& rState, SCROW nRow1, SCROW nRow2, BOOL bDeep ) const +void ScColumn::MergePatternArea( ScMergePatternState& rState, SCROW nRow1, SCROW nRow2, bool bDeep ) const { pAttrArray->MergePatternArea( nRow1, nRow2, rState, bDeep ); } @@ -311,14 +311,14 @@ void ScColumn::MergePatternArea( ScMergePatternState& rState, SCROW nRow1, SCROW void ScColumn::MergeBlockFrame( SvxBoxItem* pLineOuter, SvxBoxInfoItem* pLineInner, ScLineFlags& rFlags, - SCROW nStartRow, SCROW nEndRow, BOOL bLeft, SCCOL nDistRight ) const + SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight ) const { pAttrArray->MergeBlockFrame( pLineOuter, pLineInner, rFlags, nStartRow, nEndRow, bLeft, nDistRight ); } void ScColumn::ApplyBlockFrame( const SvxBoxItem* pLineOuter, const SvxBoxInfoItem* pLineInner, - SCROW nStartRow, SCROW nEndRow, BOOL bLeft, SCCOL nDistRight ) + SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight ) { pAttrArray->ApplyBlockFrame( pLineOuter, pLineInner, nStartRow, nEndRow, bLeft, nDistRight ); } @@ -330,7 +330,7 @@ const ScPatternAttr* ScColumn::GetPattern( SCROW nRow ) const } -const SfxPoolItem* ScColumn::GetAttr( SCROW nRow, USHORT nWhich ) const +const SfxPoolItem* ScColumn::GetAttr( SCROW nRow, sal_uInt16 nWhich ) const { return &pAttrArray->GetPattern( nRow )->GetItemSet().Get(nWhich); } @@ -377,7 +377,7 @@ sal_uInt32 ScColumn::GetNumberFormat( SCROW nStartRow, SCROW nEndRow ) const } -ULONG ScColumn::GetNumberFormat( SCROW nRow ) const +sal_uInt32 ScColumn::GetNumberFormat( SCROW nRow ) const { return pAttrArray->GetPattern( nRow )->GetNumberFormat( pDocument->GetFormatTable() ); } @@ -387,7 +387,7 @@ SCsROW ScColumn::ApplySelectionCache( SfxItemPoolCache* pCache, const ScMarkData { SCROW nTop = 0; SCROW nBottom = 0; - BOOL bFound = FALSE; + bool bFound = false; if ( rMark.IsMultiMarked() ) { @@ -395,7 +395,7 @@ SCsROW ScColumn::ApplySelectionCache( SfxItemPoolCache* pCache, const ScMarkData while (aMarkIter.Next( nTop, nBottom )) { pAttrArray->ApplyCacheArea( nTop, nBottom, pCache, pDataArray ); - bFound = TRUE; + bFound = true; } } @@ -408,7 +408,7 @@ SCsROW ScColumn::ApplySelectionCache( SfxItemPoolCache* pCache, const ScMarkData } -void ScColumn::ChangeSelectionIndent( BOOL bIncrement, const ScMarkData& rMark ) +void ScColumn::ChangeSelectionIndent( bool bIncrement, const ScMarkData& rMark ) { SCROW nTop; SCROW nBottom; @@ -422,7 +422,7 @@ void ScColumn::ChangeSelectionIndent( BOOL bIncrement, const ScMarkData& rMark ) } -void ScColumn::ClearSelectionItems( const USHORT* pWhich,const ScMarkData& rMark ) +void ScColumn::ClearSelectionItems( const sal_uInt16* pWhich,const ScMarkData& rMark ) { SCROW nTop; SCROW nBottom; @@ -436,7 +436,7 @@ void ScColumn::ClearSelectionItems( const USHORT* pWhich,const ScMarkData& rMark } -void ScColumn::DeleteSelection( USHORT nDelFlag, const ScMarkData& rMark ) +void ScColumn::DeleteSelection( sal_uInt16 nDelFlag, const ScMarkData& rMark ) { SCROW nTop; SCROW nBottom; @@ -457,9 +457,9 @@ void ScColumn::ApplyPattern( SCROW nRow, const ScPatternAttr& rPatAttr ) const ScPatternAttr* pPattern = pAttrArray->GetPattern( nRow ); - // TRUE = alten Eintrag behalten + // true = alten Eintrag behalten - ScPatternAttr* pNewPattern = (ScPatternAttr*) &aCache.ApplyTo( *pPattern, TRUE ); + ScPatternAttr* pNewPattern = (ScPatternAttr*) &aCache.ApplyTo( *pPattern, true ); ScDocumentPool::CheckRef( *pPattern ); ScDocumentPool::CheckRef( *pNewPattern ); @@ -493,7 +493,7 @@ void ScColumn::ApplyPatternIfNumberformatIncompatible( const ScRange& rRange, SCROW nRow1, nRow2; const ScPatternAttr* pPattern = pAttrArray->GetPatternRange( nRow1, nRow2, nRow ); - ULONG nFormat = pPattern->GetNumberFormat( pFormatter ); + sal_uInt32 nFormat = pPattern->GetNumberFormat( pFormatter ); short nOldType = pFormatter->GetType( nFormat ); if ( nOldType == nNewType || pFormatter->IsCompatible( nOldType, nNewType ) ) nRow = nRow2; @@ -515,7 +515,7 @@ void ScColumn::ApplyStyle( SCROW nRow, const ScStyleSheet& rStyle ) if (pNewPattern) { pNewPattern->SetStyleSheet((ScStyleSheet*)&rStyle); - pAttrArray->SetPattern(nRow, pNewPattern, TRUE); + pAttrArray->SetPattern(nRow, pNewPattern, true); delete pNewPattern; } } @@ -542,7 +542,7 @@ void ScColumn::ApplySelectionStyle(const ScStyleSheet& rStyle, const ScMarkData& void ScColumn::ApplySelectionLineStyle( const ScMarkData& rMark, - const SvxBorderLine* pLine, BOOL bColorOnly ) + const SvxBorderLine* pLine, bool bColorOnly ) { if ( bColorOnly && !pLine ) return; @@ -565,16 +565,16 @@ const ScStyleSheet* ScColumn::GetStyle( SCROW nRow ) const } -const ScStyleSheet* ScColumn::GetSelectionStyle( const ScMarkData& rMark, BOOL& rFound ) const +const ScStyleSheet* ScColumn::GetSelectionStyle( const ScMarkData& rMark, bool& rFound ) const { - rFound = FALSE; + rFound = false; if (!rMark.IsMultiMarked()) { DBG_ERROR("ScColumn::GetSelectionStyle ohne Selektion"); return NULL; } - BOOL bEqual = TRUE; + bool bEqual = true; const ScStyleSheet* pStyle = NULL; const ScStyleSheet* pNewStyle; @@ -591,9 +591,9 @@ const ScStyleSheet* ScColumn::GetSelectionStyle( const ScMarkData& rMark, BOOL& while (bEqual && ( pPattern = aAttrIter.Next( nRow, nDummy ) ) != NULL) { pNewStyle = pPattern->GetStyleSheet(); - rFound = TRUE; + rFound = true; if ( !pNewStyle || ( pStyle && pNewStyle != pStyle ) ) - bEqual = FALSE; // unterschiedliche + bEqual = false; // unterschiedliche pStyle = pNewStyle; } } @@ -602,11 +602,11 @@ const ScStyleSheet* ScColumn::GetSelectionStyle( const ScMarkData& rMark, BOOL& } -const ScStyleSheet* ScColumn::GetAreaStyle( BOOL& rFound, SCROW nRow1, SCROW nRow2 ) const +const ScStyleSheet* ScColumn::GetAreaStyle( bool& rFound, SCROW nRow1, SCROW nRow2 ) const { - rFound = FALSE; + rFound = false; - BOOL bEqual = TRUE; + bool bEqual = true; const ScStyleSheet* pStyle = NULL; const ScStyleSheet* pNewStyle; @@ -618,9 +618,9 @@ const ScStyleSheet* ScColumn::GetAreaStyle( BOOL& rFound, SCROW nRow1, SCROW nRo while (bEqual && ( pPattern = aAttrIter.Next( nRow, nDummy ) ) != NULL) { pNewStyle = pPattern->GetStyleSheet(); - rFound = TRUE; + rFound = true; if ( !pNewStyle || ( pStyle && pNewStyle != pStyle ) ) - bEqual = FALSE; // unterschiedliche + bEqual = false; // unterschiedliche pStyle = pNewStyle; } @@ -632,38 +632,38 @@ void ScColumn::FindStyleSheet( const SfxStyleSheetBase* pStyleSheet, ScFlatBoolR pAttrArray->FindStyleSheet( pStyleSheet, rUsedRows, bReset ); } -BOOL ScColumn::IsStyleSheetUsed( const ScStyleSheet& rStyle, BOOL bGatherAllStyles ) const +bool ScColumn::IsStyleSheetUsed( const ScStyleSheet& rStyle, bool bGatherAllStyles ) const { return pAttrArray->IsStyleSheetUsed( rStyle, bGatherAllStyles ); } -BOOL ScColumn::ApplyFlags( SCROW nStartRow, SCROW nEndRow, INT16 nFlags ) +bool ScColumn::ApplyFlags( SCROW nStartRow, SCROW nEndRow, sal_Int16 nFlags ) { return pAttrArray->ApplyFlags( nStartRow, nEndRow, nFlags ); } -BOOL ScColumn::RemoveFlags( SCROW nStartRow, SCROW nEndRow, INT16 nFlags ) +bool ScColumn::RemoveFlags( SCROW nStartRow, SCROW nEndRow, sal_Int16 nFlags ) { return pAttrArray->RemoveFlags( nStartRow, nEndRow, nFlags ); } -void ScColumn::ClearItems( SCROW nStartRow, SCROW nEndRow, const USHORT* pWhich ) +void ScColumn::ClearItems( SCROW nStartRow, SCROW nEndRow, const sal_uInt16* pWhich ) { pAttrArray->ClearItems( nStartRow, nEndRow, pWhich ); } -void ScColumn::SetPattern( SCROW nRow, const ScPatternAttr& rPatAttr, BOOL bPutToPool ) +void ScColumn::SetPattern( SCROW nRow, const ScPatternAttr& rPatAttr, bool bPutToPool ) { pAttrArray->SetPattern( nRow, &rPatAttr, bPutToPool ); } void ScColumn::SetPatternArea( SCROW nStartRow, SCROW nEndRow, - const ScPatternAttr& rPatAttr, BOOL bPutToPool ) + const ScPatternAttr& rPatAttr, bool bPutToPool ) { pAttrArray->SetPatternArea( nStartRow, nEndRow, &rPatAttr, bPutToPool ); } @@ -696,12 +696,12 @@ void ScColumn::ApplyAttr( SCROW nRow, const SfxPoolItem& rAttr ) #endif -BOOL ScColumn::Search( SCROW nRow, SCSIZE& nIndex ) const +bool ScColumn::Search( SCROW nRow, SCSIZE& nIndex ) const { if ( !pItems || !nCount ) { nIndex = 0; - return FALSE; + return false; } SCROW nMinRow = pItems[0].nRow; if ( nRow <= nMinRow ) @@ -715,12 +715,12 @@ BOOL ScColumn::Search( SCROW nRow, SCSIZE& nIndex ) const if ( nRow == nMaxRow ) { nIndex = nCount - 1; - return TRUE; + return true; } else { nIndex = nCount; - return FALSE; + return false; } } @@ -728,9 +728,9 @@ BOOL ScColumn::Search( SCROW nRow, SCSIZE& nIndex ) const long nLo = nOldLo = 0; long nHi = nOldHi = Min(static_cast<long>(nCount)-1, static_cast<long>(nRow) ); long i = 0; - BOOL bFound = FALSE; + bool bFound = false; // quite continuous distribution? => interpolating search - BOOL bInterpol = (static_cast<SCSIZE>(nMaxRow - nMinRow) < nCount * 2); + bool bInterpol = (static_cast<SCSIZE>(nMaxRow - nMinRow) < nCount * 2); SCROW nR; while ( !bFound && nLo <= nHi ) @@ -745,7 +745,7 @@ BOOL ScColumn::Search( SCROW nRow, SCSIZE& nIndex ) const if ( i < 0 || static_cast<SCSIZE>(i) >= nCount ) { // oops ... i = (nLo+nHi) / 2; - bInterpol = FALSE; + bInterpol = false; } } nR = pItems[i].nRow; @@ -755,7 +755,7 @@ BOOL ScColumn::Search( SCROW nRow, SCSIZE& nIndex ) const if ( bInterpol ) { if ( nLo <= nOldLo ) - bInterpol = FALSE; + bInterpol = false; else nOldLo = nLo; } @@ -768,13 +768,13 @@ BOOL ScColumn::Search( SCROW nRow, SCSIZE& nIndex ) const if ( bInterpol ) { if ( nHi >= nOldHi ) - bInterpol = FALSE; + bInterpol = false; else nOldHi = nHi; } } else - bFound = TRUE; + bFound = true; } } if (bFound) @@ -944,16 +944,16 @@ void ScColumn::SwapRow(SCROW nRow1, SCROW nRow2) if (pCode1->GetLen() == pCode2->GetLen()) // nicht-UPN { - BOOL bEqual = TRUE; - USHORT nLen = pCode1->GetLen(); + bool bEqual = true; + sal_uInt16 nLen = pCode1->GetLen(); FormulaToken** ppToken1 = pCode1->GetArray(); FormulaToken** ppToken2 = pCode2->GetArray(); - for (USHORT i=0; i<nLen; i++) + for (sal_uInt16 i=0; i<nLen; i++) { if ( !ppToken1[i]->TextEqual(*(ppToken2[i])) || ppToken1[i]->Is3DRef() || ppToken2[i]->Is3DRef() ) { - bEqual = FALSE; + bEqual = false; break; } } @@ -1076,11 +1076,11 @@ void ScColumn::SwapCell( SCROW nRow, ScColumn& rCol) } -BOOL ScColumn::TestInsertCol( SCROW nStartRow, SCROW nEndRow) const +bool ScColumn::TestInsertCol( SCROW nStartRow, SCROW nEndRow) const { if (!IsEmpty()) { - BOOL bTest = TRUE; + bool bTest = true; if (pItems) for (SCSIZE i=0; (i<nCount) && bTest; i++) bTest = (pItems[i].nRow < nStartRow) || (pItems[i].nRow > nEndRow) @@ -1096,11 +1096,11 @@ BOOL ScColumn::TestInsertCol( SCROW nStartRow, SCROW nEndRow) const return bTest; } else - return TRUE; + return true; } -BOOL ScColumn::TestInsertRow( SCSIZE nSize ) const +bool ScColumn::TestInsertRow( SCSIZE nSize ) const { // AttrArray only looks for merged cells @@ -1126,16 +1126,16 @@ void ScColumn::InsertRow( SCROW nStartRow, SCSIZE nSize ) if ( i >= nCount ) return ; - BOOL bOldAutoCalc = pDocument->GetAutoCalc(); - pDocument->SetAutoCalc( FALSE ); // Mehrfachberechnungen vermeiden + bool bOldAutoCalc = pDocument->GetAutoCalc(); + pDocument->SetAutoCalc( false ); // Mehrfachberechnungen vermeiden SCSIZE nNewCount = nCount; - BOOL bCountChanged = FALSE; + bool bCountChanged = false; ScAddress aAdr( nCol, 0, nTab ); ScHint aHint( SC_HINT_DATACHANGED, aAdr, NULL ); // only areas (ScBaseCell* == NULL) ScAddress& rAddress = aHint.GetAddress(); // for sparse occupation use single broadcasts, not ranges - BOOL bSingleBroadcasts = (((pItems[nCount-1].nRow - pItems[i].nRow) / + bool bSingleBroadcasts = (((pItems[nCount-1].nRow - pItems[i].nRow) / (nCount - i)) > 1); if ( bSingleBroadcasts ) { @@ -1160,7 +1160,7 @@ void ScColumn::InsertRow( SCROW nStartRow, SCSIZE nSize ) if ( nNewRow > MAXROW && !bCountChanged ) { nNewCount = i; - bCountChanged = TRUE; + bCountChanged = true; } } } @@ -1177,7 +1177,7 @@ void ScColumn::InsertRow( SCROW nStartRow, SCSIZE nSize ) if ( nNewRow > MAXROW && !bCountChanged ) { nNewCount = i; - bCountChanged = TRUE; + bCountChanged = true; aRange.aEnd.SetRow( MAXROW ); } } @@ -1219,7 +1219,7 @@ void ScColumn::InsertRow( SCROW nStartRow, SCSIZE nSize ) } -void ScColumn::CopyToClip(SCROW nRow1, SCROW nRow2, ScColumn& rColumn, BOOL bKeepScenarioFlags, BOOL bCloneNoteCaptions) +void ScColumn::CopyToClip(SCROW nRow1, SCROW nRow2, ScColumn& rColumn, bool bKeepScenarioFlags, bool bCloneNoteCaptions) { pAttrArray->CopyArea( nRow1, nRow2, 0, *rColumn.pAttrArray, bKeepScenarioFlags ? (SC_MF_ALL & ~SC_MF_SCENARIO) : SC_MF_ALL ); @@ -1263,8 +1263,8 @@ void ScColumn::CopyToClip(SCROW nRow1, SCROW nRow2, ScColumn& rColumn, BOOL bKee } -void ScColumn::CopyToColumn(SCROW nRow1, SCROW nRow2, USHORT nFlags, BOOL bMarked, - ScColumn& rColumn, const ScMarkData* pMarkData, BOOL bAsLink ) +void ScColumn::CopyToColumn(SCROW nRow1, SCROW nRow2, sal_uInt16 nFlags, bool bMarked, + ScColumn& rColumn, const ScMarkData* pMarkData, bool bAsLink ) { if (bMarked) { @@ -1277,7 +1277,7 @@ void ScColumn::CopyToColumn(SCROW nRow1, SCROW nRow2, USHORT nFlags, BOOL bMarke { if ( nEnd >= nRow1 ) CopyToColumn( Max(nRow1,nStart), Min(nRow2,nEnd), - nFlags, FALSE, rColumn, pMarkData, bAsLink ); + nFlags, false, rColumn, pMarkData, bAsLink ); } } else @@ -1299,7 +1299,7 @@ void ScColumn::CopyToColumn(SCROW nRow1, SCROW nRow2, USHORT nFlags, BOOL bMarke const ScPatternAttr* pPattern = pAttrArray->GetPattern( nRow ); ScPatternAttr* pNewPattern = new ScPatternAttr( *pPattern ); pNewPattern->SetStyleSheet( (ScStyleSheet*)pStyle ); - rColumn.pAttrArray->SetPattern( nRow, pNewPattern, TRUE ); + rColumn.pAttrArray->SetPattern( nRow, pNewPattern, true ); delete pNewPattern; } } @@ -1358,16 +1358,16 @@ void ScColumn::CopyToColumn(SCROW nRow1, SCROW nRow2, USHORT nFlags, BOOL bMarke } -void ScColumn::UndoToColumn(SCROW nRow1, SCROW nRow2, USHORT nFlags, BOOL bMarked, +void ScColumn::UndoToColumn(SCROW nRow1, SCROW nRow2, sal_uInt16 nFlags, bool bMarked, ScColumn& rColumn, const ScMarkData* pMarkData ) { if (nRow1 > 0) - CopyToColumn( 0, nRow1-1, IDF_FORMULA, FALSE, rColumn ); + CopyToColumn( 0, nRow1-1, IDF_FORMULA, false, rColumn ); CopyToColumn( nRow1, nRow2, nFlags, bMarked, rColumn, pMarkData ); //! bMarked ???? if (nRow2 < MAXROW) - CopyToColumn( nRow2+1, MAXROW, IDF_FORMULA, FALSE, rColumn ); + CopyToColumn( nRow2+1, MAXROW, IDF_FORMULA, false, rColumn ); } @@ -1390,8 +1390,6 @@ void ScColumn::CopyUpdated( const ScColumn& rPosCol, ScColumn& rDestCol ) const } } - // Dummy: - // CopyToColumn( 0,MAXROW, IDF_FORMULA, FALSE, rDestCol, NULL, FALSE ); } @@ -1408,7 +1406,7 @@ void ScColumn::CopyScenarioFrom( const ScColumn& rSrcCol ) { DeleteArea( nStart, nEnd, IDF_CONTENTS ); ((ScColumn&)rSrcCol). - CopyToColumn( nStart, nEnd, IDF_CONTENTS, FALSE, *this ); + CopyToColumn( nStart, nEnd, IDF_CONTENTS, false, *this ); // UpdateUsed nicht noetig, schon in TestCopyScenario passiert @@ -1439,7 +1437,7 @@ void ScColumn::CopyScenarioTo( ScColumn& rDestCol ) const { rDestCol.DeleteArea( nStart, nEnd, IDF_CONTENTS ); ((ScColumn*)this)-> - CopyToColumn( nStart, nEnd, IDF_CONTENTS, FALSE, rDestCol ); + CopyToColumn( nStart, nEnd, IDF_CONTENTS, false, rDestCol ); // UpdateUsed nicht noetig, schon in TestCopyScenario passiert @@ -1457,9 +1455,9 @@ void ScColumn::CopyScenarioTo( ScColumn& rDestCol ) const } -BOOL ScColumn::TestCopyScenarioTo( const ScColumn& rDestCol ) const +bool ScColumn::TestCopyScenarioTo( const ScColumn& rDestCol ) const { - BOOL bOk = TRUE; + bool bOk = true; ScAttrIterator aAttrIter( pAttrArray, 0, MAXROW ); SCROW nStart = 0, nEnd = 0; const ScPatternAttr* pPattern = aAttrIter.Next( nStart, nEnd ); @@ -1467,7 +1465,7 @@ BOOL ScColumn::TestCopyScenarioTo( const ScColumn& rDestCol ) const { if ( ((ScMergeFlagAttr&)pPattern->GetItem( ATTR_MERGE_FLAG )).IsScenario() ) if ( rDestCol.pAttrArray->HasAttrib( nStart, nEnd, HASATTR_PROTECTED ) ) - bOk = FALSE; + bOk = false; pPattern = aAttrIter.Next( nStart, nEnd ); } @@ -1488,7 +1486,7 @@ void ScColumn::MarkScenarioIn( ScMarkData& rDestMark ) const { aRange.aStart.SetRow( nStart ); aRange.aEnd.SetRow( nEnd ); - rDestMark.SetMultiMarkArea( aRange, TRUE ); + rDestMark.SetMultiMarkArea( aRange, true ); } pPattern = aAttrIter.Next( nStart, nEnd ); @@ -1765,7 +1763,7 @@ void ScColumn::UpdateInsertTabAbs(SCTAB nTable) } -void ScColumn::UpdateDeleteTab( SCTAB nTable, BOOL bIsMove, ScColumn* pRefUndo ) +void ScColumn::UpdateDeleteTab( SCTAB nTable, bool bIsMove, ScColumn* pRefUndo ) { if (nTab > nTable) pAttrArray->SetTab(--nTab); @@ -1781,7 +1779,7 @@ void ScColumn::UpdateDeleteTab( SCTAB nTable, BOOL bIsMove, ScColumn* pRefUndo ) back the formula cell while keeping the original note. */ ScBaseCell* pSave = pRefUndo ? pOld->CloneWithoutNote( *pDocument ) : 0; - BOOL bChanged = pOld->UpdateDeleteTab(nTable, bIsMove); + bool bChanged = pOld->UpdateDeleteTab(nTable, bIsMove); if ( nRow != pItems[i].nRow ) Search( nRow, i ); // Listener geloescht/eingefuegt? @@ -1815,7 +1813,7 @@ void ScColumn::UpdateMoveTab( SCTAB nOldPos, SCTAB nNewPos, SCTAB nTabNo ) } -void ScColumn::UpdateCompile( BOOL bForceIfNameInUse ) +void ScColumn::UpdateCompile( bool bForceIfNameInUse ) { if (pItems) for (SCSIZE i = 0; i < nCount; i++) @@ -1846,9 +1844,9 @@ void ScColumn::SetTabNo(SCTAB nNewTab) } -BOOL ScColumn::IsRangeNameInUse(SCROW nRow1, SCROW nRow2, USHORT nIndex) const +bool ScColumn::IsRangeNameInUse(SCROW nRow1, SCROW nRow2, sal_uInt16 nIndex) const { - BOOL bInUse = FALSE; + bool bInUse = false; if (pItems) for (SCSIZE i = 0; !bInUse && (i < nCount); i++) if ((pItems[i].nRow >= nRow1) && @@ -1858,7 +1856,7 @@ BOOL ScColumn::IsRangeNameInUse(SCROW nRow1, SCROW nRow2, USHORT nIndex) const return bInUse; } -void ScColumn::FindRangeNamesInUse(SCROW nRow1, SCROW nRow2, std::set<USHORT>& rIndexes) const +void ScColumn::FindRangeNamesInUse(SCROW nRow1, SCROW nRow2, std::set<sal_uInt16>& rIndexes) const { if (pItems) for (SCSIZE i = 0; i < nCount; i++) @@ -1900,8 +1898,8 @@ void ScColumn::SetDirtyVar() void ScColumn::SetDirty() { // wird nur dokumentweit verwendet, kein FormulaTrack - BOOL bOldAutoCalc = pDocument->GetAutoCalc(); - pDocument->SetAutoCalc( FALSE ); // Mehrfachberechnungen vermeiden + bool bOldAutoCalc = pDocument->GetAutoCalc(); + pDocument->SetAutoCalc( false ); // Mehrfachberechnungen vermeiden for (SCSIZE i=0; i<nCount; i++) { ScFormulaCell* p = (ScFormulaCell*) pItems[i].pCell; @@ -1920,8 +1918,8 @@ void ScColumn::SetDirty( const ScRange& rRange ) { // broadcastet alles innerhalb eines Range, mit FormulaTrack if ( !pItems || !nCount ) return ; - BOOL bOldAutoCalc = pDocument->GetAutoCalc(); - pDocument->SetAutoCalc( FALSE ); // Mehrfachberechnungen vermeiden + bool bOldAutoCalc = pDocument->GetAutoCalc(); + pDocument->SetAutoCalc( false ); // Mehrfachberechnungen vermeiden SCROW nRow2 = rRange.aEnd.Row(); ScAddress aPos( nCol, 0, nTab ); ScHint aHint( SC_HINT_DATACHANGED, aPos, NULL ); @@ -1949,8 +1947,8 @@ void ScColumn::SetTableOpDirty( const ScRange& rRange ) { if ( !pItems || !nCount ) return ; - BOOL bOldAutoCalc = pDocument->GetAutoCalc(); - pDocument->SetAutoCalc( FALSE ); // no multiple recalculation + bool bOldAutoCalc = pDocument->GetAutoCalc(); + pDocument->SetAutoCalc( false ); // no multiple recalculation SCROW nRow2 = rRange.aEnd.Row(); ScAddress aPos( nCol, 0, nTab ); ScHint aHint( SC_HINT_TABLEOPDIRTY, aPos, NULL ); @@ -1976,8 +1974,8 @@ void ScColumn::SetTableOpDirty( const ScRange& rRange ) void ScColumn::SetDirtyAfterLoad() { - BOOL bOldAutoCalc = pDocument->GetAutoCalc(); - pDocument->SetAutoCalc( FALSE ); // Mehrfachberechnungen vermeiden + bool bOldAutoCalc = pDocument->GetAutoCalc(); + pDocument->SetAutoCalc( false ); // Mehrfachberechnungen vermeiden for (SCSIZE i=0; i<nCount; i++) { ScFormulaCell* p = (ScFormulaCell*) pItems[i].pCell; @@ -2009,8 +2007,8 @@ void ScColumn::SetDirtyAfterLoad() void ScColumn::SetRelNameDirty() { - BOOL bOldAutoCalc = pDocument->GetAutoCalc(); - pDocument->SetAutoCalc( FALSE ); // Mehrfachberechnungen vermeiden + bool bOldAutoCalc = pDocument->GetAutoCalc(); + pDocument->SetAutoCalc( false ); // Mehrfachberechnungen vermeiden for (SCSIZE i=0; i<nCount; i++) { ScFormulaCell* p = (ScFormulaCell*) pItems[i].pCell; @@ -2058,9 +2056,9 @@ void ScColumn::CompileAll() { SCROW nRow = pItems[i].nRow; // fuer unbedingtes kompilieren - // bCompile=TRUE und pCode->nError=0 + // bCompile=true und pCode->nError=0 ((ScFormulaCell*)pCell)->GetCode()->SetCodeError( 0 ); - ((ScFormulaCell*)pCell)->SetCompile( TRUE ); + ((ScFormulaCell*)pCell)->SetCompile( true ); ((ScFormulaCell*)pCell)->CompileTokenArray(); if ( nRow != pItems[i].nRow ) Search( nRow, i ); // Listener geloescht/eingefuegt? @@ -2115,14 +2113,14 @@ void ScColumn::ResetChanged( SCROW nStartRow, SCROW nEndRow ) } -BOOL ScColumn::HasEditCells(SCROW nStartRow, SCROW nEndRow, SCROW& rFirst) const +bool ScColumn::HasEditCells(SCROW nStartRow, SCROW nEndRow, SCROW& rFirst) const { // used in GetOptimalHeight - ambiguous script type counts as edit cell SCROW nRow = 0; SCSIZE nIndex; Search(nStartRow,nIndex); - while ( (nIndex < nCount) ? ((nRow=pItems[nIndex].nRow) <= nEndRow) : FALSE ) + while ( (nIndex < nCount) ? ((nRow=pItems[nIndex].nRow) <= nEndRow) : false ) { ScBaseCell* pCell = pItems[nIndex].pCell; CellType eCellType = pCell->GetCellType(); @@ -2131,17 +2129,17 @@ BOOL ScColumn::HasEditCells(SCROW nStartRow, SCROW nEndRow, SCROW& rFirst) const ((eCellType == CELLTYPE_FORMULA) && ((ScFormulaCell*)pCell)->IsMultilineResult()) ) { rFirst = nRow; - return TRUE; + return true; } ++nIndex; } - return FALSE; + return false; } SCsROW ScColumn::SearchStyle( SCsROW nRow, const ScStyleSheet* pSearchStyle, - BOOL bUp, BOOL bInSelection, const ScMarkData& rMark ) + bool bUp, bool bInSelection, const ScMarkData& rMark ) { if (bInSelection) { @@ -2156,8 +2154,8 @@ SCsROW ScColumn::SearchStyle( SCsROW nRow, const ScStyleSheet* pSearchStyle, } -BOOL ScColumn::SearchStyleRange( SCsROW& rRow, SCsROW& rEndRow, const ScStyleSheet* pSearchStyle, - BOOL bUp, BOOL bInSelection, const ScMarkData& rMark ) +bool ScColumn::SearchStyleRange( SCsROW& rRow, SCsROW& rEndRow, const ScStyleSheet* pSearchStyle, + bool bUp, bool bInSelection, const ScMarkData& rMark ) { if (bInSelection) { @@ -2165,7 +2163,7 @@ BOOL ScColumn::SearchStyleRange( SCsROW& rRow, SCsROW& rEndRow, const ScStyleShe return pAttrArray->SearchStyleRange( rRow, rEndRow, pSearchStyle, bUp, (ScMarkArray*) rMark.GetArray()+nCol ); //! const else - return FALSE; + return false; } else return pAttrArray->SearchStyleRange( rRow, rEndRow, pSearchStyle, bUp, NULL ); diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx index 9fc09c2addc6..69b6fefba7e3 100644 --- a/sc/source/core/data/column2.cxx +++ b/sc/source/core/data/column2.cxx @@ -80,7 +80,7 @@ // ----------------------------------------------------------------------- -inline BOOL IsAmbiguousScript( BYTE nScript ) +inline bool IsAmbiguousScript( sal_uInt8 nScript ) { //! move to a header file return ( nScript != SCRIPTTYPE_LATIN && @@ -100,7 +100,7 @@ inline BOOL IsAmbiguousScript( BYTE nScript ) long ScColumn::GetNeededSize( SCROW nRow, OutputDevice* pDev, double nPPTX, double nPPTY, const Fraction& rZoomX, const Fraction& rZoomY, - BOOL bWidth, const ScNeededSizeOptions& rOptions ) + bool bWidth, const ScNeededSizeOptions& rOptions ) { long nValue=0; SCSIZE nIndex; @@ -143,7 +143,7 @@ long ScColumn::GetNeededSize( SCROW nRow, OutputDevice* pDev, const SfxPoolItem* pCondItem; SvxCellHorJustify eHorJust; if (pCondSet && - pCondSet->GetItemState(ATTR_HOR_JUSTIFY, TRUE, &pCondItem) == SFX_ITEM_SET) + pCondSet->GetItemState(ATTR_HOR_JUSTIFY, true, &pCondItem) == SFX_ITEM_SET) eHorJust = (SvxCellHorJustify)((const SvxHorJustifyItem*)pCondItem)->GetValue(); else eHorJust = (SvxCellHorJustify)((const SvxHorJustifyItem&) @@ -152,7 +152,7 @@ long ScColumn::GetNeededSize( SCROW nRow, OutputDevice* pDev, if ( eHorJust == SVX_HOR_JUSTIFY_BLOCK ) bBreak = true; else if ( pCondSet && - pCondSet->GetItemState(ATTR_LINEBREAK, TRUE, &pCondItem) == SFX_ITEM_SET) + pCondSet->GetItemState(ATTR_LINEBREAK, true, &pCondItem) == SFX_ITEM_SET) bBreak = ((const SfxBoolItem*)pCondItem)->GetValue(); else bBreak = ((const SfxBoolItem&)pPattern->GetItem(ATTR_LINEBREAK)).GetValue(); @@ -164,7 +164,7 @@ long ScColumn::GetNeededSize( SCROW nRow, OutputDevice* pDev, // get other attributes from pattern and conditional formatting SvxCellOrientation eOrient = pPattern->GetCellOrientation( pCondSet ); - BOOL bAsianVertical = ( eOrient == SVX_ORIENTATION_STACKED && + bool bAsianVertical = ( eOrient == SVX_ORIENTATION_STACKED && ((const SfxBoolItem&)pPattern->GetItem( ATTR_VERTICAL_ASIAN, pCondSet )).GetValue() ); if ( bAsianVertical ) bBreak = false; @@ -177,14 +177,14 @@ long ScColumn::GetNeededSize( SCROW nRow, OutputDevice* pDev, if ( eOrient == SVX_ORIENTATION_STANDARD ) { if (pCondSet && - pCondSet->GetItemState(ATTR_ROTATE_VALUE, TRUE, &pCondItem) == SFX_ITEM_SET) + pCondSet->GetItemState(ATTR_ROTATE_VALUE, true, &pCondItem) == SFX_ITEM_SET) nRotate = ((const SfxInt32Item*)pCondItem)->GetValue(); else nRotate = ((const SfxInt32Item&)pPattern->GetItem(ATTR_ROTATE_VALUE)).GetValue(); if ( nRotate ) { if (pCondSet && - pCondSet->GetItemState(ATTR_ROTATE_MODE, TRUE, &pCondItem) == SFX_ITEM_SET) + pCondSet->GetItemState(ATTR_ROTATE_MODE, true, &pCondItem) == SFX_ITEM_SET) eRotMode = (SvxRotateMode)((const SvxRotateModeItem*)pCondItem)->GetValue(); else eRotMode = (SvxRotateMode)((const SvxRotateModeItem&) @@ -200,26 +200,26 @@ long ScColumn::GetNeededSize( SCROW nRow, OutputDevice* pDev, // ignore orientation/rotation if "repeat" is active eOrient = SVX_ORIENTATION_STANDARD; nRotate = 0; - bAsianVertical = FALSE; + bAsianVertical = false; } const SvxMarginItem* pMargin; if (pCondSet && - pCondSet->GetItemState(ATTR_MARGIN, TRUE, &pCondItem) == SFX_ITEM_SET) + pCondSet->GetItemState(ATTR_MARGIN, true, &pCondItem) == SFX_ITEM_SET) pMargin = (const SvxMarginItem*) pCondItem; else pMargin = (const SvxMarginItem*) &pPattern->GetItem(ATTR_MARGIN); - USHORT nIndent = 0; + sal_uInt16 nIndent = 0; if ( eHorJust == SVX_HOR_JUSTIFY_LEFT ) { if (pCondSet && - pCondSet->GetItemState(ATTR_INDENT, TRUE, &pCondItem) == SFX_ITEM_SET) + pCondSet->GetItemState(ATTR_INDENT, true, &pCondItem) == SFX_ITEM_SET) nIndent = ((const SfxUInt16Item*)pCondItem)->GetValue(); else nIndent = ((const SfxUInt16Item&)pPattern->GetItem(ATTR_INDENT)).GetValue(); } - BYTE nScript = pDocument->GetScriptType( nCol, nRow, nTab, pCell ); + sal_uInt8 nScript = pDocument->GetScriptType( nCol, nRow, nTab, pCell ); if (nScript == 0) nScript = ScGlobal::GetDefaultScriptType(); // also call SetFont for edit cells, because bGetFont may be set only once @@ -233,10 +233,10 @@ long ScColumn::GetNeededSize( SCROW nRow, OutputDevice* pDev, pDev->SetFont(aFont); } - BOOL bAddMargin = TRUE; + bool bAddMargin = true; CellType eCellType = pCell->GetCellType(); - BOOL bEditEngine = ( eCellType == CELLTYPE_EDIT || + bool bEditEngine = ( eCellType == CELLTYPE_EDIT || eOrient == SVX_ORIENTATION_STACKED || IsAmbiguousScript( nScript ) || ((eCellType == CELLTYPE_FORMULA) && ((ScFormulaCell*)pCell)->IsMultilineResult()) ); @@ -246,10 +246,10 @@ long ScColumn::GetNeededSize( SCROW nRow, OutputDevice* pDev, String aValStr; Color* pColor; SvNumberFormatter* pFormatter = pDocument->GetFormatTable(); - ULONG nFormat = pPattern->GetNumberFormat( pFormatter, pCondSet ); + sal_uInt32 nFormat = pPattern->GetNumberFormat( pFormatter, pCondSet ); ScCellFormat::GetString( pCell, nFormat, aValStr, &pColor, *pFormatter, - TRUE, rOptions.bFormula, ftCheck ); + true, rOptions.bFormula, ftCheck ); if (aValStr.Len()) { // SetFont ist nach oben verschoben @@ -275,7 +275,7 @@ long ScColumn::GetNeededSize( SCROW nRow, OutputDevice* pDev, else if ( rOptions.bTotalSize ) { nWidth = (long) ( pDocument->GetColWidth( nCol,nTab ) * nPPT ); - bAddMargin = FALSE; + bAddMargin = false; // nur nach rechts: //! unterscheiden nach Ausrichtung oben/unten (nur Text/ganze Hoehe) if ( pPattern->GetRotateDir( pCondSet ) == SC_ROTDIR_RIGHT ) @@ -324,7 +324,7 @@ long ScColumn::GetNeededSize( SCROW nRow, OutputDevice* pDev, * nPPT ); nDocPixel = (nDocPixel * 9) / 10; // zur Sicherheit if ( aSize.Width() > nDocPixel ) - bEditEngine = TRUE; + bEditEngine = true; } } } @@ -339,7 +339,7 @@ long ScColumn::GetNeededSize( SCROW nRow, OutputDevice* pDev, // am Dokument speichern ? ScFieldEditEngine* pEngine = pDocument->CreateFieldEditEngine(); - pEngine->SetUpdateMode( FALSE ); + pEngine->SetUpdateMode( false ); MapMode aOld = pDev->GetMapMode(); pDev->SetMapMode( aHMMMode ); pEngine->SetRefDevice( pDev ); @@ -364,7 +364,7 @@ long ScColumn::GetNeededSize( SCROW nRow, OutputDevice* pDev, else if (bBreak) { double fWidthFactor = nPPTX; - BOOL bTextWysiwyg = ( pDev->GetOutDevType() == OUTDEV_PRINTER ); + bool bTextWysiwyg = ( pDev->GetOutDevType() == OUTDEV_PRINTER ); if ( bTextWysiwyg ) { // #95593# if text is formatted for printer, don't use PixelToLogic, @@ -407,22 +407,22 @@ long ScColumn::GetNeededSize( SCROW nRow, OutputDevice* pDev, { Color* pColor; SvNumberFormatter* pFormatter = pDocument->GetFormatTable(); - ULONG nFormat = pPattern->GetNumberFormat( pFormatter, pCondSet ); + sal_uInt32 nFormat = pPattern->GetNumberFormat( pFormatter, pCondSet ); String aString; ScCellFormat::GetString( pCell, nFormat, aString, &pColor, *pFormatter, - TRUE, rOptions.bFormula, ftCheck ); + true, rOptions.bFormula, ftCheck ); if (aString.Len()) pEngine->SetTextNewDefaults(aString, pSet); else pEngine->SetDefaults(pSet); } - BOOL bEngineVertical = pEngine->IsVertical(); + bool bEngineVertical = pEngine->IsVertical(); pEngine->SetVertical( bAsianVertical ); - pEngine->SetUpdateMode( TRUE ); + pEngine->SetUpdateMode( true ); - BOOL bEdWidth = bWidth; + bool bEdWidth = bWidth; if ( eOrient != SVX_ORIENTATION_STANDARD && eOrient != SVX_ORIENTATION_STACKED ) bEdWidth = !bEdWidth; if ( nRotate ) @@ -440,7 +440,7 @@ long ScColumn::GetNeededSize( SCROW nRow, OutputDevice* pDev, else if ( rOptions.bTotalSize ) { nWidth = (long) ( pDocument->GetColWidth( nCol,nTab ) * nPPT ); - bAddMargin = FALSE; + bAddMargin = false; if ( pPattern->GetRotateDir( pCondSet ) == SC_ROTDIR_RIGHT ) nWidth += (long)( pDocument->GetRowHeight( nRow,nTab ) * nPPT * nCosAbs / nSinAbs ); @@ -516,7 +516,7 @@ long ScColumn::GetNeededSize( SCROW nRow, OutputDevice* pDev, // 20 * nZoom/100 // bedingte Formatierung hier nicht interessant - INT16 nFlags = ((const ScMergeFlagAttr&)pPattern->GetItem(ATTR_MERGE_FLAG)).GetValue(); + sal_Int16 nFlags = ((const ScMergeFlagAttr&)pPattern->GetItem(ATTR_MERGE_FLAG)).GetValue(); if (nFlags & SC_MF_AUTO) nValue += (rZoomX.GetNumerator()*20)/rZoomX.GetDenominator(); } @@ -525,7 +525,7 @@ long ScColumn::GetNeededSize( SCROW nRow, OutputDevice* pDev, } long ScColumn::GetSimpleTextNeededSize( SCSIZE nIndex, OutputDevice* pDev, - BOOL bWidth ) + bool bWidth ) { long nValue=0; if ( nIndex < nCount ) @@ -536,9 +536,9 @@ long ScColumn::GetSimpleTextNeededSize( SCSIZE nIndex, OutputDevice* pDev, String aValStr; Color* pColor; SvNumberFormatter* pFormatter = pDocument->GetFormatTable(); - ULONG nFormat = pPattern->GetNumberFormat( pFormatter ); + sal_uInt32 nFormat = pPattern->GetNumberFormat( pFormatter ); ScCellFormat::GetString( pCell, nFormat, aValStr, &pColor, - *pFormatter, TRUE, FALSE, ftCheck ); + *pFormatter, true, false, ftCheck ); if ( aValStr.Len() ) { if ( bWidth ) @@ -550,20 +550,20 @@ long ScColumn::GetSimpleTextNeededSize( SCSIZE nIndex, OutputDevice* pDev, return nValue; } -USHORT ScColumn::GetOptimalColWidth( OutputDevice* pDev, double nPPTX, double nPPTY, +sal_uInt16 ScColumn::GetOptimalColWidth( OutputDevice* pDev, double nPPTX, double nPPTY, const Fraction& rZoomX, const Fraction& rZoomY, - BOOL bFormula, USHORT nOldWidth, + bool bFormula, sal_uInt16 nOldWidth, const ScMarkData* pMarkData, const ScColWidthParam* pParam ) { if (nCount == 0) return nOldWidth; - USHORT nWidth = (USHORT) (nOldWidth * nPPTX); - BOOL bFound = FALSE; + sal_uInt16 nWidth = (sal_uInt16) (nOldWidth * nPPTX); + bool bFound = false; SCSIZE nIndex; - ScMarkedDataIter aDataIter(this, pMarkData, TRUE); + ScMarkedDataIter aDataIter(this, pMarkData, true); if ( pParam && pParam->mbSimpleText ) { // alles eins bis auf NumberFormate const ScPatternAttr* pPattern = GetPattern( 0 ); @@ -577,14 +577,14 @@ USHORT ScColumn::GetOptimalColWidth( OutputDevice* pDev, double nPPTX, double nP // Try to find the row that has the longest string, and measure the width of that string. SvNumberFormatter* pFormatter = pDocument->GetFormatTable(); - ULONG nFormat = pPattern->GetNumberFormat( pFormatter ); + sal_uInt32 nFormat = pPattern->GetNumberFormat( pFormatter ); String aLongStr; Color* pColor; if (pParam->mnMaxTextRow >= 0) { ScBaseCell* pCell = GetCell(pParam->mnMaxTextRow); ScCellFormat::GetString( - pCell, nFormat, aLongStr, &pColor, *pFormatter, TRUE, FALSE, ftCheck ); + pCell, nFormat, aLongStr, &pColor, *pFormatter, true, false, ftCheck ); } else { @@ -598,7 +598,7 @@ USHORT ScColumn::GetOptimalColWidth( OutputDevice* pDev, double nPPTX, double nP ScBaseCell* pCell = pItems[nIndex].pCell; String aValStr; ScCellFormat::GetString( - pCell, nFormat, aValStr, &pColor, *pFormatter, TRUE, FALSE, ftCheck ); + pCell, nFormat, aValStr, &pColor, *pFormatter, true, false, ftCheck ); if (aValStr.Len() > nLongLen) { @@ -610,7 +610,7 @@ USHORT ScColumn::GetOptimalColWidth( OutputDevice* pDev, double nPPTX, double nP if (aLongStr.Len()) { - nWidth = pDev->GetTextWidth(aLongStr) + static_cast<USHORT>(nMargin); + nWidth = pDev->GetTextWidth(aLongStr) + static_cast<sal_uInt16>(nMargin); bFound = true; } } @@ -619,27 +619,27 @@ USHORT ScColumn::GetOptimalColWidth( OutputDevice* pDev, double nPPTX, double nP ScNeededSizeOptions aOptions; aOptions.bFormula = bFormula; const ScPatternAttr* pOldPattern = NULL; - BYTE nOldScript = 0; + sal_uInt8 nOldScript = 0; while (aDataIter.Next( nIndex )) { SCROW nRow = pItems[nIndex].nRow; - BYTE nScript = pDocument->GetScriptType( nCol, nRow, nTab, pItems[nIndex].pCell ); + sal_uInt8 nScript = pDocument->GetScriptType( nCol, nRow, nTab, pItems[nIndex].pCell ); if (nScript == 0) nScript = ScGlobal::GetDefaultScriptType(); const ScPatternAttr* pPattern = GetPattern( nRow ); aOptions.pPattern = pPattern; aOptions.bGetFont = (pPattern != pOldPattern || nScript != nOldScript); - USHORT nThis = (USHORT) GetNeededSize( nRow, pDev, nPPTX, nPPTY, - rZoomX, rZoomY, TRUE, aOptions ); + sal_uInt16 nThis = (sal_uInt16) GetNeededSize( nRow, pDev, nPPTX, nPPTY, + rZoomX, rZoomY, true, aOptions ); pOldPattern = pPattern; if (nThis) { if (nThis>nWidth || !bFound) { nWidth = nThis; - bFound = TRUE; + bFound = true; } } } @@ -648,16 +648,16 @@ USHORT ScColumn::GetOptimalColWidth( OutputDevice* pDev, double nPPTX, double nP if (bFound) { nWidth += 2; - USHORT nTwips = (USHORT) (nWidth / nPPTX); + sal_uInt16 nTwips = (sal_uInt16) (nWidth / nPPTX); return nTwips; } else return nOldWidth; } -USHORT lcl_GetAttribHeight( const ScPatternAttr& rPattern, USHORT nFontHeightId ) +sal_uInt16 lcl_GetAttribHeight( const ScPatternAttr& rPattern, sal_uInt16 nFontHeightId ) { - USHORT nHeight = (USHORT) ((const SvxFontHeightItem&) rPattern.GetItem(nFontHeightId)).GetHeight(); + sal_uInt16 nHeight = (sal_uInt16) ((const SvxFontHeightItem&) rPattern.GetItem(nFontHeightId)).GetHeight(); const SvxMarginItem* pMargin = (const SvxMarginItem*) &rPattern.GetItem(ATTR_MARGIN); nHeight += nHeight / 5; // gibt bei 10pt 240 @@ -672,7 +672,7 @@ USHORT lcl_GetAttribHeight( const ScPatternAttr& rPattern, USHORT nFontHeightId if ( nHeight + 240 > ScGlobal::nDefFontHeight ) { - nHeight = sal::static_int_cast<USHORT>( nHeight + ScGlobal::nDefFontHeight ); + nHeight = sal::static_int_cast<sal_uInt16>( nHeight + ScGlobal::nDefFontHeight ); nHeight -= 240; } @@ -691,11 +691,11 @@ USHORT lcl_GetAttribHeight( const ScPatternAttr& rPattern, USHORT nFontHeightId // nMinHeight, nMinStart zur Optimierung: ab nRow >= nMinStart ist mindestens nMinHeight // (wird nur bei bStdAllowed ausgewertet) -void ScColumn::GetOptimalHeight( SCROW nStartRow, SCROW nEndRow, USHORT* pHeight, +void ScColumn::GetOptimalHeight( SCROW nStartRow, SCROW nEndRow, sal_uInt16* pHeight, OutputDevice* pDev, double nPPTX, double nPPTY, const Fraction& rZoomX, const Fraction& rZoomY, - BOOL bShrink, USHORT nMinHeight, SCROW nMinStart ) + bool bShrink, sal_uInt16 nMinHeight, SCROW nMinStart ) { ScAttrIterator aIter( pAttrArray, nStartRow, nEndRow ); @@ -720,11 +720,11 @@ void ScColumn::GetOptimalHeight( SCROW nStartRow, SCROW nEndRow, USHORT* pHeight else { SCROW nRow = 0; - BOOL bStdAllowed = (pPattern->GetCellOrientation() == SVX_ORIENTATION_STANDARD); - BOOL bStdOnly = FALSE; + bool bStdAllowed = (pPattern->GetCellOrientation() == SVX_ORIENTATION_STANDARD); + bool bStdOnly = false; if (bStdAllowed) { - BOOL bBreak = ((SfxBoolItem&)pPattern->GetItem(ATTR_LINEBREAK)).GetValue() || + bool bBreak = ((SfxBoolItem&)pPattern->GetItem(ATTR_LINEBREAK)).GetValue() || ((SvxCellHorJustify)((const SvxHorJustifyItem&)pPattern-> GetItem( ATTR_HOR_JUSTIFY )).GetValue() == SVX_HOR_JUSTIFY_BLOCK); @@ -733,12 +733,12 @@ void ScColumn::GetOptimalHeight( SCROW nStartRow, SCROW nEndRow, USHORT* pHeight // bedingte Formatierung: Zellen durchgehen if ( bStdOnly && ((const SfxUInt32Item&)pPattern-> GetItem(ATTR_CONDITIONAL)).GetValue() ) - bStdOnly = FALSE; + bStdOnly = false; // gedrehter Text: Zellen durchgehen if ( bStdOnly && ((const SfxInt32Item&)pPattern-> GetItem(ATTR_ROTATE_VALUE)).GetValue() ) - bStdOnly = FALSE; + bStdOnly = false; } if (bStdOnly) @@ -746,11 +746,11 @@ void ScColumn::GetOptimalHeight( SCROW nStartRow, SCROW nEndRow, USHORT* pHeight { if (nEditPos == nStart) { - bStdOnly = FALSE; + bStdOnly = false; if (nEnd > nEditPos) nNextEnd = nEnd; nEnd = nEditPos; // einzeln ausrechnen - bStdAllowed = FALSE; // wird auf jeden Fall per Zelle berechnet + bStdAllowed = false; // wird auf jeden Fall per Zelle berechnet } else { @@ -761,11 +761,11 @@ void ScColumn::GetOptimalHeight( SCROW nStartRow, SCROW nEndRow, USHORT* pHeight if (bStdAllowed) { - USHORT nLatHeight = 0; - USHORT nCjkHeight = 0; - USHORT nCtlHeight = 0; - USHORT nDefHeight; - BYTE nDefScript = ScGlobal::GetDefaultScriptType(); + sal_uInt16 nLatHeight = 0; + sal_uInt16 nCjkHeight = 0; + sal_uInt16 nCtlHeight = 0; + sal_uInt16 nDefHeight; + sal_uInt8 nDefScript = ScGlobal::GetDefaultScriptType(); if ( nDefScript == SCRIPTTYPE_ASIAN ) nDefHeight = nCjkHeight = lcl_GetAttribHeight( *pPattern, ATTR_CJK_FONT_HEIGHT ); else if ( nDefScript == SCRIPTTYPE_COMPLEX ) @@ -792,7 +792,7 @@ void ScColumn::GetOptimalHeight( SCROW nStartRow, SCROW nEndRow, USHORT* pHeight Search(nStart,nIndex); while ( nIndex < nCount && (nRow=pItems[nIndex].nRow) <= nEnd ) { - BYTE nScript = pDocument->GetScriptType( nCol, nRow, nTab, pItems[nIndex].pCell ); + sal_uInt8 nScript = pDocument->GetScriptType( nCol, nRow, nTab, pItems[nIndex].pCell ); if ( nScript != nDefScript ) { if ( nScript == SCRIPTTYPE_ASIAN ) @@ -828,16 +828,16 @@ void ScColumn::GetOptimalHeight( SCROW nStartRow, SCROW nEndRow, USHORT* pHeight SCSIZE nIndex; Search(nStart,nIndex); - while ( (nIndex < nCount) ? ((nRow=pItems[nIndex].nRow) <= nEnd) : FALSE ) + while ( (nIndex < nCount) ? ((nRow=pItems[nIndex].nRow) <= nEnd) : false ) { // Zellhoehe nur berechnen, wenn sie spaeter auch gebraucht wird (#37928#) if ( bShrink || !(pDocument->GetRowFlags(nRow, nTab) & CR_MANUALSIZE) ) { aOptions.pPattern = pPattern; - USHORT nHeight = (USHORT) + sal_uInt16 nHeight = (sal_uInt16) ( GetNeededSize( nRow, pDev, nPPTX, nPPTY, - rZoomX, rZoomY, FALSE, aOptions ) / nPPTY ); + rZoomX, rZoomY, false, aOptions ) / nPPTY ); if (nHeight > pHeight[nRow-nStartRow]) pHeight[nRow-nStartRow] = nHeight; } @@ -857,9 +857,9 @@ void ScColumn::GetOptimalHeight( SCROW nStartRow, SCROW nEndRow, USHORT* pHeight } } -BOOL ScColumn::GetNextSpellingCell(SCROW& nRow, BOOL bInSel, const ScMarkData& rData) const +bool ScColumn::GetNextSpellingCell(SCROW& nRow, bool bInSel, const ScMarkData& rData) const { - BOOL bStop = FALSE; + bool bStop = false; CellType eCellType; SCSIZE nIndex; if (!bInSel && Search(nRow, nIndex)) @@ -868,17 +868,17 @@ BOOL ScColumn::GetNextSpellingCell(SCROW& nRow, BOOL bInSel, const ScMarkData& r if ( (eCellType == CELLTYPE_STRING || eCellType == CELLTYPE_EDIT) && !(HasAttrib( nRow, nRow, HASATTR_PROTECTED) && pDocument->IsTabProtected(nTab)) ) - return TRUE; + return true; } while (!bStop) { if (bInSel) { - nRow = rData.GetNextMarked(nCol, nRow, FALSE); + nRow = rData.GetNextMarked(nCol, nRow, false); if (!ValidRow(nRow)) { nRow = MAXROW+1; - bStop = TRUE; + bStop = true; } else { @@ -886,7 +886,7 @@ BOOL ScColumn::GetNextSpellingCell(SCROW& nRow, BOOL bInSel, const ScMarkData& r if ( (eCellType == CELLTYPE_STRING || eCellType == CELLTYPE_EDIT) && !(HasAttrib( nRow, nRow, HASATTR_PROTECTED) && pDocument->IsTabProtected(nTab)) ) - return TRUE; + return true; else nRow++; } @@ -897,17 +897,17 @@ BOOL ScColumn::GetNextSpellingCell(SCROW& nRow, BOOL bInSel, const ScMarkData& r if ( (eCellType == CELLTYPE_STRING || eCellType == CELLTYPE_EDIT) && !(HasAttrib( nRow, nRow, HASATTR_PROTECTED) && pDocument->IsTabProtected(nTab)) ) - return TRUE; + return true; else nRow++; } else { nRow = MAXROW+1; - bStop = TRUE; + bStop = true; } } - return FALSE; + return false; } // ========================================================================================= @@ -985,8 +985,8 @@ void ScColumn::RemoveEditAttribs( SCROW nStartRow, SCROW nEndRow ) pEngine->SetKernAsianPunctuation( pDocument->GetAsianKerning() ); } pEngine->SetText( *pData ); - USHORT nParCount = pEngine->GetParagraphCount(); - for (USHORT nPar=0; nPar<nParCount; nPar++) + sal_uInt16 nParCount = pEngine->GetParagraphCount(); + for (sal_uInt16 nPar=0; nPar<nParCount; nPar++) { pEngine->QuickRemoveCharAttribs( nPar ); const SfxItemSet& rOld = pEngine->GetParaAttribs( nPar ); @@ -997,16 +997,16 @@ void ScColumn::RemoveEditAttribs( SCROW nStartRow, SCROW nEndRow ) } } // URL-Felder in Text wandeln (andere gibt's nicht, darum pType=0) - pEngine->RemoveFields( TRUE ); + pEngine->RemoveFields( true ); - BOOL bSpellErrors = pEngine->HasOnlineSpellErrors(); - BOOL bNeedObject = bSpellErrors || nParCount>1; // Errors/Absaetze behalten + bool bSpellErrors = pEngine->HasOnlineSpellErrors(); + bool bNeedObject = bSpellErrors || nParCount>1; // Errors/Absaetze behalten // ScEditAttrTester nicht mehr noetig, Felder sind raus if ( bNeedObject ) // bleibt Edit-Zelle { - ULONG nCtrl = pEngine->GetControlWord(); - ULONG nWantBig = bSpellErrors ? EE_CNTRL_ALLOWBIGOBJS : 0; + sal_uInt32 nCtrl = pEngine->GetControlWord(); + sal_uInt32 nWantBig = bSpellErrors ? EE_CNTRL_ALLOWBIGOBJS : 0; if ( ( nCtrl & EE_CNTRL_ALLOWBIGOBJS ) != nWantBig ) pEngine->SetControlWord( (nCtrl & ~EE_CNTRL_ALLOWBIGOBJS) | nWantBig ); EditTextObject* pNewData = pEngine->CreateTextObject(); @@ -1029,14 +1029,14 @@ void ScColumn::RemoveEditAttribs( SCROW nStartRow, SCROW nEndRow ) // ========================================================================================= -BOOL ScColumn::TestTabRefAbs(SCTAB nTable) +bool ScColumn::TestTabRefAbs(SCTAB nTable) { - BOOL bRet = FALSE; + bool bRet = false; if (pItems) for (SCSIZE i = 0; i < nCount; i++) if ( pItems[i].pCell->GetCellType() == CELLTYPE_FORMULA ) if (((ScFormulaCell*)pItems[i].pCell)->TestTabRefAbs(nTable)) - bRet = TRUE; + bRet = true; return bRet; } @@ -1054,7 +1054,7 @@ ScColumnIterator::~ScColumnIterator() { } -BOOL ScColumnIterator::Next( SCROW& rRow, ScBaseCell*& rpCell ) +bool ScColumnIterator::Next( SCROW& rRow, ScBaseCell*& rpCell ) { if ( nPos < pColumn->nCount ) { @@ -1063,13 +1063,13 @@ BOOL ScColumnIterator::Next( SCROW& rRow, ScBaseCell*& rpCell ) { rpCell = pColumn->pItems[nPos].pCell; ++nPos; - return TRUE; + return true; } } rRow = 0; rpCell = NULL; - return FALSE; + return false; } SCSIZE ScColumnIterator::GetIndex() const // Index zur letzen abgefragten Zelle @@ -1080,10 +1080,10 @@ SCSIZE ScColumnIterator::GetIndex() const // Index zur letzen abgefrag // ----------------------------------------------------------------------------------------- ScMarkedDataIter::ScMarkedDataIter( const ScColumn* pCol, const ScMarkData* pMarkData, - BOOL bAllIfNone ) : + bool bAllIfNone ) : pColumn( pCol ), pMarkIter( NULL ), - bNext( TRUE ), + bNext( true ), bAll( bAllIfNone ) { if (pMarkData && pMarkData->IsMultiMarked()) @@ -1095,9 +1095,9 @@ ScMarkedDataIter::~ScMarkedDataIter() delete pMarkIter; } -BOOL ScMarkedDataIter::Next( SCSIZE& rIndex ) +bool ScMarkedDataIter::Next( SCSIZE& rIndex ) { - BOOL bFound = FALSE; + bool bFound = false; do { if (bNext) @@ -1110,48 +1110,48 @@ BOOL ScMarkedDataIter::Next( SCSIZE& rIndex ) nBottom = MAXROW; } else - return FALSE; + return false; } pColumn->Search( nTop, nPos ); - bNext = FALSE; - bAll = FALSE; // nur beim ersten Versuch + bNext = false; + bAll = false; // nur beim ersten Versuch } if ( nPos >= pColumn->nCount ) - return FALSE; + return false; if ( pColumn->pItems[nPos].nRow <= nBottom ) - bFound = TRUE; + bFound = true; else - bNext = TRUE; + bNext = true; } while (!bFound); rIndex = nPos++; - return TRUE; + return true; } //------------ -BOOL ScColumn::IsEmptyData() const +bool ScColumn::IsEmptyData() const { return (nCount == 0); } -BOOL ScColumn::IsEmptyVisData(BOOL bNotes) const +bool ScColumn::IsEmptyVisData(bool bNotes) const { if (!pItems || nCount == 0) - return TRUE; + return true; else { - BOOL bVisData = FALSE; + bool bVisData = false; SCSIZE i; for (i=0; i<nCount && !bVisData; i++) { ScBaseCell* pCell = pItems[i].pCell; if ( pCell->GetCellType() != CELLTYPE_NOTE || (bNotes && pCell->HasNote()) ) - bVisData = TRUE; + bVisData = true; } return !bVisData; } @@ -1176,20 +1176,20 @@ SCSIZE ScColumn::VisibleCount( SCROW nStartRow, SCROW nEndRow ) const return nVisCount; } -SCROW ScColumn::GetLastVisDataPos(BOOL bNotes) const +SCROW ScColumn::GetLastVisDataPos(bool bNotes) const { SCROW nRet = 0; if (pItems) { SCSIZE i; - BOOL bFound = FALSE; + bool bFound = false; for (i=nCount; i>0 && !bFound; ) { --i; ScBaseCell* pCell = pItems[i].pCell; if ( pCell->GetCellType() != CELLTYPE_NOTE || (bNotes && pCell->HasNote()) ) { - bFound = TRUE; + bFound = true; nRet = pItems[i].nRow; } } @@ -1197,19 +1197,19 @@ SCROW ScColumn::GetLastVisDataPos(BOOL bNotes) const return nRet; } -SCROW ScColumn::GetFirstVisDataPos(BOOL bNotes) const +SCROW ScColumn::GetFirstVisDataPos(bool bNotes) const { SCROW nRet = 0; if (pItems) { SCSIZE i; - BOOL bFound = FALSE; + bool bFound = false; for (i=0; i<nCount && !bFound; i++) { ScBaseCell* pCell = pItems[i].pCell; if ( pCell->GetCellType() != CELLTYPE_NOTE || (bNotes && pCell->HasNote()) ) { - bFound = TRUE; + bFound = true; nRet = pItems[i].nRow; } } @@ -1217,53 +1217,53 @@ SCROW ScColumn::GetFirstVisDataPos(BOOL bNotes) const return nRet; } -BOOL ScColumn::HasVisibleDataAt(SCROW nRow) const +bool ScColumn::HasVisibleDataAt(SCROW nRow) const { SCSIZE nIndex; if (Search(nRow, nIndex)) if (!pItems[nIndex].pCell->IsBlank()) - return TRUE; + return true; - return FALSE; + return false; } -BOOL ScColumn::IsEmptyAttr() const +bool ScColumn::IsEmptyAttr() const { if (pAttrArray) return pAttrArray->IsEmpty(); else - return TRUE; + return true; } -BOOL ScColumn::IsEmpty() const +bool ScColumn::IsEmpty() const { return (IsEmptyData() && IsEmptyAttr()); } -BOOL ScColumn::IsEmptyBlock(SCROW nStartRow, SCROW nEndRow, bool bIgnoreNotes) const +bool ScColumn::IsEmptyBlock(SCROW nStartRow, SCROW nEndRow, bool bIgnoreNotes) const { Rectangle aRect; - if (pAttrArray->HasLines(nStartRow, nEndRow, aRect, TRUE, TRUE)) - return FALSE; + if (pAttrArray->HasLines(nStartRow, nEndRow, aRect, true, true)) + return false; if ( nCount == 0 || !pItems ) - return TRUE; + return true; SCSIZE nIndex; Search( nStartRow, nIndex ); while ( nIndex < nCount && pItems[nIndex].nRow <= nEndRow ) { if ( !pItems[nIndex].pCell->IsBlank( bIgnoreNotes ) ) // found a cell - return FALSE; // not empty + return false; // not empty ++nIndex; } - return TRUE; // no cell found + return true; // no cell found } SCSIZE ScColumn::GetEmptyLinesInBlock( SCROW nStartRow, SCROW nEndRow, ScDirection eDir ) const { SCSIZE nLines = 0; - BOOL bFound = FALSE; + bool bFound = false; SCSIZE i; if (pItems && (nCount > 0)) { @@ -1319,9 +1319,9 @@ SCROW ScColumn::GetLastDataPos() const return 0; } -BOOL ScColumn::GetPrevDataPos(SCROW& rRow) const +bool ScColumn::GetPrevDataPos(SCROW& rRow) const { - BOOL bFound = FALSE; + bool bFound = false; SCSIZE i = nCount; while (!bFound && (i > 0)) { @@ -1333,13 +1333,13 @@ BOOL ScColumn::GetPrevDataPos(SCROW& rRow) const return bFound; } -BOOL ScColumn::GetNextDataPos(SCROW& rRow) const // greater than rRow +bool ScColumn::GetNextDataPos(SCROW& rRow) const // greater than rRow { SCSIZE nIndex; if (Search( rRow, nIndex )) ++nIndex; // next cell - BOOL bMore = ( nIndex < nCount ); + bool bMore = ( nIndex < nCount ); if ( bMore ) rRow = pItems[nIndex].nRow; return bMore; @@ -1348,12 +1348,12 @@ BOOL ScColumn::GetNextDataPos(SCROW& rRow) const // greater than rRow void ScColumn::FindDataAreaPos(SCROW& rRow, long nMovY) const { if (!nMovY) return; - BOOL bForward = (nMovY>0); + bool bForward = (nMovY>0); SCSIZE nIndex; - BOOL bThere = Search(rRow, nIndex); + bool bThere = Search(rRow, nIndex); if (bThere && pItems[nIndex].pCell->IsBlank()) - bThere = FALSE; + bThere = false; if (bThere) { @@ -1393,7 +1393,7 @@ void ScColumn::FindDataAreaPos(SCROW& rRow, long nMovY) const } if (nLast==rRow) { - bThere = FALSE; + bThere = false; nIndex = bForward ? nOldIndex+1 : nOldIndex; } else @@ -1423,24 +1423,21 @@ void ScColumn::FindDataAreaPos(SCROW& rRow, long nMovY) const } } -BOOL ScColumn::HasDataAt(SCROW nRow) const +bool ScColumn::HasDataAt(SCROW nRow) const { -/* SCSIZE nIndex; - return Search( nRow, nIndex ); -*/ // immer nur sichtbare interessant ? //! dann HasVisibleDataAt raus SCSIZE nIndex; if (Search(nRow, nIndex)) if (!pItems[nIndex].pCell->IsBlank()) - return TRUE; + return true; - return FALSE; + return false; } -BOOL ScColumn::IsAllAttrEqual( const ScColumn& rCol, SCROW nStartRow, SCROW nEndRow ) const +bool ScColumn::IsAllAttrEqual( const ScColumn& rCol, SCROW nStartRow, SCROW nEndRow ) const { if (pAttrArray && rCol.pAttrArray) return pAttrArray->IsAllEqual( *rCol.pAttrArray, nStartRow, nEndRow ); @@ -1448,7 +1445,7 @@ BOOL ScColumn::IsAllAttrEqual( const ScColumn& rCol, SCROW nStartRow, SCROW nEnd return !pAttrArray && !rCol.pAttrArray; } -BOOL ScColumn::IsVisibleAttrEqual( const ScColumn& rCol, SCROW nStartRow, SCROW nEndRow ) const +bool ScColumn::IsVisibleAttrEqual( const ScColumn& rCol, SCROW nStartRow, SCROW nEndRow ) const { if (pAttrArray && rCol.pAttrArray) return pAttrArray->IsVisibleEqual( *rCol.pAttrArray, nStartRow, nEndRow ); @@ -1456,43 +1453,43 @@ BOOL ScColumn::IsVisibleAttrEqual( const ScColumn& rCol, SCROW nStartRow, SCROW return !pAttrArray && !rCol.pAttrArray; } -BOOL ScColumn::GetFirstVisibleAttr( SCROW& rFirstRow ) const +bool ScColumn::GetFirstVisibleAttr( SCROW& rFirstRow ) const { if (pAttrArray) return pAttrArray->GetFirstVisibleAttr( rFirstRow ); else - return FALSE; + return false; } -BOOL ScColumn::GetLastVisibleAttr( SCROW& rLastRow ) const +bool ScColumn::GetLastVisibleAttr( SCROW& rLastRow ) const { if (pAttrArray) { // row of last cell is needed - SCROW nLastData = GetLastVisDataPos( TRUE ); // always including notes, 0 if none + SCROW nLastData = GetLastVisDataPos( true ); // always including notes, 0 if none return pAttrArray->GetLastVisibleAttr( rLastRow, nLastData ); } else - return FALSE; + return false; } -BOOL ScColumn::HasVisibleAttrIn( SCROW nStartRow, SCROW nEndRow ) const +bool ScColumn::HasVisibleAttrIn( SCROW nStartRow, SCROW nEndRow ) const { if (pAttrArray) return pAttrArray->HasVisibleAttrIn( nStartRow, nEndRow ); else - return FALSE; + return false; } -void ScColumn::FindUsed( SCROW nStartRow, SCROW nEndRow, BOOL* pUsed ) const +void ScColumn::FindUsed( SCROW nStartRow, SCROW nEndRow, bool* pUsed ) const { SCROW nRow = 0; SCSIZE nIndex; Search( nStartRow, nIndex ); - while ( (nIndex < nCount) ? ((nRow=pItems[nIndex].nRow) <= nEndRow) : FALSE ) + while ( (nIndex < nCount) ? ((nRow=pItems[nIndex].nRow) <= nEndRow) : false ) { - pUsed[nRow-nStartRow] = TRUE; + pUsed[nRow-nStartRow] = true; ++nIndex; } } @@ -1575,11 +1572,7 @@ void ScColumn::EndListening( SvtListener& rLst, SCROW nRow ) pCell->DeleteBroadcaster(); } } -// else -// DBG_ERROR("ScColumn::EndListening - kein Broadcaster"); } -// else -// DBG_ERROR("ScColumn::EndListening - keine Zelle"); } void ScColumn::CompileDBFormula() @@ -1593,7 +1586,7 @@ void ScColumn::CompileDBFormula() } } -void ScColumn::CompileDBFormula( BOOL bCreateFormulaString ) +void ScColumn::CompileDBFormula( bool bCreateFormulaString ) { if (pItems) for (SCSIZE i = 0; i < nCount; i++) @@ -1604,7 +1597,7 @@ void ScColumn::CompileDBFormula( BOOL bCreateFormulaString ) } } -void ScColumn::CompileNameFormula( BOOL bCreateFormulaString ) +void ScColumn::CompileNameFormula( bool bCreateFormulaString ) { if (pItems) for (SCSIZE i = 0; i < nCount; i++) @@ -1629,13 +1622,13 @@ void ScColumn::CompileColRowNameFormula() void lcl_UpdateSubTotal( ScFunctionData& rData, ScBaseCell* pCell ) { double nValue = 0.0; - BOOL bVal = FALSE; - BOOL bCell = TRUE; + bool bVal = false; + bool bCell = true; switch (pCell->GetCellType()) { case CELLTYPE_VALUE: nValue = ((ScValueCell*)pCell)->GetValue(); - bVal = TRUE; + bVal = true; break; case CELLTYPE_FORMULA: { @@ -1645,19 +1638,19 @@ void lcl_UpdateSubTotal( ScFunctionData& rData, ScBaseCell* pCell ) if ( pFC->GetErrCode() ) { if ( rData.eFunc != SUBTOTAL_FUNC_CNT ) // fuer Anzahl einfach weglassen - rData.bError = TRUE; + rData.bError = true; } else if (pFC->IsValue()) { nValue = pFC->GetValue(); - bVal = TRUE; + bVal = true; } // sonst Text } } break; case CELLTYPE_NOTE: - bCell = FALSE; + bCell = false; break; // bei Strings nichts default: @@ -1676,7 +1669,7 @@ void lcl_UpdateSubTotal( ScFunctionData& rData, ScBaseCell* pCell ) { ++rData.nCount; if (!SubTotal::SafePlus( rData.nVal, nValue )) - rData.bError = TRUE; + rData.bError = true; } break; case SUBTOTAL_FUNC_CNT: // nur Werte @@ -1709,10 +1702,10 @@ void lcl_UpdateSubTotal( ScFunctionData& rData, ScBaseCell* pCell ) void ScColumn::UpdateSelectionFunction( const ScMarkData& rMark, ScFunctionData& rData, ScFlatBoolRowSegments& rHiddenRows, - BOOL bDoExclude, SCROW nExStartRow, SCROW nExEndRow ) + bool bDoExclude, SCROW nExStartRow, SCROW nExEndRow ) { SCSIZE nIndex; - ScMarkedDataIter aDataIter(this, &rMark, FALSE); + ScMarkedDataIter aDataIter(this, &rMark, false); while (aDataIter.Next( nIndex )) { SCROW nRow = pItems[nIndex].nRow; @@ -1740,9 +1733,9 @@ void ScColumn::UpdateAreaFunction( ScFunctionData& rData, } } -ULONG ScColumn::GetWeightedCount() const +sal_uInt32 ScColumn::GetWeightedCount() const { - ULONG nTotal = 0; + sal_uInt32 nTotal = 0; // Notizen werden nicht gezaehlt @@ -1771,9 +1764,9 @@ ULONG ScColumn::GetWeightedCount() const return nTotal; } -ULONG ScColumn::GetCodeCount() const +sal_uInt32 ScColumn::GetCodeCount() const { - ULONG nCodeCount = 0; + sal_uInt32 nCodeCount = 0; for (SCSIZE i=0; i<nCount; i++) { diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index b34e764a11a7..1a21628bf9ea 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -158,7 +158,7 @@ void ScColumn::Insert( SCROW nRow, ScBaseCell* pNewCell ) } -void ScColumn::Insert( SCROW nRow, ULONG nNumberFormat, ScBaseCell* pCell ) +void ScColumn::Insert( SCROW nRow, sal_uInt32 nNumberFormat, ScBaseCell* pCell ) { Insert(nRow, pCell); short eOldType = pDocument->GetFormatTable()-> @@ -667,7 +667,7 @@ ScFormulaCell* ScColumn::CreateRefCell( ScDocument* pDestDoc, const ScAddress& r // nRow1, nRow2 = Zielposition void ScColumn::CopyFromClip(SCROW nRow1, SCROW nRow2, long nDy, - USHORT nInsFlag, BOOL bAsLink, BOOL bSkipAttrForEmpty, + USHORT nInsFlag, bool bAsLink, bool bSkipAttrForEmpty, ScColumn& rColumn) { if ((nInsFlag & IDF_ATTRIB) != 0) @@ -941,7 +941,7 @@ ScBaseCell* ScColumn::CloneCell(SCSIZE nIndex, USHORT nFlags, ScDocument& rDestD void ScColumn::MixMarked( const ScMarkData& rMark, USHORT nFunction, - BOOL bSkipEmpty, ScColumn& rSrcCol ) + bool bSkipEmpty, ScColumn& rSrcCol ) { SCROW nRow1, nRow2; @@ -999,7 +999,7 @@ void lcl_AddCode( ScTokenArray& rArr, ScFormulaCell* pCell ) void ScColumn::MixData( SCROW nRow1, SCROW nRow2, - USHORT nFunction, BOOL bSkipEmpty, + USHORT nFunction, bool bSkipEmpty, ScColumn& rSrcCol ) { SCSIZE nSrcCount = rSrcCol.nCount; @@ -1262,7 +1262,7 @@ void ScColumn::StartListeningInArea( SCROW nRow1, SCROW nRow2 ) // TRUE = Zahlformat gesetzt -BOOL ScColumn::SetString( SCROW nRow, SCTAB nTabP, const String& rString, +bool ScColumn::SetString( SCROW nRow, SCTAB nTabP, const String& rString, formula::FormulaGrammar::AddressConvention eConv, ScSetStringParam* pParam ) { @@ -1277,7 +1277,6 @@ BOOL ScColumn::SetString( SCROW nRow, SCTAB nTabP, const String& rString, if (pParam) aParam = *pParam; - double nVal; sal_uInt32 nIndex, nOldIndex = 0; sal_Unicode cFirstChar; if (!aParam.mpNumFormatter) @@ -1314,6 +1313,7 @@ BOOL ScColumn::SetString( SCROW nRow, SCTAB nTabP, const String& rString, pNewCell = new ScStringCell( rString.Copy(1) ); else { + double nVal; BOOL bIsText = FALSE; if ( bIsLoading ) { @@ -1578,7 +1578,7 @@ void ScColumn::GetFilterEntries(SCROW nStartRow, SCROW nEndRow, TypedScStrCollec #define DATENT_SEARCH 2000 -BOOL ScColumn::GetDataEntries(SCROW nStartRow, TypedScStrCollection& rStrings, BOOL bLimit) +bool ScColumn::GetDataEntries(SCROW nStartRow, TypedScStrCollection& rStrings, bool bLimit) { BOOL bFound = FALSE; SCSIZE nThisIndex; @@ -1787,7 +1787,7 @@ double ScColumn::GetValue( SCROW nRow ) const } -void ScColumn::GetFormula( SCROW nRow, String& rFormula, BOOL ) const +void ScColumn::GetFormula( SCROW nRow, String& rFormula ) const { SCSIZE nIndex; if (Search(nRow, nIndex)) @@ -1825,7 +1825,7 @@ USHORT ScColumn::GetErrCode( SCROW nRow ) const } -BOOL ScColumn::HasStringData( SCROW nRow ) const +bool ScColumn::HasStringData( SCROW nRow ) const { SCSIZE nIndex; if (Search(nRow, nIndex)) @@ -1834,7 +1834,7 @@ BOOL ScColumn::HasStringData( SCROW nRow ) const } -BOOL ScColumn::HasValueData( SCROW nRow ) const +bool ScColumn::HasValueData( SCROW nRow ) const { SCSIZE nIndex; if (Search(nRow, nIndex)) @@ -1842,7 +1842,7 @@ BOOL ScColumn::HasValueData( SCROW nRow ) const return FALSE; } -BOOL ScColumn::HasStringCells( SCROW nStartRow, SCROW nEndRow ) const +bool ScColumn::HasStringCells( SCROW nStartRow, SCROW nEndRow ) const { // TRUE, wenn String- oder Editzellen im Bereich diff --git a/sc/source/core/data/compressedarray.cxx b/sc/source/core/data/compressedarray.cxx index be541decc632..84af458caf57 100644 --- a/sc/source/core/data/compressedarray.cxx +++ b/sc/source/core/data/compressedarray.cxx @@ -334,35 +334,6 @@ void ScCompressedArray<A,D>::Remove( A nStart, size_t nAccessCount ) pData[nCount-1].nEnd = nMaxAccess; } - -template< typename A, typename D > -A ScCompressedArray<A,D>::GetLastUnequalAccess( A nStart, const D& rCompare ) -{ - A nEnd = ::std::numeric_limits<A>::max(); - size_t nIndex = nCount-1; - while (1) - { - if (pData[nIndex].aValue != rCompare) - { - nEnd = pData[nIndex].nEnd; - break; // while - } - else - { - if (nIndex > 0) - { - --nIndex; - if (pData[nIndex].nEnd < nStart) - break; // while - } - else - break; // while - } - } - return nEnd; -} - - // === ScSummableCompressedArray ============================================= template< typename A, typename D > @@ -497,67 +468,6 @@ void ScBitMaskCompressedArray<A,D>::CopyFromAnded( } } - -template< typename A, typename D > -void ScBitMaskCompressedArray<A,D>::CopyFromOred( - const ScBitMaskCompressedArray<A,D>& rArray, A nStart, A nEnd, - const D& rValueToOr, long nSourceDy ) -{ - size_t nIndex; - A nRegionEnd; - for (A j=nStart; j<=nEnd; ++j) - { - const D& rValue = (j==nStart ? - rArray.GetValue( j+nSourceDy, nIndex, nRegionEnd) : - rArray.GetNextValue( nIndex, nRegionEnd)); - nRegionEnd -= nSourceDy; - if (nRegionEnd > nEnd) - nRegionEnd = nEnd; - SetValue( j, nRegionEnd, rValue | rValueToOr); - j = nRegionEnd; - } -} - - -template< typename A, typename D > -A ScBitMaskCompressedArray<A,D>::GetBitStateStart( A nEnd, - const D& rBitMask, const D& rMaskedCompare ) const -{ - A nStart = ::std::numeric_limits<A>::max(); - size_t nIndex = Search( nEnd); - while ((this->pData[nIndex].aValue & rBitMask) == rMaskedCompare) - { - if (nIndex > 0) - { - --nIndex; - nStart = this->pData[nIndex].nEnd + 1; - } - else - { - nStart = 0; - break; // while - } - } - return nStart; -} - - -template< typename A, typename D > -A ScBitMaskCompressedArray<A,D>::GetBitStateEnd( A nStart, - const D& rBitMask, const D& rMaskedCompare ) const -{ - A nEnd = ::std::numeric_limits<A>::max(); - size_t nIndex = Search( nStart); - while (nIndex < this->nCount && (this->pData[nIndex].aValue & rBitMask) == - rMaskedCompare) - { - nEnd = this->pData[nIndex].nEnd; - ++nIndex; - } - return nEnd; -} - - template< typename A, typename D > A ScBitMaskCompressedArray<A,D>::GetFirstForCondition( A nStart, A nEnd, const D& rBitMask, const D& rMaskedCompare ) const @@ -577,115 +487,6 @@ A ScBitMaskCompressedArray<A,D>::GetFirstForCondition( A nStart, A nEnd, return ::std::numeric_limits<A>::max(); } - -template< typename A, typename D > -A ScBitMaskCompressedArray<A,D>::GetLastForCondition( A nStart, A nEnd, - const D& rBitMask, const D& rMaskedCompare ) const -{ - size_t nIndex = Search( nEnd); - while (1) - { - if ((this->pData[nIndex].aValue & rBitMask) == rMaskedCompare) - return ::std::min( this->pData[nIndex].nEnd, nEnd); - - if (nIndex > 0) - { - --nIndex; - if (this->pData[nIndex].nEnd < nStart) - break; // while - } - else - break; // while - } - return ::std::numeric_limits<A>::max(); -} - - -template< typename A, typename D > -A ScBitMaskCompressedArray<A,D>::CountForCondition( A nStart, A nEnd, - const D& rBitMask, const D& rMaskedCompare ) const -{ - A nRet = 0; - size_t nIndex = Search( nStart); - do - { - if ((this->pData[nIndex].aValue & rBitMask) == rMaskedCompare) - { - A nS = ::std::max( (nIndex>0 ? this->pData[nIndex-1].nEnd+1 : 0), nStart); - A nE = ::std::min( this->pData[nIndex].nEnd, nEnd); - nRet += nE - nS + 1; - } - if (this->pData[nIndex].nEnd >= nEnd) - break; // while - ++nIndex; - } while (nIndex < this->nCount); - return nRet; -} - - -template< typename A, typename D > -size_t ScBitMaskCompressedArray<A,D>::FillArrayForCondition( A nStart, A nEnd, - const D& rBitMask, const D& rMaskedCompare, - A * pArray, size_t nArraySize ) const -{ - size_t nUsed = 0; - size_t nIndex = Search( nStart); - while (nIndex < this->nCount && nUsed < nArraySize) - { - if ((this->pData[nIndex].aValue & rBitMask) == rMaskedCompare) - { - A nS = ::std::max( (nIndex>0 ? this->pData[nIndex-1].nEnd+1 : 0), nStart); - A nE = ::std::min( this->pData[nIndex].nEnd, nEnd); - while (nS <= nE && nUsed < nArraySize) - pArray[nUsed++] = nS++; - } - if (this->pData[nIndex].nEnd >= nEnd) - break; // while - ++nIndex; - } - return nUsed; -} - - -template< typename A, typename D > -bool ScBitMaskCompressedArray<A,D>::HasCondition( A nStart, A nEnd, - const D& rBitMask, const D& rMaskedCompare ) const -{ - size_t nIndex = Search( nStart); - do - { - if ((this->pData[nIndex].aValue & rBitMask) == rMaskedCompare) - return true; - if (this->pData[nIndex].nEnd >= nEnd) - break; // while - ++nIndex; - } while (nIndex < this->nCount); - return false; -} - - -template< typename A, typename D > -A ScBitMaskCompressedArray<A,D>::CountForAnyBitCondition( A nStart, A nEnd, - const D& rBitMask ) const -{ - A nRet = 0; - size_t nIndex = Search( nStart); - do - { - if ((this->pData[nIndex].aValue & rBitMask) != 0) - { - A nS = ::std::max( (nIndex>0 ? this->pData[nIndex-1].nEnd+1 : 0), nStart); - A nE = ::std::min( this->pData[nIndex].nEnd, nEnd); - nRet += nE - nS + 1; - } - if (this->pData[nIndex].nEnd >= nEnd) - break; // while - ++nIndex; - } while (nIndex < this->nCount); - return nRet; -} - - template< typename A, typename D > A ScBitMaskCompressedArray<A,D>::GetLastAnyBitAccess( A nStart, const D& rBitMask ) const diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx index b3852e705e17..c91bad553478 100644 --- a/sc/source/core/data/conditio.cxx +++ b/sc/source/core/data/conditio.cxx @@ -29,8 +29,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sc.hxx" - - //------------------------------------------------------------------ #include "scitems.hxx" @@ -143,7 +141,8 @@ ScConditionEntry::ScConditionEntry( const ScConditionEntry& r ) : pDoc(r.pDoc), bRelRef1(r.bRelRef1), bRelRef2(r.bRelRef2), - bFirstRun(TRUE) + bFirstRun(TRUE), + pCondFormat(r.pCondFormat) { // ScTokenArray copy ctor erzeugt flache Kopie @@ -177,7 +176,8 @@ ScConditionEntry::ScConditionEntry( ScDocument* pDocument, const ScConditionEntr pDoc(pDocument), bRelRef1(r.bRelRef1), bRelRef2(r.bRelRef2), - bFirstRun(TRUE) + bFirstRun(TRUE), + pCondFormat(r.pCondFormat) { // echte Kopie der Formeln (fuer Ref-Undo) @@ -212,7 +212,8 @@ ScConditionEntry::ScConditionEntry( ScConditionMode eOper, pDoc(pDocument), bRelRef1(FALSE), bRelRef2(FALSE), - bFirstRun(TRUE) + bFirstRun(TRUE), + pCondFormat(NULL) { Compile( rExpr1, rExpr2, rExprNmsp1, rExprNmsp2, eGrammar1, eGrammar2, FALSE ); @@ -238,7 +239,8 @@ ScConditionEntry::ScConditionEntry( ScConditionMode eOper, pDoc(pDocument), bRelRef1(FALSE), bRelRef2(FALSE), - bFirstRun(TRUE) + bFirstRun(TRUE), + pCondFormat(NULL) { if ( pArr1 ) { @@ -697,7 +699,88 @@ void ScConditionEntry::Interpret( const ScAddress& rPos ) bFirstRun = FALSE; } -BOOL ScConditionEntry::IsValid( double nArg ) const +static BOOL lcl_GetCellContent( ScBaseCell* pCell, BOOL bIsStr1, double& rArg, String& rArgStr ) +{ + BOOL bVal = TRUE; + + if ( pCell ) + { + CellType eType = pCell->GetCellType(); + switch( eType ) + { + case CELLTYPE_VALUE: + rArg = ((ScValueCell*)pCell)->GetValue(); + break; + case CELLTYPE_FORMULA: + { + ScFormulaCell* pFCell = (ScFormulaCell*)pCell; + bVal = pFCell->IsValue(); + if (bVal) + rArg = pFCell->GetValue(); + else + pFCell->GetString(rArgStr); + } + break; + case CELLTYPE_STRING: + case CELLTYPE_EDIT: + bVal = FALSE; + if ( eType == CELLTYPE_STRING ) + ((ScStringCell*)pCell)->GetString(rArgStr); + else + ((ScEditCell*)pCell)->GetString(rArgStr); + break; + + default: + pCell = NULL; // Note-Zellen wie leere + break; + } + } + + if( !pCell ) + if( bIsStr1 ) + bVal = FALSE; // leere Zellen je nach Bedingung + + return bVal; +} + +static BOOL lcl_IsDuplicate( ScDocument *pDoc, double nArg, const String& rStr, const ScAddress& rAddr, const ScRangeListRef& rRanges ) +{ + size_t nListCount = rRanges->size(); + for( size_t i = 0; i < nListCount; i++ ) + { + const ScRange *aRange = (*rRanges)[i]; + SCROW nRow = aRange->aEnd.Row(); + SCCOL nCol = aRange->aEnd.Col(); + for( SCROW r = aRange->aStart.Row(); r <= nRow; r++ ) + for( SCCOL c = aRange->aStart.Col(); c <= nCol; c++ ) + { + double nVal = 0.0; + ScBaseCell *pCell = NULL; + String aStr; + + if( c == rAddr.Col() && r == rAddr.Row() ) + continue; + pDoc->GetCell( c, r, rAddr.Tab(), pCell ); + if( !pCell ) + continue; + + if( !lcl_GetCellContent( pCell, FALSE, nVal, aStr ) ) + { + if( rStr.Len() && + ( ScGlobal::GetCollator()->compareString( rStr, aStr ) == COMPARE_EQUAL ) ) + return TRUE; + } + else + { + if( !rStr.Len() && ::rtl::math::approxEqual( nArg, nVal ) ) + return TRUE; + } + } + } + return FALSE; +} + +BOOL ScConditionEntry::IsValid( double nArg, const ScAddress& rAddr ) const { // Interpret muss schon gerufen sein @@ -755,6 +838,16 @@ BOOL ScConditionEntry::IsValid( double nArg ) const bValid = ( nArg < nComp1 || nArg > nComp2 ) && !::rtl::math::approxEqual( nArg, nComp1 ) && !::rtl::math::approxEqual( nArg, nComp2 ); break; + case SC_COND_DUPLICATE: + case SC_COND_NOTDUPLICATE: + if( pCondFormat ) + { + ScRangeListRef pRanges = pCondFormat->GetRangeInfo(); + bValid = lcl_IsDuplicate( pDoc, nArg, String(), rAddr, pRanges ); + if( eOp == SC_COND_NOTDUPLICATE ) + bValid = !bValid; + } + break; case SC_COND_DIRECT: bValid = !::rtl::math::approxEqual( nComp1, 0.0 ); break; @@ -765,13 +858,26 @@ BOOL ScConditionEntry::IsValid( double nArg ) const return bValid; } -BOOL ScConditionEntry::IsValidStr( const String& rArg ) const +BOOL ScConditionEntry::IsValidStr( const String& rArg, const ScAddress& rAddr ) const { + BOOL bValid = FALSE; // Interpret muss schon gerufen sein if ( eOp == SC_COND_DIRECT ) // Formel ist unabhaengig vom Inhalt return !::rtl::math::approxEqual( nVal1, 0.0 ); + if ( eOp == SC_COND_DUPLICATE || eOp == SC_COND_NOTDUPLICATE ) + { + if( pCondFormat && rArg.Len() ) + { + ScRangeListRef pRanges = pCondFormat->GetRangeInfo(); + bValid = lcl_IsDuplicate( pDoc, 0.0, rArg, rAddr, pRanges ); + if( eOp == SC_COND_NOTDUPLICATE ) + bValid = !bValid; + return bValid; + } + } + // Wenn Bedingung Zahl enthaelt, immer FALSE, ausser bei "ungleich" if ( !bIsStr1 ) @@ -791,7 +897,6 @@ BOOL ScConditionEntry::IsValidStr( const String& rArg ) const String aTemp( aUpVal1 ); aUpVal1 = aUpVal2; aUpVal2 = aTemp; } - BOOL bValid; switch ( eOp ) { case SC_COND_EQUAL: @@ -846,49 +951,11 @@ BOOL ScConditionEntry::IsCellValid( ScBaseCell* pCell, const ScAddress& rPos ) c double nArg = 0.0; String aArgStr; - BOOL bVal = TRUE; - - if ( pCell ) - { - CellType eType = pCell->GetCellType(); - switch (eType) - { - case CELLTYPE_VALUE: - nArg = ((ScValueCell*)pCell)->GetValue(); - break; - case CELLTYPE_FORMULA: - { - ScFormulaCell* pFCell = (ScFormulaCell*)pCell; - bVal = pFCell->IsValue(); - if (bVal) - nArg = pFCell->GetValue(); - else - pFCell->GetString(aArgStr); - } - break; - case CELLTYPE_STRING: - case CELLTYPE_EDIT: - bVal = FALSE; - if ( eType == CELLTYPE_STRING ) - ((ScStringCell*)pCell)->GetString(aArgStr); - else - ((ScEditCell*)pCell)->GetString(aArgStr); - break; - - default: - pCell = NULL; // Note-Zellen wie leere - break; - } - } - - if (!pCell) - if (bIsStr1) - bVal = FALSE; // leere Zellen je nach Bedingung - + BOOL bVal = lcl_GetCellContent( pCell, bIsStr1, nArg, aArgStr ); if (bVal) - return IsValid( nArg ); + return IsValid( nArg, rPos ); else - return IsValidStr( aArgStr ); + return IsValidStr( aArgStr, rPos ); } String ScConditionEntry::GetExpression( const ScAddress& rCursor, USHORT nIndex, @@ -1143,8 +1210,7 @@ ScCondFormatEntry::ScCondFormatEntry( ScConditionMode eOper, FormulaGrammar::Grammar eGrammar1, FormulaGrammar::Grammar eGrammar2 ) : ScConditionEntry( eOper, rExpr1, rExpr2, pDocument, rPos, rExprNmsp1, rExprNmsp2, eGrammar1, eGrammar2 ), - aStyleName( rStyle ), - pParent( NULL ) + aStyleName( rStyle ) { } @@ -1153,22 +1219,19 @@ ScCondFormatEntry::ScCondFormatEntry( ScConditionMode eOper, ScDocument* pDocument, const ScAddress& rPos, const String& rStyle ) : ScConditionEntry( eOper, pArr1, pArr2, pDocument, rPos ), - aStyleName( rStyle ), - pParent( NULL ) + aStyleName( rStyle ) { } ScCondFormatEntry::ScCondFormatEntry( const ScCondFormatEntry& r ) : ScConditionEntry( r ), - aStyleName( r.aStyleName ), - pParent( NULL ) + aStyleName( r.aStyleName ) { } ScCondFormatEntry::ScCondFormatEntry( ScDocument* pDocument, const ScCondFormatEntry& r ) : ScConditionEntry( pDocument, r ), - aStyleName( r.aStyleName ), - pParent( NULL ) + aStyleName( r.aStyleName ) { } @@ -1186,8 +1249,8 @@ ScCondFormatEntry::~ScCondFormatEntry() void ScCondFormatEntry::DataChanged( const ScRange* pModified ) const { - if ( pParent ) - pParent->DoRepaint( pModified ); + if ( pCondFormat ) + pCondFormat->DoRepaint( pModified ); } //------------------------------------------------------------------------ @@ -1197,7 +1260,8 @@ ScConditionalFormat::ScConditionalFormat(sal_uInt32 nNewKey, ScDocument* pDocume pAreas( NULL ), nKey( nNewKey ), ppEntries( NULL ), - nEntryCount( 0 ) + nEntryCount( 0 ), + pRanges( NULL ) { } @@ -1217,6 +1281,7 @@ ScConditionalFormat::ScConditionalFormat(const ScConditionalFormat& r) : ppEntries[i]->SetParent(this); } } + pRanges = new ScRangeList( *r.pRanges ); } ScConditionalFormat* ScConditionalFormat::Clone(ScDocument* pNewDoc) const @@ -1239,6 +1304,7 @@ ScConditionalFormat* ScConditionalFormat::Clone(ScDocument* pNewDoc) const } pNew->nEntryCount = nEntryCount; } + pNew->AddRangeInfo( pRanges ); return pNew; } @@ -1254,9 +1320,19 @@ BOOL ScConditionalFormat::EqualEntries( const ScConditionalFormat& r ) const if ( ! (*ppEntries[i] == *r.ppEntries[i]) ) return FALSE; + if( *pRanges != *r.pRanges ) + return FALSE; + return TRUE; } +void ScConditionalFormat::AddRangeInfo( const ScRangeListRef& rRanges ) +{ + if( !rRanges.Is() ) + return; + pRanges = new ScRangeList( *rRanges ); +} + void ScConditionalFormat::AddEntry( const ScCondFormatEntry& rNew ) { ScCondFormatEntry** ppNew = new ScCondFormatEntry*[nEntryCount+1]; @@ -1356,7 +1432,6 @@ BOOL lcl_CutRange( ScRange& rRange, const ScRange& rOther ) void ScConditionalFormat::DoRepaint( const ScRange* pModified ) { - USHORT i; SfxObjectShell* pSh = pDoc->GetDocumentShell(); if (pSh) { @@ -1371,10 +1446,9 @@ void ScConditionalFormat::DoRepaint( const ScRange* pModified ) pAreas = new ScRangeList; pDoc->FindConditionalFormat( nKey, *pAreas ); } - USHORT nCount = (USHORT) pAreas->Count(); - for (i=0; i<nCount; i++) + for (size_t i = 0, nCount = pAreas->size(); i < nCount; i++ ) { - ScRange aRange = *pAreas->GetObject(i); + ScRange aRange = *(*pAreas)[i]; BOOL bDo = TRUE; if ( pModified ) { diff --git a/sc/source/core/data/dbdocutl.cxx b/sc/source/core/data/dbdocutl.cxx index 2bd9b6755776..7e0f8b7ebb82 100644 --- a/sc/source/core/data/dbdocutl.cxx +++ b/sc/source/core/data/dbdocutl.cxx @@ -56,7 +56,6 @@ ScDatabaseDocUtil::StrData::StrData() : // ---------------------------------------------------------------------------- -// static void ScDatabaseDocUtil::PutData( ScDocument* pDoc, SCCOL nCol, SCROW nRow, SCTAB nTab, const uno::Reference<sdbc::XRow>& xRow, long nRowPos, long nType, BOOL bCurrency, StrData* pStrData ) diff --git a/sc/source/core/data/dociter.cxx b/sc/source/core/data/dociter.cxx index c9df5606f20f..7368af85f7bf 100644 --- a/sc/source/core/data/dociter.cxx +++ b/sc/source/core/data/dociter.cxx @@ -439,7 +439,6 @@ BOOL ScValueIterator::GetFirst(double& rValue, USHORT& rErr) nRow = nStartRow; nTab = nStartTab; -// nColRow = 0; ScColumn* pCol = &(pDoc->pTab[nTab])->aCol[nCol]; pCol->Search( nRow, nColRow ); @@ -450,14 +449,6 @@ BOOL ScValueIterator::GetFirst(double& rValue, USHORT& rErr) return GetThis(rValue, rErr); } -/* ist inline: -BOOL ScValueIterator::GetNext(double& rValue, USHORT& rErr) -{ - ++nRow; - return GetThis(rValue, rErr); -} -*/ - // ============================================================================ ScDBQueryDataIterator::DataAccess::DataAccess(const ScDBQueryDataIterator* pParent) : @@ -625,7 +616,6 @@ bool ScDBQueryDataIterator::DataAccessInternal::getCurrent(Value& rValue) nRow = mpParam->nRow2 + 1; // Naechste Spalte } // statement unreachable -// return false; } bool ScDBQueryDataIterator::DataAccessInternal::getFirst(Value& rValue) @@ -1060,7 +1050,6 @@ ScBaseCell* ScCellIterator::GetFirst() nCol = nStartCol; nRow = nStartRow; nTab = nStartTab; -// nColRow = 0; ScColumn* pCol = &(pDoc->pTab[nTab])->aCol[nCol]; pCol->Search( nRow, nColRow ); return GetThis(); @@ -1169,7 +1158,7 @@ ScBaseCell* ScQueryCellIterator::GetThis() if ( nTestEqualCondition && bTestEqualCondition ) { nTestEqualCondition |= nTestEqualConditionMatched; - nStopOnMismatch |= nStopOnMismatchOccured; + nStopOnMismatch |= nStopOnMismatchOccurred; return NULL; } bool bStop; @@ -1187,7 +1176,7 @@ ScBaseCell* ScQueryCellIterator::GetThis() bStop = true; if (bStop) { - nStopOnMismatch |= nStopOnMismatchOccured; + nStopOnMismatch |= nStopOnMismatchOccurred; return NULL; } } @@ -1207,7 +1196,6 @@ ScBaseCell* ScQueryCellIterator::GetFirst() nRow = aParam.nRow1; if (aParam.bHasHeader) nRow++; -// nColRow = 0; ScColumn* pCol = &(pDoc->pTab[nTab])->aCol[nCol]; pCol->Search( nRow, nColRow ); return GetThis(); @@ -1888,8 +1876,6 @@ const ScPatternAttr* ScHorizontalAttrIterator::GetNext( SCCOL& rCol1, SCCOL& rCo bRowEmpty = bEmpty; nCol = nStartCol; // wieder links anfangen } - -// return NULL; } //------------------------------------------------------------------------------- diff --git a/sc/source/core/data/docpool.cxx b/sc/source/core/data/docpool.cxx index 08e275f46833..9e862ffe6d17 100644 --- a/sc/source/core/data/docpool.cxx +++ b/sc/source/core/data/docpool.cxx @@ -29,8 +29,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sc.hxx" - - #include "scitems.hxx" #include <tools/shl.hxx> #include <vcl/outdev.hxx> @@ -77,7 +75,6 @@ #include "globstr.hrc" #include "sc.hrc" // Slot-IDs - #define SC_MAX_POOLREF (SFX_ITEMS_OLD_MAXREF - 39) #define SC_SAFE_POOLREF (SC_MAX_POOLREF + 20) @@ -97,7 +94,7 @@ USHORT* ScDocumentPool::pVersionMap11 = 0; // ATTR_FONT_TWOLINES (not used) was changed to ATTR_USERDEF (not saved in binary format) in 641c -static SfxItemInfo __READONLY_DATA aItemInfos[] = +static SfxItemInfo const aItemInfos[] = { { SID_ATTR_CHAR_FONT, SFX_ITEM_POOLABLE }, // ATTR_FONT { SID_ATTR_CHAR_FONTHEIGHT, SFX_ITEM_POOLABLE }, // ATTR_FONT_HEIGHT @@ -340,7 +337,6 @@ ScDocumentPool::ScDocumentPool( SfxItemPool* pSecPool, BOOL bLoadRefCounts ) ppPoolDefaults[ ATTR_PAGE_FORMULAS - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_PAGE_FORMULAS, FALSE ); ppPoolDefaults[ ATTR_PAGE_NULLVALS - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_PAGE_NULLVALS, TRUE ); ppPoolDefaults[ ATTR_PAGE_SCALETO - ATTR_STARTINDEX ] = new ScPageScaleToItem( 1, 1 ); -// ppPoolDefaults[ ATTR_ITEM_DOUBLE - ATTR_STARTINDEX ] = new ScDoubleItem( ATTR_ITEM_DOUBLE, 0 ); SetDefaults( ppPoolDefaults ); @@ -384,7 +380,7 @@ ScDocumentPool::ScDocumentPool( SfxItemPool* pSecPool, BOOL bLoadRefCounts ) SetVersionMap( 11, 100, 187, pVersionMap11 ); } -__EXPORT ScDocumentPool::~ScDocumentPool() +ScDocumentPool::~ScDocumentPool() { Delete(); @@ -601,7 +597,7 @@ void ScDocumentPool::DeleteVersionMaps() // wird (Assertions). // -const SfxPoolItem& __EXPORT ScDocumentPool::Put( const SfxPoolItem& rItem, USHORT nWhich ) +const SfxPoolItem& ScDocumentPool::Put( const SfxPoolItem& rItem, USHORT nWhich ) { if ( rItem.Which() != ATTR_PATTERN ) // nur Pattern ist special return SfxItemPool::Put( rItem, nWhich ); @@ -616,7 +612,7 @@ const SfxPoolItem& __EXPORT ScDocumentPool::Put( const SfxPoolItem& rItem, USHOR return rNew; } -void __EXPORT ScDocumentPool::Remove( const SfxPoolItem& rItem ) +void ScDocumentPool::Remove( const SfxPoolItem& rItem ) { if ( rItem.Which() == ATTR_PATTERN ) // nur Pattern ist special { @@ -634,7 +630,7 @@ void __EXPORT ScDocumentPool::Remove( const SfxPoolItem& rItem ) SfxItemPool::Remove( rItem ); } -void ScDocumentPool::CheckRef( const SfxPoolItem& rItem ) // static +void ScDocumentPool::CheckRef( const SfxPoolItem& rItem ) { ULONG nRef = rItem.GetRefCount(); if ( nRef >= (ULONG) SC_MAX_POOLREF && nRef <= (ULONG) SFX_ITEMS_OLD_MAXREF ) @@ -680,7 +676,7 @@ void ScDocumentPool::CellStyleCreated( const String& rName ) } } -SfxItemPool* __EXPORT ScDocumentPool::Clone() const +SfxItemPool* ScDocumentPool::Clone() const { return new SfxItemPool (*this, TRUE); } @@ -788,7 +784,7 @@ SfxItemPresentation lcl_HFPresentation return ePresentation; } -SfxItemPresentation __EXPORT ScDocumentPool::GetPresentation( +SfxItemPresentation ScDocumentPool::GetPresentation( const SfxPoolItem& rItem, SfxItemPresentation ePresentation, SfxMapUnit ePresentationMetric, @@ -1024,24 +1020,6 @@ SfxItemPresentation __EXPORT ScDocumentPool::GetPresentation( } break; -/* - case ATTR_PAGE_HEADERLEFT: - rText = "SID_SCATTR_PAGE_HEADERLEFT"; - break; - - case ATTR_PAGE_FOOTERLEFT: - rText = "SID_SCATTR_PAGE_FOOTERLEFT"; - break; - - case ATTR_PAGE_HEADERRIGHT: - rText = "SID_SCATTR_PAGE_HEADERRIGHT"; - break; - - case ATTR_PAGE_FOOTERRIGHT: - rText = "SID_SCATTR_PAGE_FOOTERRIGHT"; - break; -*/ - default: if ( !pIntl ) pIntl = ScGlobal::GetScIntlWrapper(); @@ -1052,7 +1030,7 @@ SfxItemPresentation __EXPORT ScDocumentPool::GetPresentation( return ePresentation; } -SfxMapUnit __EXPORT ScDocumentPool::GetMetric( USHORT nWhich ) const +SfxMapUnit ScDocumentPool::GetMetric( USHORT nWhich ) const { // eigene Attribute: Twips, alles andere 1/100 mm @@ -1062,8 +1040,4 @@ SfxMapUnit __EXPORT ScDocumentPool::GetMetric( USHORT nWhich ) const return SFX_MAPUNIT_100TH_MM; } - - - - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx index adb9cf49ed0a..96c9544ff8ba 100644 --- a/sc/source/core/data/documen2.cxx +++ b/sc/source/core/data/documen2.cxx @@ -170,6 +170,7 @@ ScDocument::ScDocument( ScDocumentMode eMode, nUnoObjectId( 0 ), nRangeOverflowType( 0 ), aCurTextWidthCalcPos(MAXCOL,0,0), + aTableOpList( 0 ), nFormulaCodeInTree(0), nXMLImportedFormulaCount( 0 ), nInterpretLevel(0), @@ -190,7 +191,6 @@ ScDocument::ScDocument( ScDocumentMode eMode, bIsUndo( eMode == SCDOCMODE_UNDO ), bIsVisible( FALSE ), bIsEmbedded( FALSE ), -// bNoSetDirty( TRUE ), bNoSetDirty( FALSE ), bInsertingFromOtherDoc( FALSE ), bLoadingMedium( false ), @@ -883,10 +883,7 @@ BOOL ScDocument::CopyTab( SCTAB nOldPos, SCTAB nNewPos, const ScMarkData* pOnlyM pTab[nNewPos]->SetTabBgColor(pTab[nOldPos]->GetTabBgColor()); SCsTAB nDz; -/* if (nNewPos < nOldPos) - nDz = ((short)nNewPos) - (short)nOldPos + 1; - else -*/ nDz = ((short)nNewPos) - (short)nOldPos; + nDz = ((short)nNewPos) - (short)nOldPos; pTab[nNewPos]->UpdateReference(URM_COPY, 0, 0, nNewPos , MAXCOL, MAXROW, nNewPos, 0, 0, nDz, NULL); @@ -1027,7 +1024,6 @@ ULONG ScDocument::TransferTab( ScDocument* pSrcDoc, SCTAB nSrcPos, else { pSrcRangeNames[i] = NULL; - //aSrcRangeMap.SetPair( i, 0, 0 ); // not needed, defaulted } } if ( bRangeNameReplace ) @@ -1223,7 +1219,6 @@ void ScDocument::DisposeFieldEditEngine(ScFieldEditEngine*& rpEditEngine) // ---------------------------------------------------------------------------- -// static ScRecursionHelper* ScDocument::CreateRecursionHelperInstance() { return new ScRecursionHelper; diff --git a/sc/source/core/data/documen3.cxx b/sc/source/core/data/documen3.cxx index cb022714fe93..4f657369f53c 100644 --- a/sc/source/core/data/documen3.cxx +++ b/sc/source/core/data/documen3.cxx @@ -77,11 +77,8 @@ #include "drwlayer.hxx" #include "unoreflist.hxx" #include "listenercalls.hxx" -// Wang Xu Ming -- 2009-8-17 -// DataPilot Migration - Cache&&Performance #include "dpshttab.hxx" #include "dptablecache.hxx" -// End Comments #include "tabprotection.hxx" #include "formulaparserpool.hxx" #include "clipparam.hxx" @@ -262,10 +259,6 @@ void ScDocument::SetScenario( SCTAB nTab, BOOL bFlag ) BOOL ScDocument::IsScenario( SCTAB nTab ) const { return ValidTab(nTab) && pTab[nTab] &&pTab[nTab]->IsScenario(); - //if (ValidTab(nTab) && pTab[nTab]) - // return pTab[nTab]->IsScenario(); - - //return FALSE; } void ScDocument::SetScenarioData( SCTAB nTab, const String& rComment, @@ -477,9 +470,9 @@ void ScDocument::MarkUsedExternalReferences() if (!pExternalRefMgr->hasExternalData()) return; // Charts. - bool bAllMarked = pExternalRefMgr->markUsedByLinkListeners(); + pExternalRefMgr->markUsedByLinkListeners(); // Formula cells. - bAllMarked = pExternalRefMgr->markUsedExternalRefCells(); + pExternalRefMgr->markUsedExternalRefCells(); /* NOTE: Conditional formats and validation objects are marked when * collecting them during export. */ @@ -580,11 +573,6 @@ ScOutlineTable* ScDocument::GetOutlineTable( SCTAB nTab, BOOL bCreate ) BOOL ScDocument::SetOutlineTable( SCTAB nTab, const ScOutlineTable* pNewOutline ) { return VALIDTAB(nTab) && pTab[nTab] && pTab[nTab]->SetOutlineTable(pNewOutline); - //if (VALIDTAB(nTab)) - // if (pTab[nTab]) - // return pTab[nTab]->SetOutlineTable(pNewOutline); - - //return FALSE; } void ScDocument::DoAutoOutline( SCCOL nStartCol, SCROW nStartRow, @@ -597,10 +585,6 @@ void ScDocument::DoAutoOutline( SCCOL nStartCol, SCROW nStartRow, BOOL ScDocument::TestRemoveSubTotals( SCTAB nTab, const ScSubTotalParam& rParam ) { return VALIDTAB(nTab) && pTab[nTab] && pTab[nTab]->TestRemoveSubTotals( rParam ); - //if (VALIDTAB(nTab) && pTab[nTab] ) - // return pTab[nTab]->TestRemoveSubTotals( rParam ); - - //return FALSE; } void ScDocument::RemoveSubTotals( SCTAB nTab, ScSubTotalParam& rParam ) @@ -612,11 +596,6 @@ void ScDocument::RemoveSubTotals( SCTAB nTab, ScSubTotalParam& rParam ) BOOL ScDocument::DoSubTotals( SCTAB nTab, ScSubTotalParam& rParam ) { return VALIDTAB(nTab) && pTab[nTab] && pTab[nTab]->DoSubTotals( rParam ); - //if (VALIDTAB(nTab)) - // if (pTab[nTab]) - // return pTab[nTab]->DoSubTotals( rParam ); - - //return FALSE; } BOOL ScDocument::HasSubTotalCells( const ScRange& rRange ) @@ -652,7 +631,6 @@ void ScDocument::CopyScenario( SCTAB nSrcTab, SCTAB nDestTab, BOOL bNewScenario // und aktuelle Werte in bisher aktive Szenarios zurueckschreiben ScRangeList aRanges = *pTab[nSrcTab]->GetScenarioRanges(); - const ULONG nRangeCount = aRanges.Count(); // nDestTab ist die Zieltabelle for ( SCTAB nTab = nDestTab+1; @@ -662,9 +640,9 @@ void ScDocument::CopyScenario( SCTAB nSrcTab, SCTAB nDestTab, BOOL bNewScenario if ( pTab[nTab]->IsActiveScenario() ) // auch wenn's dasselbe Szenario ist { BOOL bTouched = FALSE; - for ( ULONG nR=0; nR<nRangeCount && !bTouched; nR++) + for ( size_t nR=0, nRangeCount = aRanges.size(); nR < nRangeCount && !bTouched; nR++ ) { - const ScRange* pRange = aRanges.GetObject(nR); + const ScRange* pRange = aRanges[ nR ]; if ( pTab[nTab]->HasScenarioRange( *pRange ) ) bTouched = TRUE; } @@ -704,10 +682,6 @@ void ScDocument::MarkScenario( SCTAB nSrcTab, SCTAB nDestTab, ScMarkData& rDestM BOOL ScDocument::HasScenarioRange( SCTAB nTab, const ScRange& rRange ) const { return ValidTab(nTab) && pTab[nTab] && pTab[nTab]->HasScenarioRange( rRange ); - //if (ValidTab(nTab) && pTab[nTab]) - // return pTab[nTab]->HasScenarioRange( rRange ); - - //return FALSE; } const ScRangeList* ScDocument::GetScenarioRanges( SCTAB nTab ) const @@ -721,10 +695,6 @@ const ScRangeList* ScDocument::GetScenarioRanges( SCTAB nTab ) const BOOL ScDocument::IsActiveScenario( SCTAB nTab ) const { return ValidTab(nTab) && pTab[nTab] && pTab[nTab]->IsActiveScenario( ); - //if (ValidTab(nTab) && pTab[nTab]) - // return pTab[nTab]->IsActiveScenario(); - - //return FALSE; } void ScDocument::SetActiveScenario( SCTAB nTab, BOOL bActive ) @@ -948,8 +918,8 @@ void ScDocument::UpdateTranspose( const ScAddress& rDestPos, ScDocument* pClipDo ScRange aSource; ScClipParam& rClipParam = GetClipParam(); - if (rClipParam.maRanges.Count()) - aSource = *rClipParam.maRanges.First(); + if (!rClipParam.maRanges.empty()) + aSource = *rClipParam.maRanges.front(); ScAddress aDest = rDestPos; SCTAB nClipTab = 0; @@ -1032,7 +1002,6 @@ void ScDocument::GetAutoFormatData(SCTAB nTab, SCCOL nStartCol, SCROW nStartRow, } } -// static void ScDocument::GetSearchAndReplaceStart( const SvxSearchItem& rSearchItem, SCCOL& rCol, SCROW& rRow ) { @@ -1309,22 +1278,12 @@ BOOL ScDocument::HasColHeader( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCTAB nTab ) { return VALIDTAB(nTab) && pTab[nTab] && pTab[nTab]->HasColHeader( nStartCol, nStartRow, nEndCol, nEndRow ); - //if (VALIDTAB(nTab)) - // if (pTab[nTab]) - // return pTab[nTab]->HasColHeader( nStartCol, nStartRow, nEndCol, nEndRow ); - - //return FALSE; } BOOL ScDocument::HasRowHeader( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, SCTAB nTab ) { return VALIDTAB(nTab) && pTab[nTab] && pTab[nTab]->HasRowHeader( nStartCol, nStartRow, nEndCol, nEndRow ); - //if (VALIDTAB(nTab)) - // if (pTab[nTab]) - // return pTab[nTab]->HasRowHeader( nStartCol, nStartRow, nEndCol, nEndRow ); - - //return FALSE; } void ScDocument::UpdateDynamicEndRow(ScDBData& rDBData) const @@ -1435,10 +1394,6 @@ BOOL ScDocument::GetDataEntries( SCCOL nCol, SCROW nRow, SCTAB nTab, } return ValidTab(nTab) && pTab[nTab] && pTab[nTab]->GetDataEntries( nCol, nRow, rStrings, bLimit ); - //if (ValidTab(nTab) && pTab[nTab]) - // return pTab[nTab]->GetDataEntries( nCol, nRow, rStrings, bLimit ); - - //return FALSE; } // @@ -1452,16 +1407,14 @@ BOOL ScDocument::GetDataEntries( SCCOL nCol, SCROW nRow, SCTAB nTab, BOOL ScDocument::GetFormulaEntries( TypedScStrCollection& rStrings ) { - USHORT i; - // // Bereichsnamen // if ( pRangeName ) { - USHORT nRangeCount = pRangeName->GetCount(); - for ( i=0; i<nRangeCount; i++ ) + sal_uInt16 nRangeCount = pRangeName->GetCount(); + for ( sal_uInt16 i = 0; i < nRangeCount; i++ ) { ScRangeData* pData = (*pRangeName)[i]; if (pData) @@ -1479,8 +1432,8 @@ BOOL ScDocument::GetFormulaEntries( TypedScStrCollection& rStrings ) if ( pDBCollection ) { - USHORT nDBCount = pDBCollection->GetCount(); - for ( i=0; i<nDBCount; i++ ) + sal_uInt16 nDBCount = pDBCollection->GetCount(); + for ( sal_uInt16 i=0; i<nDBCount; i++ ) { ScDBData* pData = (*pDBCollection)[i]; if (pData) @@ -1501,10 +1454,11 @@ BOOL ScDocument::GetFormulaEntries( TypedScStrCollection& rStrings ) pLists[1] = GetRowNameRanges(); for (USHORT nListNo=0; nListNo<2; nListNo++) { - ScRangePairList* pList = pLists[nListNo]; + ScRangePairList* pList = pLists[ nListNo ]; if (pList) - for ( ScRangePair* pPair = pList->First(); pPair; pPair = pList->Next() ) + for ( size_t i = 0, nPairs = pList->size(); i < nPairs; ++i ) { + ScRangePair* pPair = (*pList)[i]; ScRange aRange = pPair->GetRange(0); ScCellIterator aIter( this, aRange ); for ( ScBaseCell* pCell = aIter.GetFirst(); pCell; pCell = aIter.GetNext() ) @@ -1621,7 +1575,7 @@ bool lcl_AddTwipsWhile( long & rTwips, long nStopTwips, SCROW & rPosY, SCROW nEn return bAdded; } -ScRange ScDocument::GetRange( SCTAB nTab, const Rectangle& rMMRect ) +ScRange ScDocument::GetRange( SCTAB nTab, const Rectangle& rMMRect ) const { ScTable* pTable = pTab[nTab]; if (!pTable) @@ -1921,8 +1875,7 @@ void ScDocument::SetDrawDefaults() UpdateDrawDefaults(); } -Rectangle ScDocument::GetMMRect( SCCOL nStartCol, SCROW nStartRow, - SCCOL nEndCol, SCROW nEndRow, SCTAB nTab ) +Rectangle ScDocument::GetMMRect( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, SCTAB nTab ) const { if (!ValidTab(nTab) || !pTab[nTab]) { @@ -2044,121 +1997,4 @@ void ScDocument::DecSizeRecalcLevel( SCTAB nTab, bool bUpdateNoteCaptionPos ) pTab[nTab]->DecRecalcLevel( bUpdateNoteCaptionPos ); } -// Wang Xu Ming -- 2009-8-17 -// DataPilot Migration - Cache&&Performance -ScDPTableDataCache* ScDocument::GetDPObjectCache( long nID ) -{ - for ( std::list<ScDPTableDataCache*>::iterator iter = m_listDPObjectsCaches.begin(); iter!=m_listDPObjectsCaches.end(); iter++ ) - { // - if ( nID == (*iter)->GetId() ) - return *iter; - } - return NULL; -} - -ScDPTableDataCache* ScDocument::GetUsedDPObjectCache ( ScRange rRange ) -{ - ScDPTableDataCache* pCache = NULL; - USHORT nCount = GetDPCollection()->GetCount(); - for ( short i=nCount-1; i>=0 ; i--) - { - if ( const ScSheetSourceDesc* pUsedSheetDesc = (*pDPCollection)[i]->GetSheetDesc() ) - if ( rRange == pUsedSheetDesc->aSourceRange ) - { - long nID = (*pDPCollection)[i]->GetCacheId(); - if ( nID >= 0 ) - pCache= GetDPObjectCache( nID ); - if ( pCache ) - return pCache; - } - } - return pCache; -} - -long ScDocument::AddDPObjectCache( ScDPTableDataCache* pData ) -{ - if ( pData->GetId() < 0 ) - { //create a id for it - pData->SetId( GetNewDPObjectCacheId() ); - } - m_listDPObjectsCaches.push_back( pData ); - return pData->GetId(); -} - -long ScDocument::GetNewDPObjectCacheId() -{ - long nID = 0; - - bool bFound = false; - std::list<ScDPTableDataCache*>::iterator iter; - do { - for ( iter = m_listDPObjectsCaches.begin(); iter!=m_listDPObjectsCaches.end(); iter++ ) - { //Get a new Id - if ( nID == (*iter)->GetId() ) - { - nID++; - bFound = true; - break; - } - } - if ( iter == m_listDPObjectsCaches.end() ) - bFound = false; - } while ( bFound ); - - return nID; -} - -void ScDocument::RemoveDPObjectCache( long nID ) -{ - for ( std::list<ScDPTableDataCache*>::iterator iter = m_listDPObjectsCaches.begin(); iter!=m_listDPObjectsCaches.end(); iter++ ) - { - if ( nID == (*iter)->GetId() ) - { - ScDPTableDataCache* pCache = *iter; - m_listDPObjectsCaches.erase( iter ); - delete pCache; - break; - } - } - -} - -void ScDocument::RemoveUnusedDPObjectCaches() -{ - for ( std::list<ScDPTableDataCache*>::iterator iter = m_listDPObjectsCaches.begin(); iter!=m_listDPObjectsCaches.end(); iter++ ) - { - long nID = (*iter)->GetId(); - USHORT nCount = GetDPCollection()->GetCount(); - USHORT i ; - for ( i=0; i<nCount; i++) - { - if ( nID == (*pDPCollection)[i]->GetCacheId() ) - break; - } - if ( i == nCount ) - { - ScDPTableDataCache* pCache = *iter; - m_listDPObjectsCaches.erase( iter ); - delete pCache; - continue; - } - } -} - -void ScDocument::GetUsedDPObjectCache( std::list<ScDPTableDataCache*>& usedlist ) -{ - for ( std::list<ScDPTableDataCache*>::iterator iter = m_listDPObjectsCaches.begin(); iter!=m_listDPObjectsCaches.end(); iter++ ) - { - long nID = (*iter)->GetId(); - USHORT nCount = GetDPCollection()->GetCount(); - USHORT i=0; - for ( i=0; i<nCount; i++) - if ( nID == (*pDPCollection)[i]->GetCacheId() ) - break; - if ( i != nCount ) - usedlist.push_back( *iter ); - } -} -// End Comments - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/data/documen5.cxx b/sc/source/core/data/documen5.cxx index 2732a6e3251f..4a6136fa2e3c 100644 --- a/sc/source/core/data/documen5.cxx +++ b/sc/source/core/data/documen5.cxx @@ -49,11 +49,6 @@ #include <svx/svdoole2.hxx> #include <svx/svdpage.hxx> -//REMOVE #ifndef SO2_DECL_SVINPLACEOBJECT_DEFINED -//REMOVE #define SO2_DECL_SVINPLACEOBJECT_DEFINED -//REMOVE SO2_DECL_REF(SvInPlaceObject) -//REMOVE #endif - #include "document.hxx" #include "drwlayer.hxx" #include "chartarr.hxx" @@ -113,16 +108,16 @@ void lcl_SetChartParameters( const uno::Reference< chart2::data::XDataReceiver > { uno::Sequence< beans::PropertyValue > aArgs( 4 ); aArgs[0] = beans::PropertyValue( - ::rtl::OUString::createFromAscii("CellRangeRepresentation"), -1, + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CellRangeRepresentation")), -1, uno::makeAny( rRanges ), beans::PropertyState_DIRECT_VALUE ); aArgs[1] = beans::PropertyValue( - ::rtl::OUString::createFromAscii("HasCategories"), -1, + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HasCategories")), -1, uno::makeAny( bHasCategories ), beans::PropertyState_DIRECT_VALUE ); aArgs[2] = beans::PropertyValue( - ::rtl::OUString::createFromAscii("FirstCellAsLabel"), -1, + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FirstCellAsLabel")), -1, uno::makeAny( bFirstCellAsLabel ), beans::PropertyState_DIRECT_VALUE ); aArgs[3] = beans::PropertyValue( - ::rtl::OUString::createFromAscii("DataRowSource"), -1, + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DataRowSource")), -1, uno::makeAny( eDataRowSource ), beans::PropertyState_DIRECT_VALUE ); xReceiver->setArguments( aArgs ); } @@ -238,7 +233,7 @@ BOOL ScDocument::HasChartAtPoint( SCTAB nTab, const Point& rPos, String* pName ) if (pName) pName->Erase(); - return FALSE; // nix gefunden + return FALSE; // nothing found } void ScDocument::UpdateChartArea( const String& rChartName, @@ -401,9 +396,8 @@ void ScDocument::UpdateChartArea( const String& rChartName, aNewRanges = new ScRangeList; aNewRanges->Parse( aRangesStr, this ); - ULONG nAddCount = rNewList->Count(); - for ( ULONG nAdd=0; nAdd<nAddCount; nAdd++ ) - aNewRanges->Append( *rNewList->GetObject(nAdd) ); + for ( size_t nAdd = 0, nAddCount = rNewList->size(); nAdd < nAddCount; ++nAdd ) + aNewRanges->Append( *(*rNewList)[nAdd] ); } else { @@ -439,10 +433,7 @@ void ScDocument::UpdateChartArea( const String& rChartName, pChartListenerCollection->ChangeListening( rChartName, aNewRanges ); - // ((SdrOle2Obj*)pObject)->GetNewReplacement(); - // pObject->ActionChanged(); - - return; // nicht weitersuchen + return; // do not search anymore } } pObject = aIter.Next(); @@ -521,8 +512,9 @@ void ScDocument::UpdateChartRef( UpdateRefMode eUpdateRefMode, ScRangeListRef aNewRLR( new ScRangeList ); BOOL bChanged = FALSE; BOOL bDataChanged = FALSE; - for ( ScRangePtr pR = aRLR->First(); pR; pR = aRLR->Next() ) + for ( size_t i = 0, nListSize = aRLR->size(); i < nListSize; ++i ) { + ScRange* pR = (*aRLR)[i]; SCCOL theCol1 = pR->aStart.Col(); SCROW theRow1 = pR->aStart.Row(); SCTAB theTab1 = pR->aStart.Tab(); @@ -560,9 +552,6 @@ void ScDocument::UpdateChartRef( UpdateRefMode eUpdateRefMode, if ( bChanged ) { { -// SetChartRangeList( pChartListener->GetString(), aNewRLR ); -// pChartListener->ChangeListening( aNewRLR, bDataChanged ); - // Force the chart to be loaded now, so it registers itself for UNO events. // UNO broadcasts are done after UpdateChartRef, so the chart will get this // reference change. @@ -688,7 +677,7 @@ void ScDocument::UpdateChartListenerCollection() else { ScRange aRange; - // Range fuer Suche unwichtig + // Range for searching is not important ScChartListener aCLSearcher( EMPTY_STRING, this, aRange ); for (SCTAB nTab=0; nTab<=MAXTAB; nTab++) { @@ -737,20 +726,13 @@ void ScDocument::UpdateChartListenerCollection() // unable to set the data. So a chart from the // same document is treated like a chart with // own data for the time being. -#if 0 + // data provider - uno::Reference< chart2::data::XDataProvider > xDataProvider = new - ScChart2DataProvider( this ); - xReceiver->attachDataProvider( xDataProvider ); // number formats supplier - uno::Reference< util::XNumberFormatsSupplier > xNumberFormatsSupplier( pShell->GetModel(), uno::UNO_QUERY ); - xReceiver->attachNumberFormatsSupplier( xNumberFormatsSupplier ); + // data ? // how to set?? Defined in XML-file, which is already loaded!!! // => we have to do this stuff here, BEFORE the chart is actually loaded - - bIsChart = true; -#endif } if (!bIsChart) @@ -783,5 +765,4 @@ void ScDocument::AddOLEObjectToCollection(const String& rName) } - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/data/documen6.cxx b/sc/source/core/data/documen6.cxx index de0105cb63af..9c19661dad8f 100644 --- a/sc/source/core/data/documen6.cxx +++ b/sc/source/core/data/documen6.cxx @@ -63,7 +63,7 @@ const uno::Reference< i18n::XBreakIterator >& ScDocument::GetBreakIterator() if ( !pScriptTypeData->xBreakIter.is() ) { uno::Reference< uno::XInterface > xInterface = xServiceManager->createInstance( - ::rtl::OUString::createFromAscii( SC_BREAKITER_SERVICE ) ); + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_BREAKITER_SERVICE )) ); pScriptTypeData->xBreakIter = uno::Reference< i18n::XBreakIterator >( xInterface, uno::UNO_QUERY ); DBG_ASSERT( pScriptTypeData->xBreakIter.is(), "can't get BreakIterator" ); } @@ -182,5 +182,4 @@ BYTE ScDocument::GetScriptType( SCCOL nCol, SCROW nRow, SCTAB nTab, ScBaseCell* return GetCellScriptType( pCell, nFormat ); } - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/data/documen8.cxx b/sc/source/core/data/documen8.cxx index 8b9d6714246b..6c85aa634fdf 100644 --- a/sc/source/core/data/documen8.cxx +++ b/sc/source/core/data/documen8.cxx @@ -207,9 +207,6 @@ VirtualDevice* ScDocument::GetVirtualDevice_100th_mm() { if (!pVirtualDevice_100th_mm) { -// pVirtualDevice_100th_mm = new VirtualDevice; -// pVirtualDevice_100th_mm->SetMapMode( MAP_100TH_MM ); - pVirtualDevice_100th_mm = new VirtualDevice( 1 ); pVirtualDevice_100th_mm->SetReferenceDevice(VirtualDevice::REFDEV_MODE_MSO1); MapMode aMapMode( pVirtualDevice_100th_mm->GetMapMode() ); @@ -457,12 +454,7 @@ BOOL ScDocument::IdleCalcTextWidth() // TRUE = demnaechst wieder vers return FALSE; bIdleDisabled = TRUE; -// ULONG nMs = 0; -// USHORT nIter = 0; - const ULONG nStart = Time::GetSystemTicks(); - double nPPTX = 0.0; - double nPPTY = 0.0; OutputDevice* pDev = NULL; MapMode aOldMap; ScStyleSheet* pStyle = NULL; @@ -473,8 +465,6 @@ BOOL ScDocument::IdleCalcTextWidth() // TRUE = demnaechst wieder vers SCTAB nTab = aCurTextWidthCalcPos.Tab(); SCROW nRow = aCurTextWidthCalcPos.Row(); SCsCOL nCol = aCurTextWidthCalcPos.Col(); - USHORT nRestart = 0; - USHORT nZoom = 0; BOOL bNeedMore= FALSE; if ( !ValidRow(nRow) ) @@ -484,8 +474,6 @@ BOOL ScDocument::IdleCalcTextWidth() // TRUE = demnaechst wieder vers if ( !ValidTab(nTab) || !pTab[nTab] ) nTab = 0; -// DBG_ERROR( String("Start = ") + String(nTab) + String(',') + String(nCol) + String(',') + String(nRow) ); - // SearchMask/Family muss gemerkt werden, // damit z.B. der Organizer nicht durcheinanderkommt, wenn zwischendurch eine // Query-Box aufgemacht wird !!! @@ -504,6 +492,8 @@ BOOL ScDocument::IdleCalcTextWidth() // TRUE = demnaechst wieder vers BOOL bProgress = FALSE; if ( pStyle && 0 == GET_SCALEVALUE(pStyle->GetItemSet(),ATTR_PAGE_SCALETOPAGES) ) { + USHORT nRestart = 0; + USHORT nZoom = 0; USHORT nCount = 0; nZoom = GET_SCALEVALUE(pStyle->GetItemSet(),ATTR_PAGE_SCALE); @@ -517,6 +507,8 @@ BOOL ScDocument::IdleCalcTextWidth() // TRUE = demnaechst wieder vers { if ( TEXTWIDTH_DIRTY == pCell->GetTextWidth() ) { + double nPPTX = 0.0; + double nPPTY = 0.0; if ( !pDev ) { pDev = GetPrinter(); @@ -534,16 +526,11 @@ BOOL ScDocument::IdleCalcTextWidth() // TRUE = demnaechst wieder vers bProgress = TRUE; } -// DBG_ERROR( String("t,c,r = ") + String(nTab) + String(',') + String(nCol) + String(',') + String(nRow) ); -// DBG_ERROR( String("nOldWidth = ") + String(pCell->GetTextWidth()) ); - USHORT nNewWidth = (USHORT)GetNeededSize( nCol, nRow, nTab, pDev, nPPTX, nPPTY, aZoomFract,aZoomFract, TRUE, TRUE ); // bTotalSize -// DBG_ERROR( String("nNewWidth = ") + String(nNewWidth) ); - pCell->SetTextWidth( nNewWidth ); bNeedMore = TRUE; @@ -604,15 +591,12 @@ BOOL ScDocument::IdleCalcTextWidth() // TRUE = demnaechst wieder vers } } -// nIter = nCount; - nCount++; // Idle Berechnung abbrechen, wenn Berechnungen laenger als // 50ms dauern, oder nach 32 Berechnungen mal nachschauen, ob // bestimmte Events anstehen, die Beachtung wuenschen: -// nMs = SysTicksToMs( GetSysTicks() - nStart ); if ( ( 50L < Time::GetSystemTicks() - nStart ) || ( !(nCount&31) && Application::AnyInput( ABORT_EVENTS ) ) ) @@ -627,8 +611,6 @@ BOOL ScDocument::IdleCalcTextWidth() // TRUE = demnaechst wieder vers delete pColIter; -// DBG_ERROR( String(nCount) + String(" End = ") + String(nTab) + String(',') + String(nCol) + String(',') + String(nRow) ); - if (pDev) pDev->SetMapMode(aOldMap); @@ -636,8 +618,6 @@ BOOL ScDocument::IdleCalcTextWidth() // TRUE = demnaechst wieder vers aCurTextWidthCalcPos.SetRow( nRow ); aCurTextWidthCalcPos.SetCol( (SCCOL)nCol ); -// DBG_ERROR( String(nMs) + String(" ms (") + String(nIter) + String(')') ); - pStylePool->SetSearchMask( eOldFam, nOldMask ); bIdleDisabled = FALSE; @@ -1286,7 +1266,7 @@ const ScMatrix* ScDocument::GetDdeLinkResultMatrix( USHORT nDdePos ) const return pDdeLink ? pDdeLink->GetResult() : NULL; } -bool ScDocument::CreateDdeLink( const String& rAppl, const String& rTopic, const String& rItem, BYTE nMode, ScMatrix* pResults ) +bool ScDocument::CreateDdeLink( const String& rAppl, const String& rTopic, const String& rItem, BYTE nMode, ScMatrixRef pResults ) { /* Create a DDE link without updating it (i.e. for Excel import), to prevent unwanted connections. First try to find existing link. Set result array @@ -1312,7 +1292,7 @@ bool ScDocument::CreateDdeLink( const String& rAppl, const String& rTopic, const return false; } -bool ScDocument::SetDdeLinkResultMatrix( USHORT nDdePos, ScMatrix* pResults ) +bool ScDocument::SetDdeLinkResultMatrix( USHORT nDdePos, ScMatrixRef pResults ) { if( ScDdeLink* pDdeLink = lclGetDdeLink( GetLinkManager(), nDdePos ) ) { diff --git a/sc/source/core/data/documen9.cxx b/sc/source/core/data/documen9.cxx index 528db06b79e0..d9008af0347b 100644 --- a/sc/source/core/data/documen9.cxx +++ b/sc/source/core/data/documen9.cxx @@ -139,8 +139,6 @@ void ScDocument::InitDrawLayer( SfxObjectShell* pDocShell ) if (pDocShell && !pShell) pShell = pDocShell; -// DBG_ASSERT(pShell,"InitDrawLayer ohne Shell"); - if (!pDrawLayer) { String aName; @@ -215,9 +213,6 @@ void ScDocument::UpdateDrawPrinter() { // use the printer even if IsValid is false // Application::GetDefaultDevice causes trouble with changing MapModes - -// OutputDevice* pRefDev = GetPrinter(); -// pRefDev->SetMapMode( MAP_100TH_MM ); pDrawLayer->SetRefDevice(GetRefDevice()); } } @@ -538,8 +533,6 @@ void ScDocument::Clear( sal_Bool bFromDestructor ) if (pDrawLayer) { - // #116168# - //pDrawLayer->Clear(); pDrawLayer->ClearModel( bFromDestructor ); } } @@ -594,7 +587,6 @@ void ScDocument::InvalidateControls( Window* pWin, SCTAB nTab, const Rectangle& // auf ClippingRegions. Darum muss das ganze Objekt neu gepainted // werden, damit die Selektion auf der Tabelle nicht uebermalt wird. - //pWin->Invalidate( aObjRect.GetIntersection( rMMRect ) ); pWin->Invalidate( aObjRect ); } } diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index e9363978b1cb..b8f517019654 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -105,6 +105,18 @@ using ::com::sun::star::uno::Sequence; using ::com::sun::star::sheet::TablePageBreakData; using ::std::set; +// The constant parameters to CopyBlockFromClip +struct ScCopyBlockFromClipParams +{ + ScDocument* pRefUndoDoc; + ScDocument* pClipDoc; + USHORT nInsFlag; + SCTAB nTabStart; + SCTAB nTabEnd; + BOOL bAsLink; + BOOL bSkipAttrForEmpty; +}; + struct ScDefaultAttr { const ScPatternAttr* pAttr; @@ -161,7 +173,7 @@ BOOL ScDocument::GetName( SCTAB nTab, String& rName ) const return FALSE; } -BOOL ScDocument::SetCodeName( SCTAB nTab, String& rName ) +BOOL ScDocument::SetCodeName( SCTAB nTab, const String& rName ) { if (VALIDTAB(nTab)) { @@ -214,7 +226,7 @@ BOOL ScDocument::GetTable( const String& rName, SCTAB& rTab ) const } -BOOL ScDocument::ValidTabName( const String& rName ) const +bool ScDocument::ValidTabName( const String& rName ) { xub_StrLen nLen = rName.Len(); if (!nLen) @@ -740,10 +752,9 @@ void ScDocument::LimitChartIfAll( ScRangeListRef& rRangeList ) ScRangeListRef aNew = new ScRangeList; if (rRangeList.Is()) { - ULONG nCount = rRangeList->Count(); - for (ULONG i=0; i<nCount; i++) + for ( size_t i = 0, nCount = rRangeList->size(); i < nCount; i++ ) { - ScRange aRange(*rRangeList->GetObject( i )); + ScRange aRange( *(*rRangeList)[i] ); if ( ( aRange.aStart.Col() == 0 && aRange.aEnd.Col() == MAXCOL ) || ( aRange.aStart.Row() == 0 && aRange.aEnd.Row() == MAXROW ) ) { @@ -1896,9 +1907,9 @@ void ScDocument::UpdateRangeNamesInFormulas( rRangeNames.mpRangeNames[i]->ReplaceRangeNamesInUse(rRangeNames.maRangeMap); } // then update the formulas, they might need just the updated range names - for (ULONG nRange = 0; nRange < rDestRanges.Count(); ++nRange) + for ( size_t nRange = 0, n = rDestRanges.size(); nRange < n; ++nRange ) { - const ScRange* pRange = rDestRanges.GetObject( nRange); + const ScRange* pRange = rDestRanges[nRange]; SCCOL nCol1 = pRange->aStart.Col(); SCROW nRow1 = pRange->aStart.Row(); SCCOL nCol2 = pRange->aEnd.Col(); @@ -1984,7 +1995,6 @@ void ScDocument::BroadcastFromClip( SCCOL nCol1, SCROW nRow1, } } - void ScDocument::CopyBlockFromClip( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, const ScMarkData& rMark, @@ -2086,8 +2096,8 @@ void ScDocument::CopyNonFilteredFromClip( SCCOL nCol1, SCROW nRow1, SCROW nSourceRow = rClipStartRow; SCROW nSourceEnd = 0; - if (pCBFCP->pClipDoc->GetClipParam().maRanges.Count()) - nSourceEnd = pCBFCP->pClipDoc->GetClipParam().maRanges.First()->aEnd.Row(); + if ( !pCBFCP->pClipDoc->GetClipParam().maRanges.empty() ) + nSourceEnd = pCBFCP->pClipDoc->GetClipParam().maRanges.front()->aEnd.Row(); SCROW nDestRow = nRow1; while ( nSourceRow <= nSourceEnd && nDestRow <= nRow2 ) @@ -2228,11 +2238,10 @@ void ScDocument::CopyFromClip( const ScRange& rDestRange, const ScMarkData& rMar SCCOL nClipStartCol = aClipRange.aStart.Col(); SCROW nClipStartRow = aClipRange.aStart.Row(); - // WaE: commented because unused: SCCOL nClipEndCol = pClipDoc->aClipRange.aEnd.Col(); SCROW nClipEndRow = aClipRange.aEnd.Row(); - for (ULONG nRange = 0; nRange < pDestRanges->Count(); ++nRange) + for ( size_t nRange = 0; nRange < pDestRanges->size(); ++nRange ) { - const ScRange* pRange = pDestRanges->GetObject( nRange); + const ScRange* pRange = (*pDestRanges)[nRange]; SCCOL nCol1 = pRange->aStart.Col(); SCROW nRow1 = pRange->aStart.Row(); SCCOL nCol2 = pRange->aEnd.Col(); @@ -2273,9 +2282,6 @@ void ScDocument::CopyFromClip( const ScRange& rDestRange, const ScMarkData& rMar CopyNonFilteredFromClip( nC1, nR1, nC2, nR2, rMark, nDx, nDy, &aCBFCP, nClipStartRow ); } - // Not needed for columns, but if it was this would be how to. - //if (nClipStartCol > nClipEndCol) - // nClipStartCol = pClipDoc->aClipRange.aStart.Col(); nC1 = nC2 + 1; nC2 = Min((SCCOL)(nC1 + nXw), nCol2); } while (nC1 <= nCol2); @@ -2379,8 +2385,9 @@ void ScDocument::CopyMultiRangeFromClip( sal_uInt16 nDelFlag = IDF_CONTENTS; const ScBitMaskCompressedArray<SCROW, BYTE>& rFlags = GetRowFlagsArray(aCBFCP.nTabStart); - for (ScRange* p = rClipParam.maRanges.First(); p; p = rClipParam.maRanges.Next()) + for ( size_t i = 0, n = rClipParam.maRanges.size(); i < n; ++i ) { + ScRange* p = rClipParam.maRanges[ i ]; // The begin row must not be filtered. SCROW nRowCount = p->aEnd.Row() - p->aStart.Row() + 1; @@ -2476,17 +2483,18 @@ void ScDocument::GetClipArea(SCCOL& nClipX, SCROW& nClipY, BOOL bIncludeFiltered } ScRangeList& rClipRanges = GetClipParam().maRanges; - if (!rClipRanges.Count()) + if (rClipRanges.empty()) // No clip range. Bail out. return; - ScRangePtr p = rClipRanges.First(); + ScRange* p = rClipRanges.front(); SCCOL nStartCol = p->aStart.Col(); SCCOL nEndCol = p->aEnd.Col(); SCROW nStartRow = p->aStart.Row(); SCROW nEndRow = p->aEnd.Row(); - for (p = rClipRanges.Next(); p; p = rClipRanges.Next()) + for ( size_t i = 1, n = rClipRanges.size(); i < n; ++i ) { + p = rClipRanges[ i ]; if (p->aStart.Col() < nStartCol) nStartCol = p->aStart.Col(); if (p->aStart.Row() < nStartRow) @@ -2524,10 +2532,10 @@ void ScDocument::GetClipStart(SCCOL& nClipX, SCROW& nClipY) if (bIsClip) { ScRangeList& rClipRanges = GetClipParam().maRanges; - if (rClipRanges.Count()) + if ( !rClipRanges.empty() ) { - nClipX = rClipRanges.First()->aStart.Col(); - nClipY = rClipRanges.First()->aStart.Row(); + nClipX = rClipRanges.front()->aStart.Col(); + nClipY = rClipRanges.front()->aStart.Row(); } } else @@ -2545,11 +2553,12 @@ BOOL ScDocument::HasClipFilteredRows() ++nCountTab; ScRangeList& rClipRanges = GetClipParam().maRanges; - if (!rClipRanges.Count()) + if ( rClipRanges.empty() ) return false; - for (ScRange* p = rClipRanges.First(); p; p = rClipRanges.Next()) + for ( size_t i = 0, n = rClipRanges.size(); i < n; ++i ) { + ScRange* p = rClipRanges[ i ]; bool bAnswer = pTab[nCountTab]->HasFilteredRows(p->aStart.Row(), p->aEnd.Row()); if (bAnswer) return true; @@ -2849,11 +2858,10 @@ void ScDocument::GetNumberFormatInfo( short& nType, ULONG& nIndex, } -void ScDocument::GetFormula( SCCOL nCol, SCROW nRow, SCTAB nTab, String& rFormula, - BOOL bAsciiExport ) const +void ScDocument::GetFormula( SCCOL nCol, SCROW nRow, SCTAB nTab, String& rFormula ) const { if ( VALIDTAB(nTab) && pTab[nTab] ) - pTab[nTab]->GetFormula( nCol, nRow, rFormula, bAsciiExport ); + pTab[nTab]->GetFormula( nCol, nRow, rFormula ); else rFormula.Erase(); } @@ -3053,10 +3061,9 @@ void ScDocument::SetTableOpDirty( const ScRange& rRange ) void ScDocument::InterpretDirtyCells( const ScRangeList& rRanges ) { - ULONG nRangeCount = rRanges.Count(); - for (ULONG nPos=0; nPos<nRangeCount; nPos++) + for (size_t nPos=0, nRangeCount = rRanges.size(); nPos < nRangeCount; nPos++) { - ScCellIterator aIter( this, *rRanges.GetObject(nPos) ); + ScCellIterator aIter( this, *rRanges[ nPos ] ); ScBaseCell* pCell = aIter.GetFirst(); while (pCell) { @@ -3073,17 +3080,20 @@ void ScDocument::InterpretDirtyCells( const ScRangeList& rRanges ) void ScDocument::AddTableOpFormulaCell( ScFormulaCell* pCell ) { - ScInterpreterTableOpParams* p = aTableOpList.Last(); - if ( p && p->bCollectNotifications ) + if ( !aTableOpList.empty() ) { - if ( p->bRefresh ) - { // refresh pointers only - p->aNotifiedFormulaCells.push_back( pCell ); - } - else - { // init both, address and pointer - p->aNotifiedFormulaCells.push_back( pCell ); - p->aNotifiedFormulaPos.push_back( pCell->aPos ); + ScInterpreterTableOpParams* p = &aTableOpList.back(); + if ( p->bCollectNotifications ) + { + if ( p->bRefresh ) + { // refresh pointers only + p->aNotifiedFormulaCells.push_back( pCell ); + } + else + { // init both, address and pointer + p->aNotifiedFormulaCells.push_back( pCell ); + p->aNotifiedFormulaPos.push_back( pCell->aPos ); + } } } } @@ -3876,7 +3886,7 @@ BOOL ScDocument::GetColDefault( SCTAB nTab, SCCOL nCol, SCROW nLastRow, SCROW& n } ScDefaultAttrSet::iterator aDefaultItr = aSet.begin(); aItr = aDefaultItr; - aItr++; + ++aItr; while (aItr != aSet.end()) { // for entries with equal count, use the one with the lowest start row, @@ -3884,7 +3894,7 @@ BOOL ScDocument::GetColDefault( SCTAB nTab, SCCOL nCol, SCROW nLastRow, SCROW& n if ( aItr->nCount > aDefaultItr->nCount || ( aItr->nCount == aDefaultItr->nCount && aItr->nFirst < aDefaultItr->nFirst ) ) aDefaultItr = aItr; - aItr++; + ++aItr; } nDefault = aDefaultItr->nFirst; bRet = TRUE; @@ -4900,14 +4910,14 @@ void ScDocument::ApplySelectionFrame( const ScMarkData& rMark, { ScRangeList aRangeList; rMark.FillRangeListWithMarks( &aRangeList, FALSE ); - ULONG nRangeCount = aRangeList.Count(); + size_t nRangeCount = aRangeList.size(); for (SCTAB i=0; i<=MAXTAB; i++) { if (pTab[i] && rMark.GetTableSelect(i)) { - for (ULONG j=0; j<nRangeCount; j++) + for ( size_t j=0; j < nRangeCount; j++ ) { - ScRange aRange = *aRangeList.GetObject(j); + ScRange aRange = *aRangeList[ j ]; pTab[i]->ApplyBlockFrame( pLineOuter, pLineInner, aRange.aStart.Col(), aRange.aStart.Row(), aRange.aEnd.Col(), aRange.aEnd.Row() ); @@ -5126,18 +5136,6 @@ ULONG ScDocument::GetCodeCount() const } -ULONG ScDocument::GetWeightedCount() const -{ - ULONG nCellCount = 0L; - - for ( SCTAB nTab=0; nTab<=MAXTAB; nTab++ ) - if ( pTab[nTab] ) - nCellCount += pTab[nTab]->GetWeightedCount(); - - return nCellCount; -} - - void ScDocument::PageStyleModified( SCTAB nTab, const String& rNewName ) { if ( ValidTab(nTab) && pTab[nTab] ) diff --git a/sc/source/core/data/dpcachetable.cxx b/sc/source/core/data/dpcachetable.cxx index b371a30b7542..278696a2b13e 100644 --- a/sc/source/core/data/dpcachetable.cxx +++ b/sc/source/core/data/dpcachetable.cxx @@ -80,6 +80,7 @@ ScDPCacheTable::FilterItem::FilterItem() : mbHasValue(false) { } + bool ScDPCacheTable::FilterItem::match( const ScDPItemData& rCellData ) const { if (rCellData.GetString()!= maString && @@ -87,6 +88,7 @@ bool ScDPCacheTable::FilterItem::match( const ScDPItemData& rCellData ) const return false; return true; } + // ---------------------------------------------------------------------------- ScDPCacheTable::SingleFilter::SingleFilter(String aString, double fValue, bool bHasValue) @@ -101,7 +103,7 @@ bool ScDPCacheTable::SingleFilter::match( const ScDPItemData& rCellData ) const return maItem.match(rCellData); } -const String ScDPCacheTable::SingleFilter::getMatchString() +const String& ScDPCacheTable::SingleFilter::getMatchString() { return maItem.maString; } @@ -158,15 +160,15 @@ ScDPCacheTable::Criterion::Criterion() : // ---------------------------------------------------------------------------- -ScDPCacheTable::ScDPCacheTable( ScDocument* pDoc,long nId ) : +ScDPCacheTable::ScDPCacheTable( ScDocument* pDoc, long nId ) : mpCache( NULL ), mpNoneCache( NULL ) { - if ( nId >= 0 ) - mpCache = pDoc->GetDPObjectCache( nId ); + if ( nId >= 0 ) + mpCache = pDoc->GetDPCollection()->GetDPObjectCache( nId ); else { //create a temp cache object - InitNoneCache( NULL ); + initNoneCache( NULL ); } } @@ -176,20 +178,21 @@ ScDPCacheTable::~ScDPCacheTable() sal_Int32 ScDPCacheTable::getRowSize() const { - return GetCache()->GetRowCount(); + return getCache()->GetRowCount(); } sal_Int32 ScDPCacheTable::getColSize() const { - return GetCache()->GetColumnCount(); + return getCache()->GetColumnCount(); } -void ScDPCacheTable::fillTable( const ScQueryParam& rQuery, BOOL* pSpecial, - bool bIgnoreEmptyRows, bool bRepeatIfEmpty ) +void ScDPCacheTable::fillTable( + const ScQueryParam& rQuery, bool* pSpecial, bool bIgnoreEmptyRows, bool bRepeatIfEmpty) { + // check cache if ( mpCache == NULL ) - InitNoneCache( NULL ); -//check cache + initNoneCache( NULL ); + const SCROW nRowCount = getRowSize(); const SCCOL nColCount = (SCCOL) getColSize(); if ( nRowCount <= 0 || nColCount <= 0) @@ -198,7 +201,6 @@ void ScDPCacheTable::fillTable( const ScQueryParam& rQuery, BOOL* pSpecial, maRowsVisible.clear(); maRowsVisible.reserve(nRowCount); - // Initialize field entries container. maFieldEntries.clear(); maFieldEntries.reserve(nColCount); @@ -206,23 +208,23 @@ void ScDPCacheTable::fillTable( const ScQueryParam& rQuery, BOOL* pSpecial, // Data rows for (SCCOL nCol = 0; nCol < nColCount; ++nCol) { - SCROW nMemCount = GetCache()->GetDimMemberCount( nCol ); + SCROW nMemCount = getCache()->GetDimMemberCount( nCol ); if ( nMemCount ) { std::vector< SCROW > pAdded( nMemCount, -1 ); for (SCROW nRow = 0; nRow < nRowCount; ++nRow ) { - SCROW nIndex = GetCache()->GetItemDataId( nCol, nRow, bRepeatIfEmpty ); - SCROW nOrder = GetCache()->GetOrder( nCol, nIndex ); + SCROW nIndex = getCache()->GetItemDataId( nCol, nRow, bRepeatIfEmpty ); + SCROW nOrder = getCache()->GetOrder( nCol, nIndex ); if ( nCol == 0 ) maRowsVisible.push_back(false); if ( lcl_HasQueryEntry(rQuery) && - !GetCache()->ValidQuery( nRow , rQuery, pSpecial ) ) + !getCache()->ValidQuery( nRow , rQuery, pSpecial ) ) continue; - if ( bIgnoreEmptyRows && GetCache()->IsRowEmpty( nRow ) ) + if ( bIgnoreEmptyRows && getCache()->IsRowEmpty( nRow ) ) continue; // Insert a new row into cache table. if ( nCol == 0 ) @@ -242,9 +244,10 @@ void ScDPCacheTable::fillTable( const ScQueryParam& rQuery, BOOL* pSpecial, void ScDPCacheTable::fillTable() { + // check cache if ( mpCache == NULL ) - InitNoneCache( NULL ); -//check cache + initNoneCache( NULL ); + const SCROW nRowCount = getRowSize(); const SCCOL nColCount = (SCCOL) getColSize(); if ( nRowCount <= 0 || nColCount <= 0) @@ -261,15 +264,15 @@ void ScDPCacheTable::fillTable() // Data rows for (SCCOL nCol = 0; nCol < nColCount; ++nCol) { - SCROW nMemCount = GetCache()->GetDimMemberCount( nCol ); + SCROW nMemCount = getCache()->GetDimMemberCount( nCol ); if ( nMemCount ) { std::vector< SCROW > pAdded( nMemCount, -1 ); for (SCROW nRow = 0; nRow < nRowCount; ++nRow ) { - SCROW nIndex = GetCache()->GetItemDataId( nCol, nRow, false ); - SCROW nOrder = GetCache()->GetOrder( nCol, nIndex ); + SCROW nIndex = getCache()->GetItemDataId( nCol, nRow, false ); + SCROW nOrder = getCache()->GetOrder( nCol, nIndex ); if ( nCol == 0 ) maRowsVisible.push_back(true); @@ -285,7 +288,6 @@ void ScDPCacheTable::fillTable() } } } - return; } bool ScDPCacheTable::isRowActive(sal_Int32 nRow) const @@ -312,8 +314,8 @@ void ScDPCacheTable::filterByPageDimension(const vector<Criterion>& rCriteria, c const ScDPItemData* ScDPCacheTable::getCell(SCCOL nCol, SCROW nRow, bool bRepeatIfEmpty) const { - SCROW nId= GetCache()->GetItemDataId(nCol, nRow, bRepeatIfEmpty); - return GetCache()->GetItemDataById( nCol, nId ); + SCROW nId= getCache()->GetItemDataId(nCol, nRow, bRepeatIfEmpty); + return getCache()->GetItemDataById( nCol, nId ); } void ScDPCacheTable::getValue( ScDPValueData& rVal, SCCOL nCol, SCROW nRow, bool bRepeatIfEmpty) const @@ -330,23 +332,18 @@ void ScDPCacheTable::getValue( ScDPValueData& rVal, SCCOL nCol, SCROW nRow, boo } String ScDPCacheTable::getFieldName(SCCOL nIndex) const { - return (GetCache()->GetDimensionName( nIndex )); -} - -sal_Int32 ScDPCacheTable::getFieldIndex(const String& rStr) const -{ - return GetCache()->GetDimensionIndex( rStr ); + return getCache()->GetDimensionName( nIndex ); } const ::std::vector<SCROW>& ScDPCacheTable::getFieldEntries( sal_Int32 nColumn ) const { - if (nColumn < 0 || static_cast<size_t>(nColumn) >= maFieldEntries.size()) + if (nColumn < 0 || static_cast<size_t>(nColumn) >= maFieldEntries.size()) { // index out of bound. Hopefully this code will never be reached. static const ::std::vector<SCROW> emptyEntries; return emptyEntries; } - return maFieldEntries[nColumn]; + return maFieldEntries[nColumn]; } void ScDPCacheTable::filterTable(const vector<Criterion>& rCriteria, Sequence< Sequence<Any> >& rTabData, @@ -392,7 +389,6 @@ void ScDPCacheTable::filterTable(const vector<Criterion>& rCriteria, Sequence< S { Any any; bool bRepeatIfEmpty = rRepeatIfEmptyDims.count(nCol) > 0; - // Wang Xu Ming - DataPilot migration const ScDPItemData* pData= getCell(nCol, nRow, bRepeatIfEmpty); if ( pData->IsValue() ) any <<= pData->GetValue(); @@ -419,12 +415,6 @@ void ScDPCacheTable::clear() maRowsVisible.clear(); } -void ScDPCacheTable::swap(ScDPCacheTable& rOther) -{ - maFieldEntries.swap(rOther.maFieldEntries); - maRowsVisible.swap(rOther.maRowsVisible); -} - bool ScDPCacheTable::empty() const { return ( mpCache == NULL&& mpNoneCache == NULL ) || maFieldEntries.size()==0; @@ -452,20 +442,18 @@ bool ScDPCacheTable::isRowQualified(sal_Int32 nRow, const vector<Criterion>& rCr } -void ScDPCacheTable::InitNoneCache( ScDocument* pDoc ) +void ScDPCacheTable::initNoneCache( ScDocument* pDoc ) { mpCache = NULL; - if ( mpNoneCache ) - delete mpNoneCache; + delete mpNoneCache; mpNoneCache = new ScDPTableDataCache( pDoc ); } -ScDPTableDataCache* ScDPCacheTable::GetCache() const +ScDPTableDataCache* ScDPCacheTable::getCache() const { if ( mpCache ) return mpCache; return mpNoneCache; } -// End Comments /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/data/dpdimsave.cxx b/sc/source/core/data/dpdimsave.cxx index f8b06fbb0dd1..f548f04513f6 100644 --- a/sc/source/core/data/dpdimsave.cxx +++ b/sc/source/core/data/dpdimsave.cxx @@ -62,7 +62,7 @@ void ScDPSaveGroupItem::AddElementsFromGroup( const ScDPSaveGroupItem& rGroup ) // add all elements of the other group (used for nested grouping) for ( std::vector<String>::const_iterator aIter(rGroup.aElements.begin()); - aIter != rGroup.aElements.end(); aIter++ ) + aIter != rGroup.aElements.end(); ++aIter ) aElements.push_back( *aIter ); } diff --git a/sc/source/core/data/dpglobal.cxx b/sc/source/core/data/dpglobal.cxx index 4ce715600a9c..6063fdd65c7c 100644 --- a/sc/source/core/data/dpglobal.cxx +++ b/sc/source/core/data/dpglobal.cxx @@ -35,6 +35,7 @@ #include "dpglobal.hxx" #include "document.hxx" +#include "dpobject.hxx" #include <stdio.h> @@ -48,68 +49,19 @@ namespace ScDPGlobal return rcResult; } - String GetFuncString( const String &rString, const USHORT nIndex ) - { - if ( nIndex <= 1 ) return rString; - ULONG uch = rString.Len() ? rString.GetChar( rString.Len()-1 ) : (L'9'+1); - bool bEndWithDigital = ( L'0'<=uch && uch<=L'9'); - char szTemp[__MAX_NUM_LEN+1]; - int nLen = sprintf( szTemp, bEndWithDigital ? DATA_RENAME_SEPARATOR"%hu" : "%hu", nIndex ); - String strRet = rString; - strRet.Append( String::CreateFromAscii( szTemp, static_cast<USHORT>(nLen) )); - return strRet; - } - - bool ChkDPTableOverlap( ScDocument *pDestDoc, std::list<ScDPObject> & rClipboard, SCCOL nClipStartCol, SCROW nClipStartRow, SCCOL nStartCol, SCROW nStartRow, SCTAB nStartTab, USHORT nEndTab, BOOL bExcludeClip /*= FALSE*/ ) - { - if ( ScDPCollection* pDPCollection = pDestDoc->GetDPCollection() ) - { - USHORT nCount = pDPCollection->GetCount(); - SCsCOL nOffsetX = nStartCol - nClipStartCol; - SCsROW nOffsetY = nStartRow - nClipStartRow; - - for( std::list<ScDPObject>::iterator iter = rClipboard.begin(); iter!=rClipboard.end(); iter++ ) - { - ScRange aRange = iter->GetOutRange(); - - for( USHORT nCurrTab = nStartTab; nCurrTab<=nEndTab; nCurrTab++ ) - { - SCsTAB nOffsetZ = nCurrTab - aRange.aStart.Tab(); - aRange.Move( nOffsetX, nOffsetY, nOffsetZ ); - - for ( USHORT i = 0; i<nCount; i++) - { - if ( (*pDPCollection)[i] && aRange.Intersects( (*pDPCollection)[i]->GetOutRange())) - { - if ( bExcludeClip && iter->GetOutRange() == (*pDPCollection)[i]->GetOutRange() ) - { - continue; - } - return false; - } - } - } - } - } - return true; } -//end -} -// -------------------------------------------------------------------- -// ScDPItemDataPool -// Construct -ScDPItemDataPool::ScDPItemDataPool(void) +ScDPItemDataPool::ScDPItemDataPool() { } -// + ScDPItemDataPool::ScDPItemDataPool(const ScDPItemDataPool& r): maItems(r.maItems), maItemIds(r.maItemIds) { } -ScDPItemDataPool::~ScDPItemDataPool(void) +ScDPItemDataPool::~ScDPItemDataPool() { } diff --git a/sc/source/core/data/dpgroup.cxx b/sc/source/core/data/dpgroup.cxx index 216d90352c9d..a053cfae8024 100644 --- a/sc/source/core/data/dpgroup.cxx +++ b/sc/source/core/data/dpgroup.cxx @@ -283,10 +283,7 @@ public: ScDPGroupDateFilter(double fMatchValue, sal_Int32 nDatePart, const Date* pNullDate, const ScDPNumGroupInfo* pNumInfo); - // Wang Xu Ming -- 2009-8-17 - // DataPilot Migration - Cache&&Performance virtual bool match(const ScDPItemData & rCellData) const; - // End Comments private: ScDPGroupDateFilter(); // disabled @@ -306,8 +303,7 @@ ScDPGroupDateFilter::ScDPGroupDateFilter(double fMatchValue, sal_Int32 nDatePart mfMatchValue(fMatchValue), mnDatePart(nDatePart) { -// fprintf(stdout, "ScDPCacheTable:DateGroupFilter::DateGroupFilter: match value = %g; date part = %ld\n", -// mfMatchValue, mnDatePart); + } bool ScDPGroupDateFilter::match( const ScDPItemData & rCellData ) const { @@ -317,7 +313,7 @@ bool ScDPGroupDateFilter::match( const ScDPItemData & rCellData ) const if ( !rCellData.IsValue() ) return false; -// ScDPCacheCell rCell( rCellData.fValue ); + if (!mpNumInfo) return false; @@ -550,11 +546,8 @@ BOOL lcl_DateContained( sal_Int32 nGroupPart, const ScDPItemData& rGroupData, } // no approxFloor needed, values were created from integers -// Wang Xu Ming -- 2009-8-17 -// DataPilot Migration - Cache&&Performance sal_Int32 nGroupValue = (sal_Int32) rGroupData.GetValue(); sal_Int32 nBaseValue = (sal_Int32) rBaseData.GetValue(); -// End Comments if ( nBasePart > nGroupPart ) { // switch, so the base part is the smaller (inner) part @@ -724,10 +717,7 @@ void ScDPGroupItem::FillGroupFilter( ScDPCacheTable::GroupFilter& rFilter ) cons { ScDPItemDataVec::const_iterator itrEnd = aElements.end(); for (ScDPItemDataVec::const_iterator itr = aElements.begin(); itr != itrEnd; ++itr) -// Wang Xu Ming -- 2009-8-17 -// DataPilot Migration - Cache&&Performance rFilter.addMatchItem(itr->GetString(), itr->GetValue(), itr->IsValue()); -// End Comments } // ----------------------------------------------------------------------- @@ -736,8 +726,7 @@ ScDPGroupDimension::ScDPGroupDimension( long nSource, const String& rNewName ) : nSourceDim( nSource ), nGroupDim( -1 ), aGroupName( rNewName ), - pDateHelper( NULL )/*, - pCollection( NULL )*/ + pDateHelper( NULL ) { } @@ -789,21 +778,19 @@ void ScDPGroupDimension::SetGroupDim( long nDim ) { nGroupDim = nDim; } -// Wang Xu Ming -- 2009-9-2 -// DataPilot Migration - Cache&&Performance const std::vector< SCROW >& ScDPGroupDimension::GetColumnEntries( const ScDPCacheTable& rCacheTable, const std::vector< SCROW >& rOriginal ) const { if ( maMemberEntries.empty() ) { if ( pDateHelper ) { - pDateHelper->FillColumnEntries( (SCCOL)GetSourceDim(), rCacheTable.GetCache(), maMemberEntries, rOriginal ); + pDateHelper->FillColumnEntries( (SCCOL)GetSourceDim(), rCacheTable.getCache(), maMemberEntries, rOriginal ); } else { for (size_t i =0; i < rOriginal.size( ); i ++) { - const ScDPItemData* pItemData = rCacheTable.GetCache()->GetItemDataById( (SCCOL)GetSourceDim(), rOriginal[i] ); + const ScDPItemData* pItemData = rCacheTable.getCache()->GetItemDataById( (SCCOL)GetSourceDim(), rOriginal[i] ); if ( !pItemData || !GetGroupForData( *pItemData ) ) { // not in any group -> add as its own group @@ -814,15 +801,14 @@ const std::vector< SCROW >& ScDPGroupDimension::GetColumnEntries( const ScDPCac long nCount = aItems.size(); for (long i=0; i<nCount; i++) { - SCROW nNew = rCacheTable.GetCache()->GetAdditionalItemID( aItems[i].GetName() ); - lcl_Insert ( (SCCOL)GetSourceDim(), rCacheTable.GetCache(), maMemberEntries, nNew ); + SCROW nNew = rCacheTable.getCache()->GetAdditionalItemID( aItems[i].GetName() ); + lcl_Insert ( (SCCOL)GetSourceDim(), rCacheTable.getCache(), maMemberEntries, nNew ); } } } return maMemberEntries; } -// End Comments const ScDPGroupItem* ScDPGroupDimension::GetGroupForData( const ScDPItemData& rData ) const @@ -1086,7 +1072,6 @@ void ScDPGroupTableData::GetNumGroupInfo( long nDimension, ScDPNumGroupInfo& rIn rDecimal = pNumGroups[nDimension].GetDecSeparator(); } } -// Wang Xu Ming - DataPilot migration long ScDPGroupTableData::GetMembersCount( long nDim ) { const std::vector< SCROW >& members = GetColumnEntries( nDim ); @@ -1112,7 +1097,7 @@ const std::vector< SCROW >& ScDPGroupTableData::GetColumnEntries( long nColumn { // dimension number is unchanged for numerical groups const std::vector< SCROW >& rOriginal = pSourceData->GetColumnEntries( nColumn ); - return pNumGroups[nColumn].GetNumEntries( (SCCOL)nColumn, GetCacheTable().GetCache(), rOriginal ); + return pNumGroups[nColumn].GetNumEntries( (SCCOL)nColumn, GetCacheTable().getCache(), rOriginal ); } return pSourceData->GetColumnEntries( nColumn ); @@ -1284,13 +1269,8 @@ void ScDPGroupTableData::ModifyFilterCriteria(vector<ScDPCacheTable::Criterion>& for (size_t i = 0; i < nGroupItemCount; ++i) { const ScDPGroupItem* pGrpItem = pGrpDim->GetGroupByIndex(i); - // Wang Xu Ming -- 2009-6-9 - // DataPilot Migration ScDPItemData aName( pFilter->getMatchString(),pFilter->getMatchValue(),pFilter->hasValue()) ; - /*aName.aString = pFilter->getMatchString(); - aName.fValue = pFilter->getMatchValue(); - aName.bHasValue = pFilter->hasValue();*/ - // End Comments + if (!pGrpItem || !pGrpItem->GetName().IsCaseInsEqual(aName)) continue; @@ -1359,7 +1339,7 @@ void ScDPGroupTableData::FillGroupValues( /*ScDPItemData* pItemData*/ SCROW* pIt { long nGroupedColumns = aGroups.size(); - ScDPTableDataCache* pCache = GetCacheTable().GetCache(); + ScDPTableDataCache* pCache = GetCacheTable().getCache(); for (long nDim=0; nDim<nCount; nDim++) { const ScDPDateGroupHelper* pDateHelper = NULL; @@ -1402,18 +1382,14 @@ void ScDPGroupTableData::FillGroupValues( /*ScDPItemData* pItemData*/ SCROW* pIt if ( pDateHelper ) { - const ScDPItemData* pData = GetCacheTable().GetCache()->GetItemDataById( (SCCOL)nSourceDim, pItemDataIndex[nDim]); + const ScDPItemData* pData = GetCacheTable().getCache()->GetItemDataById( (SCCOL)nSourceDim, pItemDataIndex[nDim]); if ( pData ->IsValue() ) { sal_Int32 nPartValue = lcl_GetDatePartValue( pData->GetValue(), pDateHelper->GetDatePart(), pDoc->GetFormatTable(), &pDateHelper->GetNumInfo() ); -// Wang Xu Ming -- 2009-9-7 -// DataPilot Migration - Cache&&Performance - //String aName = lcl_GetDateGroupName( pDateHelper, nPartValue, pDoc->GetFormatTable() ); ScDPItemData aItemData( pDateHelper->GetDatePart(), String(), nPartValue, ScDPItemData::MK_DATA|ScDPItemData::MK_VAL|ScDPItemData::MK_DATEPART ); - pItemDataIndex[nDim] = GetCacheTable().GetCache()->GetAdditionalItemID( aItemData ); -// End Comments + pItemDataIndex[nDim] = GetCacheTable().getCache()->GetAdditionalItemID( aItemData ); } } } diff --git a/sc/source/core/data/dpobject.cxx b/sc/source/core/data/dpobject.cxx index d8abd8d7dee3..942836760f65 100644 --- a/sc/source/core/data/dpobject.cxx +++ b/sc/source/core/data/dpobject.cxx @@ -29,8 +29,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sc.hxx" - - // INCLUDE --------------------------------------------------------------- #include "dpobject.hxx" @@ -53,11 +51,8 @@ #include "attrib.hxx" #include "scitems.hxx" #include "unonames.hxx" -// Wang Xu Ming -- 2009-8-17 -// DataPilot Migration - Cache&&Performance #include "dpglobal.hxx" #include "globstr.hrc" -// End Comments #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/sheet/GeneralFunction.hpp> #include <com/sun/star/sheet/DataPilotFieldFilter.hpp> @@ -94,10 +89,10 @@ using ::com::sun::star::uno::Exception; using ::com::sun::star::lang::XComponent; using ::com::sun::star::sheet::DataPilotTableHeaderData; using ::com::sun::star::sheet::DataPilotTablePositionData; +using ::com::sun::star::sheet::XDimensionsSupplier; using ::com::sun::star::beans::XPropertySet; using ::rtl::OUString; - // ----------------------------------------------------------------------- #define SCDPSOURCE_SERVICE "com.sun.star.sheet.DataPilotSource" @@ -119,7 +114,6 @@ using ::rtl::OUString; #define DP_PROP_FUNCTION "Function" #define DP_PROP_IGNOREEMPTY "IgnoreEmptyRows" #define DP_PROP_ISDATALAYOUT "IsDataLayoutDimension" -//#define DP_PROP_ISVISIBLE "IsVisible" #define DP_PROP_ORIENTATION "Orientation" #define DP_PROP_ORIGINAL "Original" #define DP_PROP_POSITION "Position" @@ -149,11 +143,11 @@ USHORT lcl_GetDataGetOrientation( const uno::Reference<sheet::XDimensionsSupplie if ( xDimProp.is() ) { bFound = ScUnoHelpFunctions::GetBoolProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_ISDATALAYOUT) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ISDATALAYOUT)) ); //! error checking -- is "IsDataLayoutDimension" property required?? if (bFound) nRet = ScUnoHelpFunctions::GetEnumProperty( - xDimProp, rtl::OUString::createFromAscii(DP_PROP_ORIENTATION), + xDimProp, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ORIENTATION)), sheet::DataPilotFieldOrientation_HIDDEN ); } } @@ -177,13 +171,12 @@ ScDPObject::ScDPObject( ScDocument* pD ) : bAllowMove( FALSE ), nHeaderRows( 0 ), mbHeaderLayout(false), - bRefresh( FALSE ), // Wang Xu Ming - DataPilot migration - mnCacheId( -1) // Wang Xu Ming - DataPilot migration + bRefresh( FALSE ), + mnCacheId( -1) { } ScDPObject::ScDPObject(const ScDPObject& r) : - ScDataObject(), pDoc( r.pDoc ), pSaveData( NULL ), aTableName( r.aTableName ), @@ -200,8 +193,8 @@ ScDPObject::ScDPObject(const ScDPObject& r) : bAllowMove( FALSE ), nHeaderRows( r.nHeaderRows ), mbHeaderLayout( r.mbHeaderLayout ), - bRefresh( r.bRefresh ), // Wang Xu Ming - DataPilot migration - mnCacheId ( r.mnCacheId ) // Wang Xu Ming - DataPilot migration + bRefresh( r.bRefresh ), + mnCacheId ( r.mnCacheId ) { if (r.pSaveData) pSaveData = new ScDPSaveData(*r.pSaveData); @@ -221,15 +214,10 @@ ScDPObject::~ScDPObject() delete pSheetDesc; delete pImpDesc; delete pServDesc; - mnCacheId = -1; // Wang Xu Ming - DataPilot migration + mnCacheId = -1; InvalidateSource(); } -ScDataObject* ScDPObject::Clone() const -{ - return new ScDPObject(*this); -} - void ScDPObject::SetAlive(BOOL bSet) { bAlive = bSet; @@ -246,28 +234,15 @@ void ScDPObject::SetSaveData(const ScDPSaveData& rData) { delete pSaveData; pSaveData = new ScDPSaveData( rData ); - // Wang Xu Ming -- 2009-8-17 - // DataPilot Migration - Cache&&Performance if ( rData.GetCacheId() >= 0 ) mnCacheId = rData.GetCacheId(); else if ( mnCacheId >= 0 ) pSaveData->SetCacheId( mnCacheId ); - // End Comments } InvalidateData(); // re-init source from SaveData } -void ScDPObject::SetAutoFormatIndex(const sal_uInt16 nIndex) -{ - mnAutoFormatIndex = nIndex; -} - -sal_uInt16 ScDPObject::GetAutoFormatIndex() const -{ - return mnAutoFormatIndex; -} - void ScDPObject::SetHeaderLayout (bool bUseGrid) { mbHeaderLayout = bUseGrid; @@ -446,10 +421,7 @@ ScDPTableData* ScDPObject::GetTableData() DBG_ERROR("no source descriptor"); pSheetDesc = new ScSheetSourceDesc; // dummy defaults } - // Wang Xu Ming -- 2009-8-17 - // DataPilot Migration - Cache&&Performance pData.reset(new ScSheetDPData(pDoc, *pSheetDesc, GetCacheId())); - // End Comments } // grouping (for cell or database data) @@ -460,11 +432,8 @@ ScDPTableData* ScDPObject::GetTableData() pData = pGroupData; } - // Wang Xu Ming -- 2009-8-17 - // DataPilot Migration - Cache&&Performance if ( pData ) SetCacheId( pData->GetCacheId()); // resets mpTableData - // End Comments mpTableData = pData; // after SetCacheId } @@ -554,7 +523,7 @@ void ScDPObject::InvalidateSource() mpTableData.reset(); } -ScRange ScDPObject::GetNewOutputRange( BOOL& rOverflow ) +ScRange ScDPObject::GetNewOutputRange( bool& rOverflow ) { CreateOutput(); // create xSource and pOutput if not already done @@ -687,11 +656,11 @@ bool ScDPObject::GetMembers( sal_Int32 nDim, sal_Int32 nHier, vector<ScDPLabelDa Reference<beans::XPropertySet> xMemProp(xMember, UNO_QUERY); if (xMemProp.is()) { - aMem.mbVisible = ScUnoHelpFunctions::GetBoolProperty(xMemProp, OUString::createFromAscii(SC_UNO_ISVISIBL)); - aMem.mbShowDetails = ScUnoHelpFunctions::GetBoolProperty(xMemProp, OUString::createFromAscii(SC_UNO_SHOWDETA)); + aMem.mbVisible = ScUnoHelpFunctions::GetBoolProperty(xMemProp, OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_ISVISIBL))); + aMem.mbShowDetails = ScUnoHelpFunctions::GetBoolProperty(xMemProp, OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_SHOWDETA))); aMem.maLayoutName = ScUnoHelpFunctions::GetStringProperty( - xMemProp, OUString::createFromAscii(SC_UNO_LAYOUTNAME), OUString()); + xMemProp, OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_LAYOUTNAME)), OUString()); } aMembers.push_back(aMem); @@ -841,7 +810,7 @@ bool ScDPObject::IsDimNameInUse(const OUString& rName) const continue; OUString aLayoutName = ScUnoHelpFunctions::GetStringProperty( - xPropSet, OUString::createFromAscii(SC_UNO_LAYOUTNAME), OUString()); + xPropSet, OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_LAYOUTNAME)), OUString()); if (aLayoutName.equalsIgnoreAsciiCase(rName)) return true; } @@ -867,7 +836,7 @@ String ScDPObject::GetDimName( long nDim, BOOL& rIsDataLayout, sal_Int32* pFlags if ( xDimName.is() && xDimProp.is() ) { BOOL bData = ScUnoHelpFunctions::GetBoolProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_ISDATALAYOUT) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ISDATALAYOUT)) ); //! error checking -- is "IsDataLayoutDimension" property required?? rtl::OUString aName; @@ -885,7 +854,7 @@ String ScDPObject::GetDimName( long nDim, BOOL& rIsDataLayout, sal_Int32* pFlags if (pFlags) *pFlags = ScUnoHelpFunctions::GetLongProperty( xDimProp, - rtl::OUString::createFromAscii(SC_UNO_FLAGS), 0 ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_FLAGS)), 0 ); } } } @@ -911,7 +880,7 @@ BOOL ScDPObject::IsDuplicated( long nDim ) try { uno::Any aOrigAny = xDimProp->getPropertyValue( - rtl::OUString::createFromAscii(DP_PROP_ORIGINAL) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ORIGINAL)) ); uno::Reference<uno::XInterface> xIntOrig; if ( (aOrigAny >>= xIntOrig) && xIntOrig.is() ) bDuplicated = TRUE; @@ -967,7 +936,7 @@ void ScDPObject::FillPageList( TypedScStrCollection& rStrings, long nField ) uno::Reference<beans::XPropertySet> xDimProp( xDim, uno::UNO_QUERY ); long nHierarchy = ScUnoHelpFunctions::GetLongProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_USEDHIERARCHY) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_USEDHIERARCHY)) ); long nLevel = 0; long nHierCount = 0; @@ -1017,7 +986,7 @@ void ScDPObject::FillPageList( TypedScStrCollection& rStrings, long nField ) sal_Bool bVisible = false; if (xPropSet.is()) { - Any any = xPropSet->getPropertyValue(OUString::createFromAscii(SC_UNO_ISVISIBL)); + Any any = xPropSet->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_ISVISIBL))); any >>= bVisible; } @@ -1340,9 +1309,9 @@ BOOL ScDPObject::ParseFilters( ScDPGetPivotDataField& rTarget, uno::Reference<beans::XPropertySet> xDimProp( xDim, uno::UNO_QUERY ); uno::Reference<sheet::XHierarchiesSupplier> xDimSupp( xDim, uno::UNO_QUERY ); BOOL bDataLayout = ScUnoHelpFunctions::GetBoolProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_ISDATALAYOUT) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ISDATALAYOUT)) ); sal_Int32 nOrient = ScUnoHelpFunctions::GetEnumProperty( - xDimProp, rtl::OUString::createFromAscii(DP_PROP_ORIENTATION), + xDimProp, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ORIENTATION)), sheet::DataPilotFieldOrientation_HIDDEN ); if ( !bDataLayout ) { @@ -1360,7 +1329,7 @@ BOOL ScDPObject::ParseFilters( ScDPGetPivotDataField& rTarget, uno::Reference<container::XIndexAccess> xHiers = new ScNameToIndexAccess( xDimSupp->getHierarchies() ); sal_Int32 nHierarchy = ScUnoHelpFunctions::GetLongProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_USEDHIERARCHY) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_USEDHIERARCHY)) ); if ( nHierarchy >= xHiers->getCount() ) nHierarchy = 0; @@ -1550,7 +1519,7 @@ void ScDPObject::ToggleDetails(const DataPilotTableHeaderData& rElemDesc, ScDPOb uno::Reference<beans::XPropertySet> xDimProp( xDim, uno::UNO_QUERY ); BOOL bDataLayout = ScUnoHelpFunctions::GetBoolProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_ISDATALAYOUT) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ISDATALAYOUT)) ); if (bDataLayout) { // the elements of the data layout dimension can't be found by their names @@ -1608,7 +1577,7 @@ void ScDPObject::ToggleDetails(const DataPilotTableHeaderData& rElemDesc, ScDPOb if ( xMbrProp.is() ) { bShowDetails = ScUnoHelpFunctions::GetBoolProperty( xMbrProp, - rtl::OUString::createFromAscii(DP_PROP_SHOWDETAILS) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_SHOWDETAILS)) ); //! don't set bFound if property is unknown? bFound = TRUE; } @@ -1656,7 +1625,7 @@ USHORT lcl_FirstSubTotal( const uno::Reference<beans::XPropertySet>& xDimProp ) { uno::Reference<container::XIndexAccess> xHiers = new ScNameToIndexAccess( xDimSupp->getHierarchies() ); long nHierarchy = ScUnoHelpFunctions::GetLongProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_USEDHIERARCHY) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_USEDHIERARCHY)) ); if ( nHierarchy >= xHiers->getCount() ) nHierarchy = 0; @@ -1675,7 +1644,7 @@ USHORT lcl_FirstSubTotal( const uno::Reference<beans::XPropertySet>& xDimProp ) try { aSubAny = xLevProp->getPropertyValue( - rtl::OUString::createFromAscii(DP_PROP_SUBTOTALS) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_SUBTOTALS)) ); } catch(uno::Exception&) { @@ -1713,38 +1682,47 @@ USHORT lcl_CountBits( USHORT nBits ) return nCount; } -SCSIZE lcl_FillOldFields( PivotField* pFields, - const uno::Reference<sheet::XDimensionsSupplier>& xSource, - USHORT nOrient, SCCOL nColAdd, BOOL bAddData ) +void lcl_FillOldFields( + vector<PivotField>& rFields, + const uno::Reference<sheet::XDimensionsSupplier>& xSource, + USHORT nOrient, SCCOL nColAdd, bool bAddData ) { - SCSIZE nOutCount = 0; - BOOL bDataFound = FALSE; + vector<PivotField> aFields; - SCSIZE nCount = (nOrient == sheet::DataPilotFieldOrientation_PAGE) ? PIVOT_MAXPAGEFIELD : PIVOT_MAXFIELD; + bool bDataFound = false; - //! merge multiple occurences (data field with different functions) + //! merge multiple occurrences (data field with different functions) //! force data field in one dimension - std::vector< long > aPos( nCount, 0 ); + vector<long> aPos; uno::Reference<container::XNameAccess> xDimsName = xSource->getDimensions(); uno::Reference<container::XIndexAccess> xDims = new ScNameToIndexAccess( xDimsName ); long nDimCount = xDims->getCount(); - for (long nDim=0; nDim < nDimCount && nOutCount < nCount; nDim++) + for (long nDim = 0; nDim < nDimCount; ++nDim) { + // Get dimension object. uno::Reference<uno::XInterface> xIntDim = ScUnoHelpFunctions::AnyToInterface( xDims->getByIndex(nDim) ); + + // dimension properties uno::Reference<beans::XPropertySet> xDimProp( xIntDim, uno::UNO_QUERY ); + + // dimension orientation, hidden by default. long nDimOrient = ScUnoHelpFunctions::GetEnumProperty( - xDimProp, rtl::OUString::createFromAscii(DP_PROP_ORIENTATION), + xDimProp, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ORIENTATION)), sheet::DataPilotFieldOrientation_HIDDEN ); + if ( xDimProp.is() && nDimOrient == nOrient ) { + // Let's take this dimension. + + // function mask. USHORT nMask = 0; if ( nOrient == sheet::DataPilotFieldOrientation_DATA ) { sheet::GeneralFunction eFunc = (sheet::GeneralFunction)ScUnoHelpFunctions::GetEnumProperty( - xDimProp, rtl::OUString::createFromAscii(DP_PROP_FUNCTION), + xDimProp, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_FUNCTION)), sheet::GeneralFunction_NONE ); if ( eFunc == sheet::GeneralFunction_AUTO ) { @@ -1756,13 +1734,16 @@ SCSIZE lcl_FillOldFields( PivotField* pFields, else nMask = lcl_FirstSubTotal( xDimProp ); // from first hierarchy - BOOL bDataLayout = ScUnoHelpFunctions::GetBoolProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_ISDATALAYOUT) ); + // is this data layout dimension? + bool bDataLayout = ScUnoHelpFunctions::GetBoolProperty( + xDimProp, OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ISDATALAYOUT))); + + // is this dimension cloned? uno::Any aOrigAny; try { aOrigAny = xDimProp->getPropertyValue( - rtl::OUString::createFromAscii(DP_PROP_ORIGINAL) ); + OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ORIGINAL))); } catch(uno::Exception&) { @@ -1777,85 +1758,88 @@ SCSIZE lcl_FillOldFields( PivotField* pFields, nDupSource = lcl_FindName( xNameOrig->getName(), xDimsName ); } - BOOL bDupUsed = FALSE; + bool bDupUsed = false; if ( nDupSource >= 0 ) { + // this dimension is cloned. + // add function bit to previous entry - SCsCOL nCompCol; + SCsCOL nCompCol; // column ID of the original dimension. if ( bDataLayout ) nCompCol = PIVOT_DATA_FIELD; else nCompCol = static_cast<SCsCOL>(nDupSource)+nColAdd; //! seek source column from name - for (SCSIZE nOld=0; nOld<nOutCount && !bDupUsed; nOld++) - if ( pFields[nOld].nCol == nCompCol ) + vector<PivotField>::iterator itr = aFields.begin(), itrEnd = aFields.end(); + for (; itr != itrEnd; ++itr) + { + // add to previous column only if new bits aren't already set there + if (itr->nCol == nCompCol && (itr->nFuncMask & nMask) == 0) { - // add to previous column only if new bits aren't already set there - if ( ( pFields[nOld].nFuncMask & nMask ) == 0 ) - { - pFields[nOld].nFuncMask |= nMask; - pFields[nOld].nFuncCount = lcl_CountBits( pFields[nOld].nFuncMask ); - bDupUsed = TRUE; - } + itr->nFuncMask |= nMask; + itr->nFuncCount = lcl_CountBits(itr->nFuncMask); + bDupUsed = true; + break; } + } } if ( !bDupUsed ) // also for duplicated dim if original has different orientation { - if ( bDataLayout ) + aFields.push_back(PivotField()); + PivotField& rField = aFields.back(); + if (bDataLayout) { - pFields[nOutCount].nCol = PIVOT_DATA_FIELD; - bDataFound = TRUE; + rField.nCol = PIVOT_DATA_FIELD; + bDataFound = true; } - else if ( nDupSource >= 0 ) // if source was not found (different orientation) - pFields[nOutCount].nCol = static_cast<SCsCOL>(nDupSource)+nColAdd; //! seek from name + else if (nDupSource >= 0) + rField.nCol = static_cast<SCsCOL>(nDupSource)+nColAdd; //! seek from name else - pFields[nOutCount].nCol = static_cast<SCsCOL>(nDim)+nColAdd; //! seek source column from name + rField.nCol = static_cast<SCsCOL>(nDim)+nColAdd; //! seek source column from name - pFields[nOutCount].nFuncMask = nMask; - pFields[nOutCount].nFuncCount = lcl_CountBits( nMask ); - aPos[nOutCount] = ScUnoHelpFunctions::GetLongProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_POSITION) ); + rField.nFuncMask = nMask; + rField.nFuncCount = lcl_CountBits(nMask); + long nPos = ScUnoHelpFunctions::GetLongProperty( + xDimProp, OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_POSITION))); + aPos.push_back(nPos); try { - if( nOrient == sheet::DataPilotFieldOrientation_DATA ) - xDimProp->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SC_UNO_REFVALUE ) ) ) - >>= pFields[nOutCount].maFieldRef; + if (nOrient == sheet::DataPilotFieldOrientation_DATA) + xDimProp->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_REFVALUE))) + >>= rField.maFieldRef; } - catch( uno::Exception& ) + catch (uno::Exception&) { } - - ++nOutCount; } } } // sort by getPosition() value - for (SCSIZE i=0; i+1<nOutCount; i++) + size_t nOutCount = aFields.size(); + if (nOutCount >= 1) { - for (SCSIZE j=0; j+i+1<nOutCount; j++) - if ( aPos[j+1] < aPos[j] ) + for (size_t i = 0; i < nOutCount - 1; ++i) + { + for (size_t j = 0; j + i < nOutCount - 1; ++j) { - std::swap( aPos[j], aPos[j+1] ); - std::swap( pFields[j], pFields[j+1] ); + if ( aPos[j+1] < aPos[j] ) + { + std::swap( aPos[j], aPos[j+1] ); + std::swap( aFields[j], aFields[j+1] ); + } } + } } - if ( bAddData && !bDataFound ) - { - if ( nOutCount >= nCount ) // space for data field? - --nOutCount; //! error? - pFields[nOutCount].nCol = PIVOT_DATA_FIELD; - pFields[nOutCount].nFuncMask = 0; - pFields[nOutCount].nFuncCount = 0; - ++nOutCount; - } + if (bAddData && !bDataFound) + aFields.push_back(PivotField(PIVOT_DATA_FIELD, 0)); - return nOutCount; + rFields.swap(aFields); } BOOL ScDPObject::FillOldParam(ScPivotParam& rParam, BOOL bForFile) const @@ -1876,15 +1860,15 @@ BOOL ScDPObject::FillOldParam(ScPivotParam& rParam, BOOL bForFile) const nColAdd = pSheetDesc->aSourceRange.aStart.Col(); } - BOOL bAddData = ( lcl_GetDataGetOrientation( xSource ) == sheet::DataPilotFieldOrientation_HIDDEN ); - rParam.nPageCount = lcl_FillOldFields( rParam.aPageArr, - xSource, sheet::DataPilotFieldOrientation_PAGE, nColAdd, FALSE ); - rParam.nColCount = lcl_FillOldFields( rParam.aColArr, - xSource, sheet::DataPilotFieldOrientation_COLUMN, nColAdd, bAddData ); - rParam.nRowCount = lcl_FillOldFields( rParam.aRowArr, - xSource, sheet::DataPilotFieldOrientation_ROW, nColAdd, FALSE ); - rParam.nDataCount = lcl_FillOldFields( rParam.aDataArr, - xSource, sheet::DataPilotFieldOrientation_DATA, nColAdd, FALSE ); + bool bAddData = ( lcl_GetDataGetOrientation( xSource ) == sheet::DataPilotFieldOrientation_HIDDEN ); + lcl_FillOldFields( + rParam.maPageFields, xSource, sheet::DataPilotFieldOrientation_PAGE, nColAdd, false); + lcl_FillOldFields( + rParam.maColFields, xSource, sheet::DataPilotFieldOrientation_COLUMN, nColAdd, bAddData); + lcl_FillOldFields( + rParam.maRowFields, xSource, sheet::DataPilotFieldOrientation_ROW, nColAdd, false); + lcl_FillOldFields( + rParam.maDataFields, xSource, sheet::DataPilotFieldOrientation_DATA, nColAdd, false); uno::Reference<beans::XPropertySet> xProp( xSource, uno::UNO_QUERY ); if (xProp.is()) @@ -1892,15 +1876,15 @@ BOOL ScDPObject::FillOldParam(ScPivotParam& rParam, BOOL bForFile) const try { rParam.bMakeTotalCol = ScUnoHelpFunctions::GetBoolProperty( xProp, - rtl::OUString::createFromAscii(DP_PROP_COLUMNGRAND), TRUE ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_COLUMNGRAND)), TRUE ); rParam.bMakeTotalRow = ScUnoHelpFunctions::GetBoolProperty( xProp, - rtl::OUString::createFromAscii(DP_PROP_ROWGRAND), TRUE ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ROWGRAND)), TRUE ); // following properties may be missing for external sources rParam.bIgnoreEmptyRows = ScUnoHelpFunctions::GetBoolProperty( xProp, - rtl::OUString::createFromAscii(DP_PROP_IGNOREEMPTY) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_IGNOREEMPTY)) ); rParam.bDetectCategories = ScUnoHelpFunctions::GetBoolProperty( xProp, - rtl::OUString::createFromAscii(DP_PROP_REPEATIFEMPTY) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_REPEATIFEMPTY)) ); } catch(uno::Exception&) { @@ -1917,7 +1901,7 @@ void lcl_FillLabelData( ScDPLabelData& rData, const uno::Reference< beans::XProp { uno::Reference<container::XIndexAccess> xHiers = new ScNameToIndexAccess( xDimSupp->getHierarchies() ); long nHierarchy = ScUnoHelpFunctions::GetLongProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_USEDHIERARCHY) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_USEDHIERARCHY)) ); if ( nHierarchy >= xHiers->getCount() ) nHierarchy = 0; rData.mnUsedHier = nHierarchy; @@ -1935,7 +1919,7 @@ void lcl_FillLabelData( ScDPLabelData& rData, const uno::Reference< beans::XProp if ( xLevProp.is() ) { rData.mbShowAll = ScUnoHelpFunctions::GetBoolProperty( xLevProp, - rtl::OUString::createFromAscii(DP_PROP_SHOWEMPTY) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_SHOWEMPTY)) ); try { @@ -1980,7 +1964,7 @@ BOOL ScDPObject::FillLabelData(ScPivotParam& rParam) { BOOL bDuplicated = FALSE; BOOL bData = ScUnoHelpFunctions::GetBoolProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_ISDATALAYOUT) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ISDATALAYOUT)) ); //! error checking -- is "IsDataLayoutDimension" property required?? try @@ -1988,7 +1972,7 @@ BOOL ScDPObject::FillLabelData(ScPivotParam& rParam) aFieldName = String( xDimName->getName() ); uno::Any aOrigAny = xDimProp->getPropertyValue( - rtl::OUString::createFromAscii(DP_PROP_ORIGINAL) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ORIGINAL)) ); uno::Reference<uno::XInterface> xIntOrig; if ( (aOrigAny >>= xIntOrig) && xIntOrig.is() ) bDuplicated = TRUE; @@ -1998,7 +1982,7 @@ BOOL ScDPObject::FillLabelData(ScPivotParam& rParam) } OUString aLayoutName = ScUnoHelpFunctions::GetStringProperty( - xDimProp, OUString::createFromAscii(SC_UNO_LAYOUTNAME), OUString()); + xDimProp, OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_LAYOUTNAME)), OUString()); if ( aFieldName.Len() && !bData && !bDuplicated ) { @@ -2011,7 +1995,7 @@ BOOL ScDPObject::FillLabelData(ScPivotParam& rParam) GetMembers(nDim, GetUsedHierarchy(nDim), pNewLabel->maMembers); lcl_FillLabelData(*pNewLabel, xDimProp); pNewLabel->mnFlags = ScUnoHelpFunctions::GetLongProperty( xDimProp, - rtl::OUString::createFromAscii(SC_UNO_FLAGS), 0 ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_FLAGS)), 0 ); rParam.maLabelArray.push_back(pNewLabel); } } @@ -2103,6 +2087,8 @@ BOOL ScDPObject::GetMembersNA( sal_Int32 nDim, sal_Int32 nHier, uno::Reference< //------------------------------------------------------------------------ // convert old pivot tables into new datapilot tables +namespace { + String lcl_GetDimName( const uno::Reference<sheet::XDimensionsSupplier>& xSource, long nDim ) { rtl::OUString aName; @@ -2131,116 +2117,128 @@ String lcl_GetDimName( const uno::Reference<sheet::XDimensionsSupplier>& xSource return aName; } -// static -void ScDPObject::ConvertOrientation( ScDPSaveData& rSaveData, - PivotField* pFields, SCSIZE nCount, USHORT nOrient, - ScDocument* pDoc, SCROW nRow, SCTAB nTab, - const uno::Reference<sheet::XDimensionsSupplier>& xSource, - BOOL bOldDefaults, - PivotField* pRefColFields, SCSIZE nRefColCount, - PivotField* pRefRowFields, SCSIZE nRefRowCount, - PivotField* pRefPageFields, SCSIZE nRefPageCount ) +bool hasFieldColumn(const vector<PivotField>* pRefFields, SCCOL nCol) { - // pDoc or xSource must be set - DBG_ASSERT( pDoc || xSource.is(), "missing string source" ); + if (!pRefFields) + return false; + + vector<PivotField>::const_iterator itr = pRefFields->begin(), itrEnd = pRefFields->end(); + for (; itr != itrEnd; ++itr) + { + if (itr->nCol == nCol) + // This array of fields contains the specified column. + return true; + } + return false; +} - String aDocStr; - ScDPSaveDimension* pDim; +} - for (SCSIZE i=0; i<nCount; i++) +void ScDPObject::ConvertOrientation( + ScDPSaveData& rSaveData, const vector<PivotField>& rFields, USHORT nOrient, + const Reference<XDimensionsSupplier>& xSource, + vector<PivotField>* pRefColFields, vector<PivotField>* pRefRowFields, vector<PivotField>* pRefPageFields ) +{ + // xSource must be set + DBG_ASSERT( xSource.is(), "missing string source" ); + + vector<PivotField>::const_iterator itr, itrBeg = rFields.begin(), itrEnd = rFields.end(); + for (itr = itrBeg; itr != itrEnd; ++itr) { - SCCOL nCol = pFields[i].nCol; - USHORT nFuncs = pFields[i].nFuncMask; - const sheet::DataPilotFieldReference& rFieldRef = pFields[i].maFieldRef; + const PivotField& rField = *itr; + + SCCOL nCol = rField.nCol; + USHORT nFuncs = rField.nFuncMask; + const sheet::DataPilotFieldReference& rFieldRef = rField.maFieldRef; + ScDPSaveDimension* pDim = NULL; if ( nCol == PIVOT_DATA_FIELD ) pDim = rSaveData.GetDataLayoutDimension(); else { - if ( pDoc ) - pDoc->GetString( nCol, nRow, nTab, aDocStr ); - else - aDocStr = lcl_GetDimName( xSource, nCol ); // cols must start at 0 - + String aDocStr = lcl_GetDimName( xSource, nCol ); // cols must start at 0 if ( aDocStr.Len() ) pDim = rSaveData.GetDimensionByName(aDocStr); else pDim = NULL; } - if ( pDim ) + if (!pDim) + continue; + + if ( nOrient == sheet::DataPilotFieldOrientation_DATA ) // set summary function { - if ( nOrient == sheet::DataPilotFieldOrientation_DATA ) // set summary function - { - // generate an individual entry for each function - BOOL bFirst = TRUE; - - // if a dimension is used for column/row/page and data, - // use duplicated dimensions for all data occurrences - if (pRefColFields) - for (SCSIZE nRefCol=0; nRefCol<nRefColCount; nRefCol++) - if (pRefColFields[nRefCol].nCol == nCol) - bFirst = FALSE; - if (pRefRowFields) - for (SCSIZE nRefRow=0; nRefRow<nRefRowCount; nRefRow++) - if (pRefRowFields[nRefRow].nCol == nCol) - bFirst = FALSE; - if (pRefPageFields) - for (USHORT nRefPage=0; nRefPage<nRefPageCount; ++nRefPage) - if (pRefPageFields[nRefPage].nCol == nCol) - bFirst = FALSE; + // generate an individual entry for each function + bool bFirst = true; + + // if a dimension is used for column/row/page and data, + // use duplicated dimensions for all data occurrences + if (hasFieldColumn(pRefColFields, nCol)) + bFirst = false; + + if (bFirst && hasFieldColumn(pRefRowFields, nCol)) + bFirst = false; + + if (bFirst && hasFieldColumn(pRefPageFields, nCol)) + bFirst = false; + if (bFirst) + { // if set via api, a data column may occur several times // (if the function hasn't been changed yet) -> also look for duplicate data column - for (SCSIZE nPrevData=0; nPrevData<i; nPrevData++) - if (pFields[nPrevData].nCol == nCol) - bFirst = FALSE; - - USHORT nMask = 1; - for (USHORT nBit=0; nBit<16; nBit++) + for (vector<PivotField>::const_iterator itr2 = itrBeg; itr2 != itr; ++itr2) { - if ( nFuncs & nMask ) + if (itr2->nCol == nCol) { - sheet::GeneralFunction eFunc = ScDataPilotConversion::FirstFunc( nMask ); - ScDPSaveDimension* pCurrDim = bFirst ? pDim : rSaveData.DuplicateDimension(pDim->GetName()); - pCurrDim->SetOrientation( nOrient ); - pCurrDim->SetFunction( sal::static_int_cast<USHORT>(eFunc) ); - - if( rFieldRef.ReferenceType == sheet::DataPilotFieldReferenceType::NONE ) - pCurrDim->SetReferenceValue( 0 ); - else - pCurrDim->SetReferenceValue( &rFieldRef ); - - bFirst = FALSE; + bFirst = false; + break; } - nMask *= 2; } } - else // set SubTotals - { - pDim->SetOrientation( nOrient ); - USHORT nFuncArray[16]; - USHORT nFuncCount = 0; - USHORT nMask = 1; - for (USHORT nBit=0; nBit<16; nBit++) + USHORT nMask = 1; + for (USHORT nBit=0; nBit<16; nBit++) + { + if ( nFuncs & nMask ) { - if ( nFuncs & nMask ) - nFuncArray[nFuncCount++] = sal::static_int_cast<USHORT>(ScDataPilotConversion::FirstFunc( nMask )); - nMask *= 2; + sheet::GeneralFunction eFunc = ScDataPilotConversion::FirstFunc( nMask ); + ScDPSaveDimension* pCurrDim = bFirst ? pDim : rSaveData.DuplicateDimension(pDim->GetName()); + pCurrDim->SetOrientation( nOrient ); + pCurrDim->SetFunction( sal::static_int_cast<USHORT>(eFunc) ); + + if( rFieldRef.ReferenceType == sheet::DataPilotFieldReferenceType::NONE ) + pCurrDim->SetReferenceValue( 0 ); + else + pCurrDim->SetReferenceValue( &rFieldRef ); + + bFirst = false; } - pDim->SetSubTotals( nFuncCount, nFuncArray ); + nMask *= 2; + } + } + else // set SubTotals + { + pDim->SetOrientation( nOrient ); - // ShowEmpty was implicit in old tables, - // must be set for data layout dimension (not accessible in dialog) - if ( bOldDefaults || nCol == PIVOT_DATA_FIELD ) - pDim->SetShowEmpty( TRUE ); + USHORT nFuncArray[16]; + USHORT nFuncCount = 0; + USHORT nMask = 1; + for (USHORT nBit=0; nBit<16; nBit++) + { + if ( nFuncs & nMask ) + nFuncArray[nFuncCount++] = sal::static_int_cast<USHORT>(ScDataPilotConversion::FirstFunc( nMask )); + nMask *= 2; } + pDim->SetSubTotals( nFuncCount, nFuncArray ); + + // ShowEmpty was implicit in old tables, + // must be set for data layout dimension (not accessible in dialog) + if ( nCol == PIVOT_DATA_FIELD ) + pDim->SetShowEmpty( TRUE ); } } } -// static bool ScDPObject::IsOrientationAllowed( USHORT nOrient, sal_Int32 nDimFlags ) { bool bAllowed = true; @@ -2268,7 +2266,6 @@ bool ScDPObject::IsOrientationAllowed( USHORT nOrient, sal_Int32 nDimFlags ) // ----------------------------------------------------------------------- -// static BOOL ScDPObject::HasRegisteredSources() { BOOL bFound = FALSE; @@ -2278,7 +2275,7 @@ BOOL ScDPObject::HasRegisteredSources() if ( xEnAc.is() ) { uno::Reference<container::XEnumeration> xEnum = xEnAc->createContentEnumeration( - rtl::OUString::createFromAscii( SCDPSOURCE_SERVICE ) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCDPSOURCE_SERVICE )) ); if ( xEnum.is() && xEnum->hasMoreElements() ) bFound = TRUE; } @@ -2286,10 +2283,8 @@ BOOL ScDPObject::HasRegisteredSources() return bFound; } -// static uno::Sequence<rtl::OUString> ScDPObject::GetRegisteredSources() { - long nCount = 0; uno::Sequence<rtl::OUString> aSeq(0); // use implementation names... @@ -2299,9 +2294,10 @@ uno::Sequence<rtl::OUString> ScDPObject::GetRegisteredSources() if ( xEnAc.is() ) { uno::Reference<container::XEnumeration> xEnum = xEnAc->createContentEnumeration( - rtl::OUString::createFromAscii( SCDPSOURCE_SERVICE ) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCDPSOURCE_SERVICE )) ); if ( xEnum.is() ) { + long nCount = 0; while ( xEnum->hasMoreElements() ) { uno::Any aAddInAny = xEnum->nextElement(); @@ -2332,7 +2328,6 @@ uno::Sequence<rtl::OUString> ScDPObject::GetRegisteredSources() // use getContext from addincol.cxx uno::Reference<uno::XComponentContext> getContext(uno::Reference<lang::XMultiServiceFactory> xMSF); -// static uno::Reference<sheet::XDimensionsSupplier> ScDPObject::CreateSource( const ScDPServiceDesc& rDesc ) { rtl::OUString aImplName = rDesc.aServiceName; @@ -2343,7 +2338,7 @@ uno::Reference<sheet::XDimensionsSupplier> ScDPObject::CreateSource( const ScDPS if ( xEnAc.is() ) { uno::Reference<container::XEnumeration> xEnum = xEnAc->createContentEnumeration( - rtl::OUString::createFromAscii( SCDPSOURCE_SERVICE ) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCDPSOURCE_SERVICE )) ); if ( xEnum.is() ) { while ( xEnum->hasMoreElements() && !xRet.is() ) @@ -2411,103 +2406,130 @@ ScDPCollection::ScDPCollection(ScDocument* pDocument) : } ScDPCollection::ScDPCollection(const ScDPCollection& r) : - ScCollection(r), - pDoc(r.pDoc) + pDoc(r.pDoc), + maDPDataCaches(r.maDPDataCaches) { } ScDPCollection::~ScDPCollection() { -} - -ScDataObject* ScDPCollection::Clone() const -{ - return new ScDPCollection(*this); + maTables.clear(); } void ScDPCollection::DeleteOnTab( SCTAB nTab ) { - USHORT nPos = 0; - while ( nPos < nCount ) +#ifdef STLPORT_WORKAROUND + // We do this only because STLPort crashes when erasing an element when + // the container only contains one element. + if (maTables.size() == 1) { - // look for output positions on the deleted sheet - if ( static_cast<const ScDPObject*>(At(nPos))->GetOutRange().aStart.Tab() == nTab ) - AtFree(nPos); + if (maTables.back().GetOutRange().aStart.Tab() == nTab) + maTables.clear(); + return; + } +#endif + + TablesType::iterator itr = maTables.begin(), itrEnd = maTables.end(); + while (itr != itrEnd) + { + const ScDPObject& rObj = *itr; + if (rObj.GetOutRange().aStart.Tab() == nTab) + // returns the next position after the erased element. + itr = maTables.erase(itr); else - ++nPos; + ++itr; } } void ScDPCollection::UpdateReference( UpdateRefMode eUpdateRefMode, const ScRange& r, SCsCOL nDx, SCsROW nDy, SCsTAB nDz ) { - for (USHORT i=0; i<nCount; i++) - ((ScDPObject*)At(i))->UpdateReference( eUpdateRefMode, r, nDx, nDy, nDz ); + TablesType::iterator itr = maTables.begin(), itrEnd = maTables.end(); + for (; itr != itrEnd; ++itr) + itr->UpdateReference(eUpdateRefMode, r, nDx, nDy, nDz); } -BOOL ScDPCollection::RefsEqual( const ScDPCollection& r ) const +bool ScDPCollection::RefsEqual( const ScDPCollection& r ) const { - if ( nCount != r.nCount ) - return FALSE; + if (maTables.size() != r.maTables.size()) + return false; - for (USHORT i=0; i<nCount; i++) - if ( ! ((const ScDPObject*)At(i))->RefsEqual( *((const ScDPObject*)r.At(i)) ) ) - return FALSE; + TablesType::const_iterator itr = maTables.begin(), itr2 = r.maTables.begin(), itrEnd = maTables.end(); + for (; itr != itrEnd; ++itr, ++itr2) + if (!itr->RefsEqual(*itr2)) + return false; - return TRUE; // all equal + return true; } void ScDPCollection::WriteRefsTo( ScDPCollection& r ) const { - if ( nCount == r.nCount ) + if ( maTables.size() == r.maTables.size() ) { //! assert equal names? - for (USHORT i=0; i<nCount; i++) - ((const ScDPObject*)At(i))->WriteRefsTo( *((ScDPObject*)r.At(i)) ); + TablesType::const_iterator itr = maTables.begin(), itrEnd = maTables.end(); + TablesType::iterator itr2 = r.maTables.begin(); + for (; itr != itrEnd; ++itr, ++itr2) + itr->WriteRefsTo(*itr2); } else { // #i8180# If data pilot tables were deleted with their sheet, // this collection contains extra entries that must be restored. // Matching objects are found by their names. - - DBG_ASSERT( nCount >= r.nCount, "WriteRefsTo: missing entries in document" ); - for (USHORT nSourcePos=0; nSourcePos<nCount; nSourcePos++) + size_t nSrcSize = maTables.size(); + size_t nDestSize = r.maTables.size(); + DBG_ASSERT( nSrcSize >= nDestSize, "WriteRefsTo: missing entries in document" ); + for (size_t nSrcPos = 0; nSrcPos < nSrcSize; ++nSrcPos) { - const ScDPObject* pSourceObj = static_cast<const ScDPObject*>(At(nSourcePos)); - String aName = pSourceObj->GetName(); + const ScDPObject& rSrcObj = maTables[nSrcPos]; + String aName = rSrcObj.GetName(); bool bFound = false; - for (USHORT nDestPos=0; nDestPos<r.nCount && !bFound; nDestPos++) + for (size_t nDestPos = 0; nDestPos < nDestSize && !bFound; ++nDestPos) { - ScDPObject* pDestObj = static_cast<ScDPObject*>(r.At(nDestPos)); - if ( pDestObj->GetName() == aName ) + ScDPObject& rDestObj = r.maTables[nDestPos]; + if (rDestObj.GetName() == aName) { - pSourceObj->WriteRefsTo( *pDestObj ); // found object, copy refs + rSrcObj.WriteRefsTo(rDestObj); // found object, copy refs bFound = true; } } - if ( !bFound ) + + if (!bFound) { // none found, re-insert deleted object (see ScUndoDataPilot::Undo) - ScDPObject* pDestObj = new ScDPObject( *pSourceObj ); - pDestObj->SetAlive(TRUE); - if ( !r.InsertNewTable(pDestObj) ) - { - DBG_ERROR("cannot insert DPObject"); - DELETEZ( pDestObj ); - } + ScDPObject* pDestObj = new ScDPObject(rSrcObj); + pDestObj->SetAlive(true); + r.InsertNewTable(pDestObj); } } - DBG_ASSERT( nCount == r.nCount, "WriteRefsTo: couldn't restore all entries" ); + DBG_ASSERT( maTables.size() == r.maTables.size(), "WriteRefsTo: couldn't restore all entries" ); } } -ScDPObject* ScDPCollection::GetByName(const String& rName) const +size_t ScDPCollection::GetCount() const +{ + return maTables.size(); +} + +ScDPObject* ScDPCollection::operator [](size_t nIndex) +{ + return &maTables[nIndex]; +} + +const ScDPObject* ScDPCollection::operator [](size_t nIndex) const +{ + return &maTables[nIndex]; +} + +const ScDPObject* ScDPCollection::GetByName(const String& rName) const { - for (USHORT i=0; i<nCount; i++) - if (static_cast<const ScDPObject*>(pItems[i])->GetName() == rName) - return static_cast<ScDPObject*>(pItems[i]); + TablesType::const_iterator itr = maTables.begin(), itrEnd = maTables.end(); + for (; itr != itrEnd; ++itr) + if (itr->GetName() == rName) + return &(*itr); + return NULL; } @@ -2516,24 +2538,27 @@ String ScDPCollection::CreateNewName( USHORT nMin ) const String aBase = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("DataPilot")); //! from Resource? - for (USHORT nAdd=0; nAdd<=nCount; nAdd++) // nCount+1 tries + size_t n = maTables.size(); + for (size_t nAdd = 0; nAdd <= n; ++nAdd) // nCount+1 tries { String aNewName = aBase; aNewName += String::CreateFromInt32( nMin + nAdd ); - BOOL bFound = FALSE; - for (USHORT i=0; i<nCount && !bFound; i++) - if (((const ScDPObject*)pItems[i])->GetName() == aNewName) - bFound = TRUE; + bool bFound = false; + TablesType::const_iterator itr = maTables.begin(), itrEnd = maTables.end(); + for (; itr != itrEnd; ++itr) + { + if (itr->GetName() == aNewName) + { + bFound = true; + break; + } + } if (!bFound) return aNewName; // found unused Name } return String(); // should not happen } - - -// Wang Xu Ming -- 2009-8-17 -// DataPilot Migration - Cache&&Performance long ScDPObject::GetCacheId() const { if ( GetSaveData() ) @@ -2555,10 +2580,11 @@ ULONG ScDPObject::RefreshCache() nErrId = pSheetDesc->CheckValidate( pDoc ); if ( nErrId == 0 ) { + ScDPCollection* pDPCollection = pDoc->GetDPCollection(); long nOldId = GetCacheId(); - long nNewId = pDoc->GetNewDPObjectCacheId(); + long nNewId = pDPCollection->GetNewDPObjectCacheId(); if ( nOldId >= 0 ) - pDoc->RemoveDPObjectCache( nOldId ); + pDPCollection->RemoveDPObjectCache( nOldId ); ScDPTableDataCache* pCache = NULL; if ( pSheetDesc ) @@ -2576,9 +2602,8 @@ ULONG ScDPObject::RefreshCache() nNewId = pCache->GetId(); bRefresh = TRUE; - ScDPCollection* pDPCollection = pDoc->GetDPCollection(); - USHORT nCount = pDPCollection->GetCount(); - for (USHORT i=0; i<nCount; i++) + size_t nCount = pDPCollection->GetCount(); + for (size_t i=0; i<nCount; ++i) { //set new cache id if ( (*pDPCollection)[i]->GetCacheId() == nOldId ) { @@ -2591,6 +2616,7 @@ ULONG ScDPObject::RefreshCache() } return nErrId; } + void ScDPObject::SetCacheId( long nCacheId ) { if ( GetCacheId() != nCacheId ) @@ -2602,11 +2628,6 @@ void ScDPObject::SetCacheId( long nCacheId ) mnCacheId = nCacheId; } } -const ScDPTableDataCache* ScDPObject::GetCache() const -{ - return pDoc->GetDPObjectCache( GetCacheId() ); -} -// End Comments void ScDPCollection::FreeTable(ScDPObject* pDPObj) { @@ -2614,20 +2635,37 @@ void ScDPCollection::FreeTable(ScDPObject* pDPObj) const ScAddress& s = rOutRange.aStart; const ScAddress& e = rOutRange.aEnd; pDoc->RemoveFlagsTab(s.Col(), s.Row(), e.Col(), e.Row(), s.Tab(), SC_MF_DP_TABLE); - Free(pDPObj); +#ifdef STLPORT_WORKAROUND + // We do this only because STLPort crashes when erasing an element when + // the container only contains one element. + if (maTables.size() == 1) + { + if (&maTables.back() == pDPObj) + maTables.clear(); + return; + } +#endif + TablesType::iterator itr = maTables.begin(), itrEnd = maTables.end(); + for (; itr != itrEnd; ++itr) + { + ScDPObject* p = &(*itr); + if (p == pDPObj) + { + maTables.erase(itr); + break; + } + } } bool ScDPCollection::InsertNewTable(ScDPObject* pDPObj) { - bool bSuccess = Insert(pDPObj); - if (bSuccess) - { - const ScRange& rOutRange = pDPObj->GetOutRange(); - const ScAddress& s = rOutRange.aStart; - const ScAddress& e = rOutRange.aEnd; - pDoc->ApplyFlagsTab(s.Col(), s.Row(), e.Col(), e.Row(), s.Tab(), SC_MF_DP_TABLE); - } - return bSuccess; + const ScRange& rOutRange = pDPObj->GetOutRange(); + const ScAddress& s = rOutRange.aStart; + const ScAddress& e = rOutRange.aEnd; + pDoc->ApplyFlagsTab(s.Col(), s.Row(), e.Col(), e.Row(), s.Tab(), SC_MF_DP_TABLE); + + maTables.push_back(pDPObj); + return true; } bool ScDPCollection::HasDPTable(SCCOL nCol, SCROW nRow, SCTAB nTab) const @@ -2641,5 +2679,81 @@ bool ScDPCollection::HasDPTable(SCCOL nCol, SCROW nRow, SCTAB nTab) const return pMergeAttr->HasDPTable(); } +ScDPTableDataCache* ScDPCollection::GetDPObjectCache( long nID ) +{ + DataCachesType::iterator itr = maDPDataCaches.begin(), itrEnd = maDPDataCaches.end(); + for (; itr != itrEnd; ++itr) + { + if ( nID == itr->GetId() ) + return &(*itr); + } + return NULL; +} + +ScDPTableDataCache* ScDPCollection::GetUsedDPObjectCache ( const ScRange& rRange ) +{ + ScDPTableDataCache* pCache = NULL; + for (size_t i=maTables.size(); i > 0 ; --i) + { + if ( const ScSheetSourceDesc* pUsedSheetDesc = maTables[i-1].GetSheetDesc() ) + if ( rRange == pUsedSheetDesc->aSourceRange ) + { + long nID = maTables[i-1].GetCacheId(); + if ( nID >= 0 ) + pCache= GetDPObjectCache( nID ); + if ( pCache ) + return pCache; + } + } + return pCache; +} + +long ScDPCollection::AddDPObjectCache( ScDPTableDataCache* pData ) +{ + if ( pData->GetId() < 0 ) + { //create a id for it + pData->SetId( GetNewDPObjectCacheId() ); + } + maDPDataCaches.push_back( pData ); + return pData->GetId(); +} + +void ScDPCollection::RemoveDPObjectCache( long nID ) +{ + DataCachesType::iterator itr = maDPDataCaches.begin(), itrEnd = maDPDataCaches.end(); + for (; itr != itrEnd; ++itr) + { + if ( nID == itr->GetId() ) + { + maDPDataCaches.erase(itr); + break; + } + } +} + +long ScDPCollection::GetNewDPObjectCacheId() +{ + long nID = 0; + + bool bFound = false; + DataCachesType::const_iterator itr, itrEnd = maDPDataCaches.end(); + do + { + for ( itr = maDPDataCaches.begin(); itr != itrEnd; ++itr ) + { + if ( nID == itr->GetId() ) + { + nID++; + bFound = true; + break; + } + } + if ( itr == itrEnd ) + bFound = false; + } + while ( bFound ); + + return nID; +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/data/dpoutput.cxx b/sc/source/core/data/dpoutput.cxx index 43b2e91ff18f..cb9a918098f7 100644 --- a/sc/source/core/data/dpoutput.cxx +++ b/sc/source/core/data/dpoutput.cxx @@ -29,8 +29,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sc.hxx" - - // INCLUDE --------------------------------------------------------------- #include "scitems.hxx" @@ -58,11 +56,8 @@ #include "scresid.hxx" #include "unonames.hxx" #include "sc.hrc" -// Wang Xu Ming -- 2009-8-17 -// DataPilot Migration - Cache&&Performance #include "scdpoutputimpl.hxx" #include "dpglobal.hxx" -// End Comments #include <com/sun/star/beans/XPropertySet.hpp> #include <vector> @@ -99,7 +94,6 @@ using ::rtl::OUString; //! dynamic!!! #define SC_DPOUT_MAXLEVELS 256 - struct ScDPOutLevelData { long nDim; @@ -122,7 +116,6 @@ struct ScDPOutLevelData ( nDimPos==r.nDimPos && nHier==r.nHier && nLevel<r.nLevel ); } void Swap(ScDPOutLevelData& r) -//! { ScDPOutLevelData aTemp = r; r = *this; *this = aTemp; } { ScDPOutLevelData aTemp; aTemp = r; r = *this; *this = aTemp; } //! bug (73840) in uno::Sequence - copy and then assign doesn't work! @@ -215,14 +208,14 @@ void lcl_FillNumberFormats( UINT32*& rFormats, long& rCount, { sheet::DataPilotFieldOrientation eDimOrient = (sheet::DataPilotFieldOrientation) ScUnoHelpFunctions::GetEnumProperty( - xDimProp, rtl::OUString::createFromAscii(DP_PROP_ORIENTATION), + xDimProp, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ORIENTATION)), sheet::DataPilotFieldOrientation_HIDDEN ); if ( eDimOrient == sheet::DataPilotFieldOrientation_DATA ) { aDataNames[nDataCount] = String( xDimName->getName() ); long nFormat = ScUnoHelpFunctions::GetLongProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_NUMBERFORMAT) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_NUMBERFORMAT)) ); nDataFormats[nDataCount] = nFormat; if ( nFormat != 0 ) bAnySet = TRUE; @@ -282,13 +275,13 @@ UINT32 lcl_GetFirstNumberFormat( const uno::Reference<container::XIndexAccess>& { sheet::DataPilotFieldOrientation eDimOrient = (sheet::DataPilotFieldOrientation) ScUnoHelpFunctions::GetEnumProperty( - xDimProp, rtl::OUString::createFromAscii(DP_PROP_ORIENTATION), + xDimProp, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ORIENTATION)), sheet::DataPilotFieldOrientation_HIDDEN ); if ( eDimOrient == sheet::DataPilotFieldOrientation_DATA ) { long nFormat = ScUnoHelpFunctions::GetLongProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_NUMBERFORMAT) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_NUMBERFORMAT)) ); return nFormat; // use format from first found data dimension } @@ -330,7 +323,7 @@ uno::Sequence<sheet::MemberResult> lcl_GetSelectedPageAsResult( const uno::Refer { //! merge with ScDPDimension::setPropertyValue? - uno::Any aValue = xDimProp->getPropertyValue( rtl::OUString::createFromAscii(DP_PROP_FILTER) ); + uno::Any aValue = xDimProp->getPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_FILTER)) ); uno::Sequence<sheet::TableFilterField> aSeq; if (aValue >>= aSeq) @@ -402,15 +395,15 @@ ScDPOutput::ScDPOutput( ScDocument* pD, const uno::Reference<sheet::XDimensionsS { sheet::DataPilotFieldOrientation eDimOrient = (sheet::DataPilotFieldOrientation) ScUnoHelpFunctions::GetEnumProperty( - xDimProp, rtl::OUString::createFromAscii(DP_PROP_ORIENTATION), + xDimProp, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ORIENTATION)), sheet::DataPilotFieldOrientation_HIDDEN ); long nDimPos = ScUnoHelpFunctions::GetLongProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_POSITION) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_POSITION)) ); BOOL bIsDataLayout = ScUnoHelpFunctions::GetBoolProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_ISDATALAYOUT) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ISDATALAYOUT)) ); bool bHasHiddenMember = ScUnoHelpFunctions::GetBoolProperty( - xDimProp, OUString::createFromAscii(SC_UNO_HAS_HIDDEN_MEMBER)); + xDimProp, OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_HAS_HIDDEN_MEMBER))); if ( eDimOrient != sheet::DataPilotFieldOrientation_HIDDEN ) { @@ -418,7 +411,7 @@ ScDPOutput::ScDPOutput( ScDocument* pD, const uno::Reference<sheet::XDimensionsS new ScNameToIndexAccess( xDimSupp->getHierarchies() ); long nHierarchy = ScUnoHelpFunctions::GetLongProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_USEDHIERARCHY) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_USEDHIERARCHY)) ); if ( nHierarchy >= xHiers->getCount() ) nHierarchy = 0; @@ -447,7 +440,7 @@ ScDPOutput::ScDPOutput( ScDocument* pD, const uno::Reference<sheet::XDimensionsS // #i108948# use ScUnoHelpFunctions::GetStringProperty, because // LayoutName is new and may not be present in external implementation OUString aCaption = ScUnoHelpFunctions::GetStringProperty( xPropSet, - OUString::createFromAscii(SC_UNO_LAYOUTNAME), aName ); + OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_LAYOUTNAME)), aName ); bool bRowFieldHasMember = false; switch ( eDimOrient ) @@ -546,7 +539,7 @@ ScDPOutput::ScDPOutput( ScDocument* pD, const uno::Reference<sheet::XDimensionsS try { uno::Any aAny = xSrcProp->getPropertyValue( - rtl::OUString::createFromAscii(SC_UNO_DATADESC) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_DATADESC)) ); rtl::OUString aUStr; aAny >>= aUStr; aDataDescription = String( aUStr ); @@ -611,11 +604,6 @@ void ScDPOutput::DataCell( SCCOL nCol, SCROW nRow, SCTAB nTab, const sheet::Data if ( nFormat != 0 ) pDoc->ApplyAttr( nCol, nRow, nTab, SfxUInt32Item( ATTR_VALUE_FORMAT, nFormat ) ); } - else - { - //pDoc->SetString( nCol, nRow, nTab, EMPTY_STRING ); - } - // SubTotal formatting is controlled by headers } @@ -634,28 +622,16 @@ void ScDPOutput::HeaderCell( SCCOL nCol, SCROW nRow, SCTAB nTab, { pDoc->SetString( nCol, nRow, nTab, aCaptionBuf.makeStringAndClear() ); } - else - { - //pDoc->SetString( nCol, nRow, nTab, EMPTY_STRING ); - } if ( nFlags & sheet::MemberResultFlags::SUBTOTAL ) { -// SvxWeightItem aItem( WEIGHT_BOLD ); // weight is in the style - // Wang Xu Ming -- 2009-8-17 - // DataPilot Migration - Cache&&Performance OutputImpl outputimp( pDoc, nTab, nTabStartCol, nTabStartRow, nMemberStartCol, nMemberStartRow, nDataStartCol, nDataStartRow, nTabEndCol, nTabEndRow ); - // End Comments //! limit frames to horizontal or vertical? if (bColHeader) { - // Wang Xu Ming -- 2009-8-17 - // DataPilot Migration - Cache&&Performance - //lcl_SetFrame( pDoc,nTab, nCol,nMemberStartRow+(SCROW)nLevel, nCol,nTabEndRow, SC_DP_FRAME_INNER_BOLD ); outputimp.OutputBlockFrame( nCol,nMemberStartRow+(SCROW)nLevel, nCol,nDataStartRow-1 ); - // End Comments lcl_SetStyleById( pDoc,nTab, nCol,nMemberStartRow+(SCROW)nLevel, nCol,nDataStartRow-1, STR_PIVOT_STYLE_TITLE ); @@ -664,11 +640,7 @@ void ScDPOutput::HeaderCell( SCCOL nCol, SCROW nRow, SCTAB nTab, } else { - // Wang Xu Ming -- 2009-8-17 - // DataPilot Migration - Cache&&Performance - //lcl_SetFrame( pDoc,nTab, nMemberStartCol+(USHORT)nLevel,nRow, nTabEndCol,nRow, SC_DP_FRAME_INNER_BOLD ); outputimp.OutputBlockFrame( nMemberStartCol+(SCCOL)nLevel,nRow, nDataStartCol-1,nRow ); - // End Comments lcl_SetStyleById( pDoc,nTab, nMemberStartCol+(SCCOL)nLevel,nRow, nDataStartCol-1,nRow, STR_PIVOT_STYLE_TITLE ); lcl_SetStyleById( pDoc,nTab, nDataStartCol,nRow, nTabEndCol,nRow, @@ -873,12 +845,9 @@ void ScDPOutput::Output() STR_PIVOT_STYLE_INNER ); // output column headers: - // Wang Xu Ming -- 2009-8-17 - // DataPilot Migration - Cache&&Performance OutputImpl outputimp( pDoc, nTab, nTabStartCol, nTabStartRow, nMemberStartCol, nMemberStartRow, nDataStartCol, nDataStartRow, nTabEndCol, nTabEndRow ); - // End Comments for (nField=0; nField<nColFieldCount; nField++) { SCCOL nHdrCol = nDataStartCol + (SCCOL)nField; //! check for overflow @@ -893,8 +862,6 @@ void ScDPOutput::Output() { SCCOL nColPos = nDataStartCol + (SCCOL)nCol; //! check for overflow HeaderCell( nColPos, nRowPos, nTab, pArray[nCol], TRUE, nField ); - // Wang Xu Ming -- 2009-8-17 - // DataPilot Migration - Cache&&Performance if ( ( pArray[nCol].Flags & sheet::MemberResultFlags::HASMEMBER ) && !( pArray[nCol].Flags & sheet::MemberResultFlags::SUBTOTAL ) ) { @@ -904,8 +871,6 @@ void ScDPOutput::Output() SCCOL nEndColPos = nDataStartCol + (SCCOL)nEnd; //! check for overflow if ( nField+1 < nColFieldCount ) { - // lcl_SetFrame( pDoc,nTab, nColPos,nRowPos, nEndColPos,nRowPos, SC_DP_FRAME_INNER_BOLD ); - // lcl_SetFrame( pDoc,nTab, nColPos,nRowPos, nEndColPos,nTabEndRow, SC_DP_FRAME_INNER_BOLD ); if ( nField == nColFieldCount - 2 ) { outputimp.AddCol( nColPos ); @@ -925,7 +890,6 @@ void ScDPOutput::Output() } if ( nField== 0 && nColFieldCount == 1 ) outputimp.OutputBlockFrame( nDataStartCol,nTabStartRow, nTabEndCol,nRowPos-1 ); - // End Comments } // output row headers: @@ -958,10 +922,6 @@ void ScDPOutput::Output() while ( nEnd+1 < nThisRowCount && ( pArray[nEnd+1].Flags & sheet::MemberResultFlags::CONTINUE ) ) ++nEnd; SCROW nEndRowPos = nDataStartRow + (SCROW)nEnd; //! check for overflow - // Wang Xu Ming -- 2009-8-17 - // DataPilot Migration - Cache&&Performance - // lcl_SetFrame( pDoc,nTab, nColPos,nRowPos, nColPos,nEndRowPos, SC_DP_FRAME_INNER_BOLD ); - //lcl_SetFrame( pDoc,nTab, nColPos,nRowPos, nTabEndCol,nEndRowPos, SC_DP_FRAME_INNER_BOLD ); outputimp.AddRow( nRowPos ); if ( vbSetBorder[ nRow ] == FALSE ) { @@ -972,25 +932,18 @@ void ScDPOutput::Output() if ( nField == nRowFieldCount - 2 ) outputimp.OutputBlockFrame( nColPos+1, nRowPos, nColPos+1, nEndRowPos ); - // End Comments lcl_SetStyleById( pDoc, nTab, nColPos,nRowPos, nDataStartCol-1,nEndRowPos, STR_PIVOT_STYLE_CATEGORY ); } else lcl_SetStyleById( pDoc, nTab, nColPos,nRowPos, nDataStartCol-1,nRowPos, STR_PIVOT_STYLE_CATEGORY ); } - // Wang Xu Ming -- 2009-8-17 - // DataPilot Migration - Cache&&Performance else if ( pArray[nRow].Flags & sheet::MemberResultFlags::SUBTOTAL ) outputimp.AddRow( nRowPos ); - // End Comments } } -// Wang Xu Ming -- 2009-8-17 -// DataPilot Migration - Cache&&Performance outputimp.OutputDataArea(); -// End Comments } ScRange ScDPOutput::GetOutputRange( sal_Int32 nRegionType ) @@ -999,12 +952,6 @@ ScRange ScDPOutput::GetOutputRange( sal_Int32 nRegionType ) CalcSizes(); -// fprintf(stdout, "ScDPOutput::GetOutputRange: aStartPos = (%ld, %d)\n", aStartPos.Row(), aStartPos.Col());fflush(stdout); -// fprintf(stdout, "ScDPOutput::GetOutputRange: nTabStart (Row = %ld, Col = %ld)\n", nTabStartRow, nTabStartCol);fflush(stdout); -// fprintf(stdout, "ScDPOutput::GetOutputRange: nMemberStart (Row = %ld, Col = %ld)\n", nMemberStartRow, nMemberStartCol);fflush(stdout); -// fprintf(stdout, "ScDPOutput::GetOutputRange: nDataStart (Row = %ld, Col = %ld)\n", nDataStartRow, nDataStartCol);fflush(stdout); -// fprintf(stdout, "ScDPOutput::GetOutputRange: nTabEnd (Row = %ld, Col = %ld)\n", nTabEndRow, nTabStartCol);fflush(stdout); - SCTAB nTab = aStartPos.Tab(); switch (nRegionType) { @@ -1019,7 +966,7 @@ ScRange ScDPOutput::GetOutputRange( sal_Int32 nRegionType ) return ScRange(aStartPos.Col(), aStartPos.Row(), nTab, nTabEndCol, nTabEndRow, nTab); } -BOOL ScDPOutput::HasError() +bool ScDPOutput::HasError() { CalcSizes(); @@ -1101,12 +1048,12 @@ void lcl_GetTableVars( sal_Int32& rGrandTotalCols, sal_Int32& rGrandTotalRows, s uno::Reference<beans::XPropertySet> xSrcProp( xSource, uno::UNO_QUERY ); BOOL bColGrand = ScUnoHelpFunctions::GetBoolProperty( xSrcProp, - rtl::OUString::createFromAscii(DP_PROP_COLUMNGRAND) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_COLUMNGRAND)) ); if ( bColGrand ) rGrandTotalCols = 1; // default if data layout not in columns BOOL bRowGrand = ScUnoHelpFunctions::GetBoolProperty( xSrcProp, - rtl::OUString::createFromAscii(DP_PROP_ROWGRAND) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ROWGRAND)) ); if ( bRowGrand ) rGrandTotalRows = 1; // default if data layout not in rows @@ -1127,10 +1074,10 @@ void lcl_GetTableVars( sal_Int32& rGrandTotalCols, sal_Int32& rGrandTotalRows, s { sheet::DataPilotFieldOrientation eDimOrient = (sheet::DataPilotFieldOrientation) ScUnoHelpFunctions::GetEnumProperty( - xDimProp, rtl::OUString::createFromAscii(DP_PROP_ORIENTATION), + xDimProp, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ORIENTATION)), sheet::DataPilotFieldOrientation_HIDDEN ); if ( ScUnoHelpFunctions::GetBoolProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_ISDATALAYOUT) ) ) + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ISDATALAYOUT)) ) ) { rDataLayoutIndex = nDim; rDataOrient = eDimOrient; @@ -1188,7 +1135,7 @@ void ScDPOutput::GetPositionData(const ScAddress& rPos, DataPilotTablePositionDa if (xPropSet.is()) { sal_Int32 nDataFieldCount = ScUnoHelpFunctions::GetLongProperty( xPropSet, - rtl::OUString::createFromAscii(SC_UNO_DATAFIELDCOUNT) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_DATAFIELDCOUNT)) ); if (nDataFieldCount > 0) aResData.DataFieldIndex = (nRow - nDataStartRow) % nDataFieldCount; } @@ -1270,7 +1217,7 @@ bool ScDPOutput::GetDataResultPositionData(vector<sheet::DataPilotFieldFilter>& return false; sal_Int32 nDataFieldCount = ScUnoHelpFunctions::GetLongProperty( xPropSet, - rtl::OUString::createFromAscii(SC_UNO_DATAFIELDCOUNT) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_DATAFIELDCOUNT)) ); if (nDataFieldCount == 0) // No data field is present in this datapilot table. return false; @@ -1450,7 +1397,7 @@ uno::Sequence<sheet::GeneralFunction> lcl_GetSubTotals( { try { - uno::Any aValue = xLevelProp->getPropertyValue( rtl::OUString::createFromAscii(DP_PROP_SUBTOTALS) ); + uno::Any aValue = xLevelProp->getPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_SUBTOTALS)) ); aValue >>= aSubTotals; } catch(uno::Exception&) @@ -1690,7 +1637,6 @@ String lcl_GetDataFieldName( const String& rSourceName, sheet::GeneralFunction e return aRet; } -// static void ScDPOutput::GetDataDimensionNames( String& rSourceName, String& rGivenName, const uno::Reference<uno::XInterface>& xDim ) { @@ -1707,7 +1653,7 @@ void ScDPOutput::GetDataDimensionNames( String& rSourceName, String& rGivenName, //! Should use a stored name when available sheet::GeneralFunction eFunc = (sheet::GeneralFunction)ScUnoHelpFunctions::GetEnumProperty( - xDimProp, rtl::OUString::createFromAscii(DP_PROP_FUNCTION), + xDimProp, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_FUNCTION)), sheet::GeneralFunction_NONE ); rGivenName = lcl_GetDataFieldName( rSourceName, eFunc ); } @@ -2059,5 +2005,4 @@ BOOL ScDPOutput::GetHeaderDrag( const ScAddress& rPos, BOOL bMouseLeft, BOOL bMo } - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/data/dpsave.cxx b/sc/source/core/data/dpsave.cxx index f6f6cf216c76..e501f492addb 100644 --- a/sc/source/core/data/dpsave.cxx +++ b/sc/source/core/data/dpsave.cxx @@ -55,15 +55,12 @@ #include <com/sun/star/sheet/XMembersSupplier.hpp> #include <com/sun/star/container/XNamed.hpp> #include <com/sun/star/util/XCloneable.hpp> -// Wang Xu Ming -- 2009-8-17 -// DataPilot Migration - Cache&&Performance #include "dptabsrc.hxx" #include "dpglobal.hxx" using namespace ScDPGlobal; #include <com/sun/star/sheet/DataPilotFieldReferenceType.hpp> #include <com/sun/star/sheet/DataPilotFieldReferenceItemType.hpp> using namespace com::sun::star::sheet; -// End Comments #include <hash_map> @@ -178,11 +175,11 @@ void ScDPSaveMember::WriteToSource( const uno::Reference<uno::XInterface>& xMemb if ( nVisibleMode != SC_DPSAVEMODE_DONTKNOW ) lcl_SetBoolProperty( xMembProp, - rtl::OUString::createFromAscii(DP_PROP_ISVISIBLE), (BOOL)nVisibleMode ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ISVISIBLE)), (BOOL)nVisibleMode ); if ( nShowDetailsMode != SC_DPSAVEMODE_DONTKNOW ) lcl_SetBoolProperty( xMembProp, - rtl::OUString::createFromAscii(DP_PROP_SHOWDETAILS), (BOOL)nShowDetailsMode ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_SHOWDETAILS)), (BOOL)nShowDetailsMode ); if (mpLayoutName.get()) ScUnoHelpFunctions::SetOptionalPropertyValue(xMembProp, SC_UNO_LAYOUTNAME, *mpLayoutName); @@ -236,7 +233,7 @@ ScDPSaveDimension::ScDPSaveDimension(const ScDPSaveDimension& r) : pSubTotalFuncs[nSub] = r.pSubTotalFuncs[nSub]; } - for (MemberList::const_iterator i=r.maMemberList.begin(); i != r.maMemberList.end() ; i++) + for (MemberList::const_iterator i=r.maMemberList.begin(); i != r.maMemberList.end() ; ++i) { const String& rName = (*i)->GetName(); ScDPSaveMember* pNew = new ScDPSaveMember( **i ); @@ -271,7 +268,7 @@ ScDPSaveDimension::ScDPSaveDimension(const ScDPSaveDimension& r) : ScDPSaveDimension::~ScDPSaveDimension() { - for (MemberHash::const_iterator i=maMemberHash.begin(); i != maMemberHash.end() ; i++) + for (MemberHash::const_iterator i=maMemberHash.begin(); i != maMemberHash.end() ; ++i) delete i->second; delete pReferenceValue; delete pSortInfo; @@ -569,22 +566,22 @@ void ScDPSaveDimension::WriteToSource( const uno::Reference<uno::XInterface>& xD sheet::DataPilotFieldOrientation eOrient = (sheet::DataPilotFieldOrientation)nOrientation; aAny <<= eOrient; - xDimProp->setPropertyValue( rtl::OUString::createFromAscii(DP_PROP_ORIENTATION), aAny ); + xDimProp->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ORIENTATION)), aAny ); sheet::GeneralFunction eFunc = (sheet::GeneralFunction)nFunction; aAny <<= eFunc; - xDimProp->setPropertyValue( rtl::OUString::createFromAscii(DP_PROP_FUNCTION), aAny ); + xDimProp->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_FUNCTION)), aAny ); if ( nUsedHierarchy >= 0 ) { aAny <<= (INT32)nUsedHierarchy; - xDimProp->setPropertyValue( rtl::OUString::createFromAscii(DP_PROP_USEDHIERARCHY), aAny ); + xDimProp->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_USEDHIERARCHY)), aAny ); } if ( pReferenceValue ) { aAny <<= *pReferenceValue; - xDimProp->setPropertyValue( rtl::OUString::createFromAscii(SC_UNO_REFVALUE), aAny ); + xDimProp->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_REFVALUE)), aAny ); } uno::Sequence<sheet::TableFilterField> aFilter; @@ -657,11 +654,11 @@ void ScDPSaveDimension::WriteToSource( const uno::Reference<uno::XInterface>& xD for (long i=0; i<nSubTotalCount; i++) pArray[i] = (sheet::GeneralFunction)pSubTotalFuncs[i]; aAny <<= aSeq; - xLevProp->setPropertyValue( rtl::OUString::createFromAscii(DP_PROP_SUBTOTALS), aAny ); + xLevProp->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_SUBTOTALS)), aAny ); } if ( nShowEmptyMode != SC_DPSAVEMODE_DONTKNOW ) lcl_SetBoolProperty( xLevProp, - rtl::OUString::createFromAscii(DP_PROP_SHOWEMPTY), (BOOL)nShowEmptyMode ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_SHOWEMPTY)), (BOOL)nShowEmptyMode ); if ( pSortInfo ) ScUnoHelpFunctions::SetOptionalPropertyValue(xLevProp, SC_UNO_SORTING, *pSortInfo); @@ -687,7 +684,7 @@ void ScDPSaveDimension::WriteToSource( const uno::Reference<uno::XInterface>& xD if ( !pSortInfo || pSortInfo->Mode == sheet::DataPilotFieldSortMode::MANUAL ) nPosition = 0; - for (MemberList::const_iterator i=maMemberList.begin(); i != maMemberList.end() ; i++) + for (MemberList::const_iterator i=maMemberList.begin(); i != maMemberList.end() ; ++i) { ScDPSaveMember* pMember = *i; if (!pMember->GetIsVisible()) @@ -750,10 +747,7 @@ ScDPSaveData::ScDPSaveData() : nRepeatEmptyMode( SC_DPSAVEMODE_DONTKNOW ), bFilterButton( TRUE ), bDrillDown( TRUE ), - // Wang Xu Ming -- 2009-8-17 - // DataPilot Migration - Cache&&Performance mnCacheId( -1), - // End Comments mbDimensionMembersBuilt(false), mpGrandTotalName(NULL) { @@ -766,10 +760,7 @@ ScDPSaveData::ScDPSaveData(const ScDPSaveData& r) : nRepeatEmptyMode( r.nRepeatEmptyMode ), bFilterButton( r.bFilterButton ), bDrillDown( r.bDrillDown ), - // Wang Xu Ming -- 2009-8-17 - // DataPilot Migration - Cache&&Performance mnCacheId( r.mnCacheId ), - // End Comments mbDimensionMembersBuilt(r.mbDimensionMembersBuilt), mpGrandTotalName(NULL) { @@ -793,11 +784,8 @@ ScDPSaveData& ScDPSaveData::operator= ( const ScDPSaveData& r ) { if ( &r != this ) { - // Wang Xu Ming -- 2009-8-17 - // DataPilot Migration - Cache&&Performance this->~ScDPSaveData(); new( this ) ScDPSaveData ( r ); - // End Comments } return *this; } @@ -809,7 +797,7 @@ BOOL ScDPSaveData::operator== ( const ScDPSaveData& r ) const nIgnoreEmptyMode != r.nIgnoreEmptyMode || nRepeatEmptyMode != r.nRepeatEmptyMode || bFilterButton != r.bFilterButton || - mnCacheId != r.mnCacheId ||/// Wang Xu Ming -- 2009-6-18 DataPilot Migration + mnCacheId != r.mnCacheId || bDrillDown != r.bDrillDown || mbDimensionMembersBuilt != r.mbDimensionMembersBuilt) return FALSE; @@ -1066,7 +1054,7 @@ void lcl_ResetOrient( const uno::Reference<sheet::XDimensionsSupplier>& xSource { uno::Any aAny; aAny <<= eOrient; - xDimProp->setPropertyValue( rtl::OUString::createFromAscii(DP_PROP_ORIENTATION), aAny ); + xDimProp->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ORIENTATION)), aAny ); } } } @@ -1089,10 +1077,10 @@ void ScDPSaveData::WriteToSource( const uno::Reference<sheet::XDimensionsSupplie { if ( nIgnoreEmptyMode != SC_DPSAVEMODE_DONTKNOW ) lcl_SetBoolProperty( xSourceProp, - rtl::OUString::createFromAscii(DP_PROP_IGNOREEMPTY), (BOOL)nIgnoreEmptyMode ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_IGNOREEMPTY)), (BOOL)nIgnoreEmptyMode ); if ( nRepeatEmptyMode != SC_DPSAVEMODE_DONTKNOW ) lcl_SetBoolProperty( xSourceProp, - rtl::OUString::createFromAscii(DP_PROP_REPEATIFEMPTY), (BOOL)nRepeatEmptyMode ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_REPEATIFEMPTY)), (BOOL)nRepeatEmptyMode ); } catch(uno::Exception&) { @@ -1139,7 +1127,7 @@ void ScDPSaveData::WriteToSource( const uno::Reference<sheet::XDimensionsSupplie if ( xDimProp.is() ) { bFound = ScUnoHelpFunctions::GetBoolProperty( xDimProp, - rtl::OUString::createFromAscii(DP_PROP_ISDATALAYOUT) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ISDATALAYOUT)) ); //! error checking -- is "IsDataLayoutDimension" property required?? } } @@ -1184,10 +1172,10 @@ void ScDPSaveData::WriteToSource( const uno::Reference<sheet::XDimensionsSupplie { if ( nColumnGrandMode != SC_DPSAVEMODE_DONTKNOW ) lcl_SetBoolProperty( xSourceProp, - rtl::OUString::createFromAscii(DP_PROP_COLUMNGRAND), (BOOL)nColumnGrandMode ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_COLUMNGRAND)), (BOOL)nColumnGrandMode ); if ( nRowGrandMode != SC_DPSAVEMODE_DONTKNOW ) lcl_SetBoolProperty( xSourceProp, - rtl::OUString::createFromAscii(DP_PROP_ROWGRAND), (BOOL)nRowGrandMode ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(DP_PROP_ROWGRAND)), (BOOL)nRowGrandMode ); } } catch(uno::Exception&) @@ -1451,11 +1439,11 @@ void ScDPSaveDimension::Refresh( const com::sun::star::uno::Reference< if ( pCache->GetIdByItemData( nSrcDim, aMemberName ) == -1 ) i = maMemberList.erase( i ); else - i++; + ++i; } } } -// End Comments + bool operator == (const ::com::sun::star::sheet::DataPilotFieldSortInfo &l, const ::com::sun::star::sheet::DataPilotFieldSortInfo &r ) { return l.Field == r.Field && l.IsAscending == r.IsAscending && l.Mode == r.Mode; diff --git a/sc/source/core/data/dpsdbtab.cxx b/sc/source/core/data/dpsdbtab.cxx index 6847b3aace87..22aad27efcc9 100644 --- a/sc/source/core/data/dpsdbtab.cxx +++ b/sc/source/core/data/dpsdbtab.cxx @@ -77,22 +77,19 @@ using ::com::sun::star::uno::UNO_QUERY; #define SC_DBPROP_COMMAND "Command" #define SC_DBPROP_COMMANDTYPE "CommandType" // ----------------------------------------------------------------------- -// Wang Xu Ming -- 2009-9-15 -// DataPilot Migration - Cache&&Performance ScDPTableDataCache* ScImportSourceDesc::GetExistDPObjectCache( ScDocument* pDoc ) const { ScDPTableDataCache* pCache = NULL; ScDPCollection* pDPCollection= pDoc->GetDPCollection(); - USHORT nCount = pDPCollection->GetCount(); - - for ( short i=nCount-1; i>=0 ; i--) + size_t nCount = pDPCollection->GetCount(); + for (size_t i = nCount; i > 0; --i) { - if ( const ScImportSourceDesc* pUsedDesc = (*pDPCollection)[i]->GetImportSourceDesc() ) + if ( const ScImportSourceDesc* pUsedDesc = (*pDPCollection)[i-1]->GetImportSourceDesc() ) if ( *this == *pUsedDesc ) { - long nID = (*pDPCollection)[i]->GetCacheId(); - if ( nID >= 0 ) - pCache= pDoc->GetDPObjectCache( nID ); + long nID = (*pDPCollection)[i-1]->GetCacheId(); + if ( nID >= 0 ) + pCache= pDPCollection->GetDPObjectCache( nID ); if ( pCache ) return pCache; } @@ -130,7 +127,7 @@ ScDPTableDataCache* ScImportSourceDesc::CreateCache( ScDocument* pDoc , long nID { xRowSet = uno::Reference<sdbc::XRowSet>( comphelper::getProcessServiceFactory()->createInstance( - rtl::OUString::createFromAscii( SC_SERVICE_ROWSET ) ), + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_SERVICE_ROWSET )) ), uno::UNO_QUERY); uno::Reference<beans::XPropertySet> xRowProp( xRowSet, uno::UNO_QUERY ); DBG_ASSERT( xRowProp.is(), "can't get RowSet" ); @@ -142,22 +139,22 @@ ScDPTableDataCache* ScImportSourceDesc::CreateCache( ScDocument* pDoc , long nID uno::Any aAny; aAny <<= rtl::OUString( aDBName ); xRowProp->setPropertyValue( - rtl::OUString::createFromAscii(SC_DBPROP_DATASOURCENAME), aAny ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_DATASOURCENAME)), aAny ); aAny <<= rtl::OUString( aObject ); xRowProp->setPropertyValue( - rtl::OUString::createFromAscii(SC_DBPROP_COMMAND), aAny ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_COMMAND)), aAny ); aAny <<= nSdbType; xRowProp->setPropertyValue( - rtl::OUString::createFromAscii(SC_DBPROP_COMMANDTYPE), aAny ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_COMMANDTYPE)), aAny ); uno::Reference<sdb::XCompletedExecution> xExecute( xRowSet, uno::UNO_QUERY ); if ( xExecute.is() ) { uno::Reference<task::XInteractionHandler> xHandler( comphelper::getProcessServiceFactory()->createInstance( - rtl::OUString::createFromAscii( SC_SERVICE_INTHANDLER ) ), + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_SERVICE_INTHANDLER )) ), uno::UNO_QUERY); xExecute->executeWithCompletion( xHandler ); } @@ -166,7 +163,7 @@ ScDPTableDataCache* ScImportSourceDesc::CreateCache( ScDocument* pDoc , long nID SvNumberFormatter aFormat( pDoc->GetServiceManager(), ScGlobal::eLnge); pCache->InitFromDataBase( xRowSet, *aFormat.GetNullDate() ); pCache->SetId( nID ); - pDoc->AddDPObjectCache( pCache ); + pDoc->GetDPCollection()->AddDPObjectCache( pCache ); DBG_TRACE1("Create a cache id = %d \n", pCache->GetId() ); } } @@ -192,7 +189,7 @@ ScDPTableDataCache* ScImportSourceDesc::CreateCache( ScDocument* pDoc , long nID ScDPTableDataCache* ScImportSourceDesc::GetCache( ScDocument* pDoc, long nID ) const { - ScDPTableDataCache* pCache = pDoc->GetDPObjectCache( nID ); + ScDPTableDataCache* pCache = pDoc->GetDPCollection()->GetDPObjectCache( nID ); if ( NULL == pCache && pDoc ) pCache = GetExistDPObjectCache( pDoc); if ( NULL == pCache ) @@ -236,7 +233,6 @@ long ScDatabaseDPData::GetColumnCount() return GetCacheTable().getColSize(); } -// End Comments String ScDatabaseDPData::getDimensionName(long nColumn) { @@ -308,7 +304,4 @@ const ScDPCacheTable& ScDatabaseDPData::GetCacheTable() const // ----------------------------------------------------------------------- - - - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/data/dpshttab.cxx b/sc/source/core/data/dpshttab.cxx index 7da7c956d26f..dddf25f34b51 100644 --- a/sc/source/core/data/dpshttab.cxx +++ b/sc/source/core/data/dpshttab.cxx @@ -44,10 +44,7 @@ #include "dpcachetable.hxx" #include "dpobject.hxx" #include "globstr.hrc" -// Wang Xu Ming -- 2009-8-17 -// DataPilot Migration - Cache&&Performance #include "dpglobal.hxx" -// End Comments #include <com/sun/star/sheet/DataPilotFieldFilter.hpp> #include <vector> @@ -71,7 +68,7 @@ ScSheetDPData::ScSheetDPData( ScDocument* pD, const ScSheetSourceDesc& rDesc , l aCacheTable( pD, rDesc.GetCacheId( pD, nCacheId)) { SCSIZE nEntryCount( aQuery.GetEntryCount()); - pSpecial = new BOOL[nEntryCount]; + pSpecial = new bool[nEntryCount]; for (SCSIZE j = 0; j < nEntryCount; ++j ) { ScQueryEntry& rEntry = aQuery.GetEntry(j); @@ -146,7 +143,7 @@ BOOL ScSheetDPData::IsDateDimension(long nDim) } else { - return aCacheTable.GetCache()->IsDateDimension( nDim); + return aCacheTable.getCache()->IsDateDimension( nDim); } } @@ -164,7 +161,7 @@ ULONG ScSheetDPData::GetNumberFormat(long nDim) } else { - return GetCacheTable().GetCache()->GetNumberFormat( nDim ); + return GetCacheTable().getCache()->GetNumberFormat( nDim ); } } UINT32 ScDPTableData::GetNumberFormatByIdx( NfIndexTableOffset eIdx ) @@ -236,8 +233,6 @@ const ScDPCacheTable& ScSheetDPData::GetCacheTable() const } -// Wang Xu Ming -- 2009-8-5 -// DataPilot Migration - Cache&&Performance ScDPTableDataCache* ScSheetSourceDesc::CreateCache( ScDocument* pDoc , long nID ) const { if ( pDoc ) @@ -253,7 +248,7 @@ ScDPTableDataCache* ScSheetSourceDesc::CreateCache( ScDocument* pDoc , long nID pCache->InitFromDoc( pDoc, aSourceRange ); pCache->SetId( nID ); - pDoc->AddDPObjectCache( pCache ); + pDoc->GetDPCollection()->AddDPObjectCache( pCache ); DBG_TRACE1("Create a cache id = %d \n", pCache->GetId() ); } @@ -266,11 +261,11 @@ ScDPTableDataCache* ScSheetSourceDesc::CreateCache( ScDocument* pDoc , long nID ScDPTableDataCache* ScSheetSourceDesc::GetExistDPObjectCache ( ScDocument* pDoc ) const { - return pDoc->GetUsedDPObjectCache( aSourceRange ); + return pDoc->GetDPCollection()->GetUsedDPObjectCache( aSourceRange ); } ScDPTableDataCache* ScSheetSourceDesc::GetCache( ScDocument* pDoc, long nID ) const { - ScDPTableDataCache* pCache = pDoc->GetDPObjectCache( nID ); + ScDPTableDataCache* pCache = pDoc->GetDPCollection()->GetDPObjectCache( nID ); if ( NULL == pCache && pDoc ) pCache = GetExistDPObjectCache( pDoc ); if ( NULL == pCache ) @@ -304,7 +299,6 @@ ULONG ScSheetSourceDesc::CheckValidate( ScDocument* pDoc ) const } return 0; } -// End Comments // ----------------------------------------------------------------------- diff --git a/sc/source/core/data/dptabdat.cxx b/sc/source/core/data/dptabdat.cxx index c0c2d6d33122..7a5fdd9aa1e9 100644 --- a/sc/source/core/data/dptabdat.cxx +++ b/sc/source/core/data/dptabdat.cxx @@ -170,7 +170,7 @@ void ScDPTableData::FillRowDataFromCacheTable(sal_Int32 nRow, const ScDPCacheTab // page dimensions GetItemData(rCacheTable, nRow, rInfo.aPageDims, rData.aPageData); - long nCacheColumnCount = rCacheTable.GetCache()->GetColumnCount(); + long nCacheColumnCount = rCacheTable.getCache()->GetColumnCount(); sal_Int32 n = rInfo.aDataSrcCols.size(); for (sal_Int32 i = 0; i < n; ++i) { @@ -188,8 +188,6 @@ void ScDPTableData::FillRowDataFromCacheTable(sal_Int32 nRow, const ScDPCacheTab void ScDPTableData::ProcessRowData(CalcInfo& rInfo, CalcRowData& rData, bool bAutoShow) { - // Wang Xu Ming -- 2009-6-16 - // DataPilot Migration if (!bAutoShow) { LateInitParams aColParams( rInfo.aColDims, rInfo.aColLevels, FALSE ); @@ -203,7 +201,6 @@ void ScDPTableData::ProcessRowData(CalcInfo& rInfo, CalcRowData& rData, bool bAu rInfo.pColRoot->LateInitFrom( aColParams, rData.aColData,0, *rInfo.pInitState); rInfo.pRowRoot->LateInitFrom( aRowParams, rData.aRowData, 0, *rInfo.pInitState); } - // End Comments if ( ( !rInfo.pColRoot->GetChildDimension() || rInfo.pColRoot->GetChildDimension()->IsValidEntry(rData.aColData) ) && ( !rInfo.pRowRoot->GetChildDimension() || rInfo.pRowRoot->GetChildDimension()->IsValidEntry(rData.aRowData) ) ) @@ -211,11 +208,8 @@ void ScDPTableData::ProcessRowData(CalcInfo& rInfo, CalcRowData& rData, bool bAu //! single process method with ColMembers, RowMembers and data !!! if (rInfo.pColRoot->GetChildDimension()) { -// Wang Xu Ming -- 2009-6-10 -// DataPilot Migration vector</*ScDPItemData*/ SCROW > aEmptyData; rInfo.pColRoot->GetChildDimension()->ProcessData(rData.aColData, NULL, aEmptyData, rData.aValues); -// End Comments } rInfo.pRowRoot->ProcessData(rData.aRowData, rInfo.pColRoot->GetChildDimension(), @@ -237,11 +231,8 @@ void ScDPTableData::CalcResultsFromCacheTable(const ScDPCacheTable& rCacheTable, } } -// Wang Xu Ming -- 2009-6-10 -// DataPilot Migration void ScDPTableData::GetItemData(const ScDPCacheTable& rCacheTable, sal_Int32 nRow, const vector<long>& rDims, vector< SCROW/*ScDPItemData*/>& rItemData) -// End Comments { sal_Int32 nDimSize = rDims.size(); for (sal_Int32 i = 0; i < nDimSize; ++i) @@ -255,10 +246,10 @@ void ScDPTableData::GetItemData(const ScDPCacheTable& rCacheTable, sal_Int32 nRo } nDim = GetSourceDim( nDim ); - if ( nDim >= rCacheTable.GetCache()->GetColumnCount() ) + if ( nDim >= rCacheTable.getCache()->GetColumnCount() ) continue; - SCROW nId= rCacheTable.GetCache()->GetItemDataId( static_cast<SCCOL>(nDim), static_cast<SCROW>(nRow), IsRepeatIfEmpty()); + SCROW nId= rCacheTable.getCache()->GetItemDataId( static_cast<SCCOL>(nDim), static_cast<SCROW>(nRow), IsRepeatIfEmpty()); rItemData.push_back( nId ); } @@ -266,8 +257,6 @@ void ScDPTableData::GetItemData(const ScDPCacheTable& rCacheTable, sal_Int32 nRo // ----------------------------------------------------------------------- -// Wang Xu Ming -- 2009-6-8 -// DataPilot Migration long ScDPTableData::GetMembersCount( long nDim ) { if ( nDim > MAXCOL ) @@ -287,18 +276,18 @@ const ScDPItemData* ScDPTableData::GetMemberByIndex( long nDim, long nIndex ) const ::std::vector<SCROW>& nMembers = GetCacheTable().getFieldEntries( nDim ); - return GetCacheTable().GetCache()->GetItemDataById( (SCCOL) nDim, (SCROW)nMembers[nIndex] ); + return GetCacheTable().getCache()->GetItemDataById( (SCCOL) nDim, (SCROW)nMembers[nIndex] ); } const ScDPItemData* ScDPTableData::GetMemberById( long nDim, long nId) { - return GetCacheTable().GetCache()->GetItemDataById( (SCCOL) nDim, (SCROW)nId); + return GetCacheTable().getCache()->GetItemDataById( (SCCOL) nDim, (SCROW)nId); } SCROW ScDPTableData::GetIdOfItemData( long nDim, const ScDPItemData& rData ) { - return GetCacheTable().GetCache()->GetIdByItemData((SCCOL) nDim, rData ); + return GetCacheTable().getCache()->GetIdByItemData((SCCOL) nDim, rData ); } const std::vector< SCROW >& ScDPTableData::GetColumnEntries( long nColumn ) @@ -317,8 +306,8 @@ long ScDPTableData::GetSourceDim( long nDim ) if ( getIsDataLayoutDimension(nDim) ) return 0; - long n1 = GetCacheTable().GetCache()->GetOrder( nDim, nDataId1); - long n2 = GetCacheTable().GetCache()->GetOrder( nDim, nDataId2); + long n1 = GetCacheTable().getCache()->GetOrder( nDim, nDataId1); + long n2 = GetCacheTable().getCache()->GetOrder( nDim, nDataId2); if ( n1 > n2 ) return 1; else if ( n1 == n2 ) @@ -326,7 +315,6 @@ long ScDPTableData::GetSourceDim( long nDim ) else return -1; } -// End Comments // ----------------------------------------------------------------------- /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/data/dptablecache.cxx b/sc/source/core/data/dptablecache.cxx index b946dbd4b6a4..03bdc69aa7bc 100644 --- a/sc/source/core/data/dptablecache.cxx +++ b/sc/source/core/data/dptablecache.cxx @@ -29,9 +29,9 @@ * for a copy of the LGPLv3 License. * ************************************************************************/ - // MARKER(update_precomp.py): autogen include statement, do not remove +// MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sc.hxx" -// INCLUDE --------------------------------------------------------------- + #include "dptablecache.hxx" #include "document.hxx" #include "cell.hxx" @@ -40,15 +40,17 @@ #include <rtl/math.hxx> #include "queryparam.hxx" #include "dpglobal.hxx" +#include "dptabdat.hxx" -#include "docoptio.hxx" //for ValidQuery -#include <unotools/textsearch.hxx> //for ValidQuery +#include "docoptio.hxx" +#include <unotools/textsearch.hxx> #include <com/sun/star/sdbc/DataType.hpp> #include <com/sun/star/sdbc/XRow.hpp> #include <com/sun/star/sdbc/XRowSet.hpp> #include <com/sun/star/sdbc/XResultSetMetaData.hpp> #include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp> + const double D_TIMEFACTOR = 86400.0; using namespace ::com::sun::star; @@ -57,61 +59,59 @@ using ::com::sun::star::uno::Exception; using ::com::sun::star::uno::Reference; using ::com::sun::star::uno::UNO_QUERY; using ::com::sun::star::uno::UNO_QUERY_THROW; -// ----------------------------------------------------------------------- -namespace + +namespace { + +bool lcl_isDate( ULONG nNumType ) { - BOOL lcl_isDate( ULONG nNumType ) - { - return ( (nNumType & NUMBERFORMAT_DATE) != 0 )? 1:0 ; - } + return ( (nNumType & NUMBERFORMAT_DATE) != 0 )? 1:0 ; +} - BOOL lcl_Search( const std::vector<ScDPItemData*>& list, const ::std::vector<SCROW>& rOrder, const ScDPItemData& item, SCROW& rIndex) +bool lcl_Search( const std::vector<ScDPItemData*>& list, const ::std::vector<SCROW>& rOrder, const ScDPItemData& item, SCROW& rIndex) +{ + rIndex = list.size(); + bool bFound = false; + SCROW nLo = 0; + SCROW nHi = list.size() - 1; + SCROW nIndex; + long nCompare; + while (nLo <= nHi) { - rIndex = list.size(); - BOOL bFound = FALSE; - SCROW nLo = 0; - SCROW nHi = list.size() - 1; - SCROW nIndex; - long nCompare; - while (nLo <= nHi) + nIndex = (nLo + nHi) / 2; + nCompare = ScDPItemData::Compare( *list[rOrder[nIndex]], item ); + if (nCompare < 0) + nLo = nIndex + 1; + else { - nIndex = (nLo + nHi) / 2; - nCompare = ScDPItemData::Compare( *list[rOrder[nIndex]], item ); - if (nCompare < 0) - nLo = nIndex + 1; - else + nHi = nIndex - 1; + if (nCompare == 0) { - nHi = nIndex - 1; - if (nCompare == 0) - { - bFound = TRUE; - nLo = nIndex; - } + bFound = true; + nLo = nIndex; } } - rIndex = nLo; - return bFound; } + rIndex = nLo; + return bFound; +} - ScDPItemData* lcl_GetItemValue(const Reference<sdbc::XRow>& xRow, sal_Int32 nType, long nCol, - const Date& rNullDate ) +ScDPItemData* lcl_GetItemValue(const Reference<sdbc::XRow>& xRow, sal_Int32 nType, long nCol, + const Date& rNullDate ) +{ + short nNumType = NUMBERFORMAT_NUMBER; + try { - short nNumType = NUMBERFORMAT_NUMBER; - try + String rStr = xRow->getString(nCol); + double fValue = 0.0; + switch (nType) { - String rStr = xRow->getString(nCol); - double fValue = 0.0; - switch (nType) - { case sdbc::DataType::BIT: case sdbc::DataType::BOOLEAN: - { - nNumType = NUMBERFORMAT_LOGICAL; - fValue = xRow->getBoolean(nCol) ? 1 : 0; - return new ScDPItemData( rStr, fValue,TRUE,nNumType); - } - //break; - + { + nNumType = NUMBERFORMAT_LOGICAL; + fValue = xRow->getBoolean(nCol) ? 1 : 0; + return new ScDPItemData( rStr, fValue,true,nNumType); + } case sdbc::DataType::TINYINT: case sdbc::DataType::SMALLINT: case sdbc::DataType::INTEGER: @@ -121,45 +121,38 @@ namespace case sdbc::DataType::DOUBLE: case sdbc::DataType::NUMERIC: case sdbc::DataType::DECIMAL: - { - //! do the conversion here? - fValue = xRow->getDouble(nCol); - return new ScDPItemData( rStr, fValue,TRUE); - } - //break; - + { + //! do the conversion here? + fValue = xRow->getDouble(nCol); + return new ScDPItemData( rStr, fValue,true); + } case sdbc::DataType::DATE: - { - nNumType = NUMBERFORMAT_DATE; - - util::Date aDate = xRow->getDate(nCol); - fValue = Date(aDate.Day, aDate.Month, aDate.Year) - rNullDate; - return new ScDPItemData( rStr, fValue, TRUE, nNumType ); - } - //break; + { + nNumType = NUMBERFORMAT_DATE; + util::Date aDate = xRow->getDate(nCol); + fValue = Date(aDate.Day, aDate.Month, aDate.Year) - rNullDate; + return new ScDPItemData( rStr, fValue, true, nNumType ); + } case sdbc::DataType::TIME: - { - nNumType = NUMBERFORMAT_TIME; - - util::Time aTime = xRow->getTime(nCol); - fValue = ( aTime.Hours * 3600 + aTime.Minutes * 60 + - aTime.Seconds + aTime.HundredthSeconds / 100.0 ) / D_TIMEFACTOR; - return new ScDPItemData( rStr,fValue, TRUE, nNumType ); - } - //break; + { + nNumType = NUMBERFORMAT_TIME; + util::Time aTime = xRow->getTime(nCol); + fValue = ( aTime.Hours * 3600 + aTime.Minutes * 60 + + aTime.Seconds + aTime.HundredthSeconds / 100.0 ) / D_TIMEFACTOR; + return new ScDPItemData( rStr,fValue, true, nNumType ); + } case sdbc::DataType::TIMESTAMP: - { - nNumType = NUMBERFORMAT_DATETIME; + { + nNumType = NUMBERFORMAT_DATETIME; - util::DateTime aStamp = xRow->getTimestamp(nCol); - fValue = ( Date( aStamp.Day, aStamp.Month, aStamp.Year ) - rNullDate ) + - ( aStamp.Hours * 3600 + aStamp.Minutes * 60 + - aStamp.Seconds + aStamp.HundredthSeconds / 100.0 ) / D_TIMEFACTOR; - return new ScDPItemData( rStr,fValue, TRUE, nNumType ); - } - //break; + util::DateTime aStamp = xRow->getTimestamp(nCol); + fValue = ( Date( aStamp.Day, aStamp.Month, aStamp.Year ) - rNullDate ) + + ( aStamp.Hours * 3600 + aStamp.Minutes * 60 + + aStamp.Seconds + aStamp.HundredthSeconds / 100.0 ) / D_TIMEFACTOR; + return new ScDPItemData( rStr,fValue, true, nNumType ); + } case sdbc::DataType::CHAR: case sdbc::DataType::VARCHAR: case sdbc::DataType::LONGVARCHAR: @@ -169,29 +162,25 @@ namespace case sdbc::DataType::LONGVARBINARY: default: return new ScDPItemData ( rStr ); - //break; - } - } - catch (uno::Exception&) - { } - catch ( ... ) - { - - } - return NULL; } + catch (uno::Exception&) + { + } + + return NULL; } -// Wang Xu Ming -- 12/23/2008 -//Refactor cache data -ScDPItemData::ScDPItemData( const String& rS, double fV/* = 0.0*/, BOOL bHV/* = FALSE*/, const ULONG nNumFormatP /*= 0*/ , BOOL bData/* = TRUE*/) : -nNumFormat( nNumFormatP ), aString(rS), fValue(fV), -mbFlag( (MK_VAL*!!bHV) | (MK_DATA*!!bData) | (MK_ERR*!!FALSE) | (MK_DATE*!!lcl_isDate( nNumFormat ) ) ) + +} + +ScDPItemData::ScDPItemData( const String& rS, double fV/* = 0.0*/, bool bHV/* = false*/, const ULONG nNumFormatP /*= 0*/ , bool bData/* = true*/) : + nNumFormat( nNumFormatP ), aString(rS), fValue(fV), + mbFlag( (MK_VAL*!!bHV) | (MK_DATA*!!bData) | (MK_ERR*!!false) | (MK_DATE*!!lcl_isDate( nNumFormat ) ) ) { } -ScDPItemData::ScDPItemData( ScDocument* pDoc, SCROW nRow, USHORT nCol, USHORT nDocTab ): - nNumFormat( 0 ), fValue(0.0), mbFlag( 0 ) +ScDPItemData::ScDPItemData( ScDocument* pDoc, SCROW nRow, USHORT nCol, USHORT nDocTab ) : + nNumFormat( 0 ), fValue(0.0), mbFlag( 0 ) { String aDocStr; pDoc->GetString( nCol, nRow, nDocTab, aDocStr ); @@ -203,8 +192,7 @@ ScDPItemData::ScDPItemData( ScDocument* pDoc, SCROW nRow, USHORT nCol, USHORT nD if ( pCell && pCell->GetCellType() == CELLTYPE_FORMULA && ((ScFormulaCell*)pCell)->GetErrCode() ) { - SetString ( aDocStr ); //[SODC_19347] add liyi - //bErr = TRUE; //[SODC_19347] del liyi + SetString ( aDocStr ); mbFlag |= MK_ERR; } else if ( pDoc->HasValueData( nCol, nRow, nDocTab ) ) @@ -222,10 +210,9 @@ ScDPItemData::ScDPItemData( ScDocument* pDoc, SCROW nRow, USHORT nCol, USHORT nD else if ( pDoc->HasData( nCol,nRow, nDocTab ) ) SetString ( aDocStr ); } -// End Comments -BOOL ScDPItemData::IsCaseInsEqual( const ScDPItemData& r ) const -{ //TODO: indified Date? +bool ScDPItemData::IsCaseInsEqual( const ScDPItemData& r ) const +{ //! pass Transliteration? //! inline? return IsValue() ? ( r.IsValue() && rtl::math::approxEqual( fValue, r.fValue ) ) : @@ -243,27 +230,22 @@ size_t ScDPItemData::Hash() const return rtl_ustr_hashCode_WithLength( aString.GetBuffer(), aString.Len() ); } -BOOL ScDPItemData::operator==( const ScDPItemData& r ) const +bool ScDPItemData::operator==( const ScDPItemData& r ) const { if ( IsValue() ) { if( (HasDatePart() != r.HasDatePart()) || (HasDatePart() && mnDatePart != r.mnDatePart) ) - return FALSE; + return false; -// Wang Xu Ming -- 1/9/2009 -// Add Data Cache Support. -// Identify date if ( IsDate() != r.IsDate() ) - return FALSE; - else - if ( r.IsValue() ) + return false; + else if ( r.IsValue() ) return rtl::math::approxEqual( fValue, r.fValue ); else - return FALSE; -// End Comments + return false; } else if ( r.IsValue() ) - return FALSE; + return false; else // need exact equality until we have a safe case insensitive string hash return aString == r.aString; @@ -278,14 +260,10 @@ sal_Int32 ScDPItemData::Compare( const ScDPItemData& rA, { if ( rtl::math::approxEqual( rA.fValue, rB.fValue ) ) { -// Wang Xu Ming -- 1/9/2009 -// Add Data Cache Support. -// Date > number if ( rA.IsDate() == rB.IsDate() ) return 0; else return rA.IsDate() ? 1: -1; -// End Comments } else if ( rA.fValue < rB.fValue ) return -1; @@ -300,8 +278,7 @@ sal_Int32 ScDPItemData::Compare( const ScDPItemData& rA, else return ScGlobal::GetCollator()->compareString( rA.aString, rB.aString ); } -// -//Wang Xu Ming SODC_17561 + #ifdef DEBUG void ScDPItemData::dump() const { @@ -311,7 +288,6 @@ void ScDPItemData::dump() const DBG_TRACE1( "mbFlag= %d", mbFlag); } #endif -//End TypedStrData* ScDPItemData::CreateTypeString( ) { @@ -335,17 +311,17 @@ sal_uInt8 ScDPItemData::GetType() const } -BOOL ScDPItemData::IsHasData() const +bool ScDPItemData::IsHasData() const { return !!(mbFlag&MK_DATA); } -BOOL ScDPItemData::IsHasErr() const +bool ScDPItemData::IsHasErr() const { return !!(mbFlag&MK_ERR); } -BOOL ScDPItemData::IsValue() const +bool ScDPItemData::IsValue() const { return !!(mbFlag&MK_VAL); } @@ -365,20 +341,20 @@ ULONG ScDPItemData::GetNumFormat() const return nNumFormat; } -BOOL ScDPItemData::HasStringData() const +bool ScDPItemData::HasStringData() const { return IsHasData()&&!IsHasErr()&&!IsValue(); } -BOOL ScDPItemData::IsDate() const +bool ScDPItemData::IsDate() const { return !!(mbFlag&MK_DATE); } -BOOL ScDPItemData::HasDatePart() const +bool ScDPItemData::HasDatePart() const { return !!(mbFlag&MK_DATEPART); } -void ScDPItemData::SetDate( BOOL b ) +void ScDPItemData::SetDate( bool b ) { b ? ( mbFlag |= MK_DATE ) : ( mbFlag &= ~MK_DATE ); } @@ -387,17 +363,17 @@ void ScDPItemData::SetDate( BOOL b ) //class ScDPTableDataCache //To cache the pivot table data source -BOOL ScDPTableDataCache::operator== ( const ScDPTableDataCache& r ) const +bool ScDPTableDataCache::operator== ( const ScDPTableDataCache& r ) const { if ( GetColumnCount() == r.GetColumnCount() ) { for ( SCCOL i = 0 ; i < GetColumnCount(); i++ ) { //check dim names if ( GetDimensionName( i ) != r.GetDimensionName( i ) ) - return FALSE; + return false; //check rows count if ( GetRowCount() != r.GetRowCount() ) - return FALSE; + return false; //check dim member values size_t nMembersCount = GetDimMemberValues( i ).size(); if ( GetDimMemberValues( i ).size() == r. GetDimMemberValues( i ).size() ) @@ -407,50 +383,47 @@ BOOL ScDPTableDataCache::operator== ( const ScDPTableDataCache& r ) const if ( *( GetDimMemberValues( i )[j] ) == *( r.GetDimMemberValues( i )[j] ) ) continue; else - return FALSE; + return false; } } else - return FALSE; + return false; //check source table index for ( SCROW k=0 ; k < GetRowCount(); k ++ ) { - if ( GetItemDataId( i, k, FALSE ) == r.GetItemDataId( i,k,FALSE) ) + if ( GetItemDataId( i, k, false ) == r.GetItemDataId( i,k,false) ) continue; else - return FALSE; + return false; } } } - return TRUE; + return true; } -ScDPTableDataCache::ScDPTableDataCache( ScDocument* pDoc ) : -mpDoc( pDoc ), -mnColumnCount ( 0 ), -mpTableDataValues ( NULL ), -mpSourceData ( NULL ), -mpGlobalOrder( NULL ), -mpIndexOrder( NULL) +ScDPTableDataCache::ScDPTableDataCache(ScDocument* pDoc) : + mpDoc( pDoc ), + mnID(-1), + mnColumnCount ( 0 ), + mpTableDataValues ( NULL ), + mpSourceData ( NULL ), + mpGlobalOrder( NULL ), + mpIndexOrder( NULL) { - mnID = -1; } ScDPTableDataCache::~ScDPTableDataCache() { if ( IsValid() ) { -// Wang Xu Ming -- 2/17/2009 -// Performance issue USHORT nCol; for ( nCol=0; nCol < GetColumnCount() ; nCol++ ) { for ( ULONG row = 0 ; row < mpTableDataValues[nCol].size(); row++ ) delete mpTableDataValues[nCol][row]; } - for ( nCol =0; nCol < mrLabelNames.size(); nCol++ ) - delete mrLabelNames[nCol]; -// End Comments + for ( nCol =0; nCol < maLabelNames.size(); nCol++ ) + delete maLabelNames[nCol]; mnColumnCount = 0; delete [] mpTableDataValues; @@ -464,36 +437,11 @@ ScDPTableDataCache::~ScDPTableDataCache() } } -// ----------------------------------------------------------------------- -void ScDPTableDataCache::AddRow( ScDPItemData* pRow, USHORT nCount ) +bool ScDPTableDataCache::IsValid() const { - DBG_ASSERT( pRow , " empty pointer" ); - if ( !mrLabelNames.size() ) - { - mnColumnCount= nCount; - mpTableDataValues = new std::vector<ScDPItemData*>[ mnColumnCount ]; - mpSourceData = new std::vector<SCROW>[ mnColumnCount ]; - mpGlobalOrder = new std::vector<SCROW>[ mnColumnCount ]; - mpIndexOrder = new std::vector<SCROW>[ mnColumnCount ]; - - for ( USHORT i = 0; i < nCount ; i ++ ) - AddLabel( new ScDPItemData( pRow[i] ) ); - } - else - { - for ( USHORT i = 0; i < nCount && i < mnColumnCount; i ++ ) - AddData( i, new ScDPItemData( pRow[i] ) ); - } + return mpTableDataValues != NULL && mpSourceData != NULL && mnColumnCount > 0; } -// ----------------------------------------------------------------------- -bool ScDPTableDataCache::IsValid() const -{ //TODO: continue check valid - return mpTableDataValues!=NULL && mpSourceData!= NULL && mnColumnCount>0; -} - -// ----------------------------------------------------------------------- - namespace { /** @@ -518,8 +466,7 @@ private: } -// ----------------------------------------------------------------------- -bool ScDPTableDataCache::InitFromDoc( ScDocument* pDoc, const ScRange& rRange ) +bool ScDPTableDataCache::InitFromDoc(ScDocument* pDoc, const ScRange& rRange) { // Make sure the formula cells within the data range are interpreted // during this call, for this method may be called from the interpretation @@ -527,15 +474,13 @@ bool ScDPTableDataCache::InitFromDoc( ScDocument* pDoc, const ScRange& rRange ) // increasing the macro level. MacroInterpretIncrementer aMacroInc(pDoc); - // SCROW nStartRow = rRange.aStart.Row(); // start of data SCROW nEndRow = rRange.aEnd.Row(); USHORT nStartCol = rRange.aStart.Col(); USHORT nEndCol = rRange.aEnd.Col(); USHORT nDocTab = rRange.aStart.Tab(); - //init - long nOldColumCount = mnColumnCount; + long nOldColumCount = mnColumnCount; mnColumnCount = nEndCol - nStartCol + 1; if ( IsValid() ) { @@ -543,13 +488,13 @@ bool ScDPTableDataCache::InitFromDoc( ScDocument* pDoc, const ScRange& rRange ) { for ( ULONG row = 0 ; row < mpTableDataValues[nCol].size(); row++ ) delete mpTableDataValues[nCol][row]; - delete mrLabelNames[nCol]; + delete maLabelNames[nCol]; } delete [] mpTableDataValues; delete [] mpSourceData; delete [] mpGlobalOrder; delete [] mpIndexOrder; - mrLabelNames.clear(); + maLabelNames.clear(); } mpTableDataValues = new std::vector<ScDPItemData*>[ mnColumnCount ]; @@ -567,13 +512,12 @@ bool ScDPTableDataCache::InitFromDoc( ScDocument* pDoc, const ScRange& rRange ) AddData( nCol - nStartCol, new ScDPItemData( pDoc, nRow, nCol, nDocTab ) ); } } - return TRUE; + return true; } -// ----------------------------------------------------------------------- bool ScDPTableDataCache::InitFromDataBase (const Reference<sdbc::XRowSet>& xRowSet, const Date& rNullDate) { - if (!xRowSet.is()) + if (!xRowSet.is()) // Dont' even waste time to go any further. return false; try @@ -583,36 +527,36 @@ bool ScDPTableDataCache::InitFromDataBase (const Reference<sdbc::XRowSet>& xRowS if (!xMeta.is()) return false; - long nOldColumCount = mnColumnCount; - mnColumnCount = xMeta->getColumnCount(); - if ( IsValid() ) - { - for ( USHORT nCol=0; nCol < nOldColumCount ; nCol++ ) + long nOldColumCount = mnColumnCount; + mnColumnCount = xMeta->getColumnCount(); + if (IsValid()) { - for ( ULONG row = 0 ; row < mpTableDataValues[nCol].size(); row++ ) - delete mpTableDataValues[nCol][row]; - delete mrLabelNames[nCol]; + for (USHORT nCol=0; nCol < nOldColumCount ; nCol++) + { + for (ULONG row = 0 ; row < mpTableDataValues[nCol].size(); row++) + delete mpTableDataValues[nCol][row]; + delete maLabelNames[nCol]; + } + delete [] mpTableDataValues; + delete [] mpSourceData; + delete [] mpGlobalOrder; + delete [] mpIndexOrder; + maLabelNames.clear(); } - delete [] mpTableDataValues; - delete [] mpSourceData; - delete [] mpGlobalOrder; - delete [] mpIndexOrder; - mrLabelNames.clear(); - } // Get column titles and types. - mrLabelNames.reserve(mnColumnCount); - mpTableDataValues = new std::vector<ScDPItemData*>[ mnColumnCount ]; - mpSourceData = new std::vector<SCROW>[ mnColumnCount ]; - mpGlobalOrder = new std::vector<SCROW>[ mnColumnCount ]; - mpIndexOrder = new std::vector<SCROW>[ mnColumnCount ]; + maLabelNames.reserve(mnColumnCount); + mpTableDataValues = new std::vector<ScDPItemData*>[ mnColumnCount ]; + mpSourceData = new std::vector<SCROW>[ mnColumnCount ]; + mpGlobalOrder = new std::vector<SCROW>[ mnColumnCount ]; + mpIndexOrder = new std::vector<SCROW>[ mnColumnCount ]; - std::vector<sal_Int32> aColTypes(mnColumnCount); + std::vector<sal_Int32> aColTypes(mnColumnCount); for (sal_Int32 nCol = 0; nCol < mnColumnCount; ++nCol) { String aColTitle = xMeta->getColumnLabel(nCol+1); aColTypes[nCol] = xMeta->getColumnType(nCol+1); - AddLabel( new ScDPItemData( aColTitle) ); + AddLabel( new ScDPItemData( aColTitle) ); } // Now get the data rows. @@ -622,23 +566,23 @@ bool ScDPTableDataCache::InitFromDataBase (const Reference<sdbc::XRowSet>& xRowS { for (sal_Int32 nCol = 0; nCol < mnColumnCount; ++nCol) { - ScDPItemData * pNew = lcl_GetItemValue( xRow, aColTypes[nCol], nCol+1, rNullDate ); - if ( pNew ) - AddData( nCol , pNew ); + ScDPItemData * pNew = lcl_GetItemValue( xRow, aColTypes[nCol], nCol+1, rNullDate ); + if (pNew) + AddData(nCol , pNew); } } while (xRowSet->next()); - xRowSet->beforeFirst(); + xRowSet->beforeFirst(); - return true; + return true; } catch (const Exception&) { return false; } } -// ----------------------------------------------------------------------- + ULONG ScDPTableDataCache::GetDimNumType( SCCOL nDim) const { DBG_ASSERT( IsValid(), " IsValid() == false " ); @@ -649,244 +593,235 @@ ULONG ScDPTableDataCache::GetDimNumType( SCCOL nDim) const return GetNumType(mpTableDataValues[nDim][0]->nNumFormat); } -// ----------------------------------------------------------------------- -bool ScDPTableDataCache::ValidQuery( SCROW nRow, const ScQueryParam &rParam, BOOL *pSpecial) -{ //Copied and modified from ScTable::ValidQuery - if (!rParam.GetEntry(0).bDoQuery) - return TRUE; - BOOL bMatchWholeCell = mpDoc->GetDocOptions().IsMatchWholeCell(); - - //--------------------------------------------------------------- - - const SCSIZE nFixedBools = 32; - BOOL aBool[nFixedBools]; - BOOL aTest[nFixedBools]; - SCSIZE nEntryCount = rParam.GetEntryCount(); - BOOL* pPasst = ( nEntryCount <= nFixedBools ? &aBool[0] : new BOOL[nEntryCount] ); - BOOL* pTest = ( nEntryCount <= nFixedBools ? &aTest[0] : new BOOL[nEntryCount] ); - - long nPos = -1; - SCSIZE i = 0; - CollatorWrapper* pCollator = (rParam.bCaseSens ? ScGlobal::GetCaseCollator() : - ScGlobal::GetCollator() ); - ::utl::TransliterationWrapper* pTransliteration = (rParam.bCaseSens ? - ScGlobal::GetCaseTransliteration() : ScGlobal::GetpTransliteration()); - - while ( (i < nEntryCount) && rParam.GetEntry(i).bDoQuery ) +bool ScDPTableDataCache::ValidQuery( SCROW nRow, const ScQueryParam &rParam, bool *pSpecial) +{ + if (!rParam.GetEntry(0).bDoQuery) + return true; + bool bMatchWholeCell = mpDoc->GetDocOptions().IsMatchWholeCell(); + + //--------------------------------------------------------------- + + const SCSIZE nFixedBools = 32; + bool aBool[nFixedBools]; + bool aTest[nFixedBools]; + SCSIZE nEntryCount = rParam.GetEntryCount(); + bool* pPasst = ( nEntryCount <= nFixedBools ? &aBool[0] : new bool[nEntryCount] ); + bool* pTest = ( nEntryCount <= nFixedBools ? &aTest[0] : new bool[nEntryCount] ); + + long nPos = -1; + SCSIZE i = 0; + CollatorWrapper* pCollator = (rParam.bCaseSens ? ScGlobal::GetCaseCollator() : + ScGlobal::GetCollator() ); + ::utl::TransliterationWrapper* pTransliteration = (rParam.bCaseSens ? + ScGlobal::GetCaseTransliteration() : ScGlobal::GetpTransliteration()); + + while ((i < nEntryCount) && rParam.GetEntry(i).bDoQuery) + { + ScQueryEntry& rEntry = rParam.GetEntry(i); + // we can only handle one single direct query + // #i115431# nField in QueryParam is the sheet column, not the field within the source range + SCCOL nQueryCol = (SCCOL)rEntry.nField; + if ( nQueryCol < rParam.nCol1 ) + nQueryCol = rParam.nCol1; + if ( nQueryCol > rParam.nCol2 ) + nQueryCol = rParam.nCol2; + SCCOL nSourceField = nQueryCol - rParam.nCol1; + SCROW nId = GetItemDataId( nSourceField, nRow, FALSE ); + const ScDPItemData* pCellData = GetItemDataById( nSourceField, nId ); + + bool bOk = false; + bool bTestEqual = false; + + if (pSpecial && pSpecial[i]) { - ScQueryEntry& rEntry = rParam.GetEntry(i); - // we can only handle one single direct query - // #i115431# nField in QueryParam is the sheet column, not the field within the source range - SCCOL nQueryCol = (SCCOL)rEntry.nField; - if ( nQueryCol < rParam.nCol1 ) - nQueryCol = rParam.nCol1; - if ( nQueryCol > rParam.nCol2 ) - nQueryCol = rParam.nCol2; - SCCOL nSourceField = nQueryCol - rParam.nCol1; - SCROW nId = GetItemDataId( nSourceField, nRow, FALSE ); - const ScDPItemData* pCellData = GetItemDataById( nSourceField, nId ); - - BOOL bOk = FALSE; - BOOL bTestEqual = FALSE; - - if ( pSpecial && pSpecial[i] ) - { - if (rEntry.nVal == SC_EMPTYFIELDS) - bOk = ! pCellData->IsHasData(); - else // if (rEntry.nVal == SC_NONEMPTYFIELDS) - bOk = pCellData->IsHasData(); - } - else if ( !rEntry.bQueryByString && pCellData->IsValue() ) - { // by Value - double nCellVal = pCellData->GetValue(); + if (rEntry.nVal == SC_EMPTYFIELDS) + bOk = ! pCellData->IsHasData(); + else // if (rEntry.nVal == SC_NONEMPTYFIELDS) + bOk = pCellData->IsHasData(); + } + else if (!rEntry.bQueryByString && pCellData->IsValue()) + { // by Value + double nCellVal = pCellData->GetValue(); - switch (rEntry.eOp) - { - case SC_EQUAL : - bOk = ::rtl::math::approxEqual( nCellVal, rEntry.nVal ); - break; - case SC_LESS : - bOk = (nCellVal < rEntry.nVal) && !::rtl::math::approxEqual( nCellVal, rEntry.nVal ); - break; - case SC_GREATER : - bOk = (nCellVal > rEntry.nVal) && !::rtl::math::approxEqual( nCellVal, rEntry.nVal ); - break; - case SC_LESS_EQUAL : - bOk = (nCellVal < rEntry.nVal) || ::rtl::math::approxEqual( nCellVal, rEntry.nVal ); - break; - case SC_GREATER_EQUAL : - bOk = (nCellVal > rEntry.nVal) || ::rtl::math::approxEqual( nCellVal, rEntry.nVal ); - break; - case SC_NOT_EQUAL : - bOk = !::rtl::math::approxEqual( nCellVal, rEntry.nVal ); - break; - default: - bOk= FALSE; - break; - } + switch (rEntry.eOp) + { + case SC_EQUAL : + bOk = ::rtl::math::approxEqual( nCellVal, rEntry.nVal ); + break; + case SC_LESS : + bOk = (nCellVal < rEntry.nVal) && !::rtl::math::approxEqual( nCellVal, rEntry.nVal ); + break; + case SC_GREATER : + bOk = (nCellVal > rEntry.nVal) && !::rtl::math::approxEqual( nCellVal, rEntry.nVal ); + break; + case SC_LESS_EQUAL : + bOk = (nCellVal < rEntry.nVal) || ::rtl::math::approxEqual( nCellVal, rEntry.nVal ); + break; + case SC_GREATER_EQUAL : + bOk = (nCellVal > rEntry.nVal) || ::rtl::math::approxEqual( nCellVal, rEntry.nVal ); + break; + case SC_NOT_EQUAL : + bOk = !::rtl::math::approxEqual( nCellVal, rEntry.nVal ); + break; + default: + bOk= false; + break; } - else if ( (rEntry.eOp == SC_EQUAL || rEntry.eOp == SC_NOT_EQUAL) - || (rEntry.bQueryByString - && pCellData->HasStringData() ) + } + else if ((rEntry.eOp == SC_EQUAL || rEntry.eOp == SC_NOT_EQUAL) + || (rEntry.bQueryByString + && pCellData->HasStringData() ) ) - { // by String - String aCellStr = pCellData->GetString(); + { // by String + String aCellStr = pCellData->GetString(); - BOOL bRealRegExp = (rParam.bRegExp && ((rEntry.eOp == SC_EQUAL) - || (rEntry.eOp == SC_NOT_EQUAL))); - BOOL bTestRegExp = FALSE; - if ( bRealRegExp || bTestRegExp ) - { - xub_StrLen nStart = 0; - xub_StrLen nEnd = aCellStr.Len(); - BOOL bMatch = (BOOL) rEntry.GetSearchTextPtr( rParam.bCaseSens ) - ->SearchFrwrd( aCellStr, &nStart, &nEnd ); - // from 614 on, nEnd is behind the found text - if ( bMatch && bMatchWholeCell - && (nStart != 0 || nEnd != aCellStr.Len()) ) - bMatch = FALSE; // RegExp must match entire cell string - if ( bRealRegExp ) - bOk = ((rEntry.eOp == SC_NOT_EQUAL) ? !bMatch : bMatch); - else - bTestEqual = bMatch; - } - if ( !bRealRegExp ) + bool bRealRegExp = (rParam.bRegExp && ((rEntry.eOp == SC_EQUAL) + || (rEntry.eOp == SC_NOT_EQUAL))); + bool bTestRegExp = false; + if (bRealRegExp || bTestRegExp) + { + xub_StrLen nStart = 0; + xub_StrLen nEnd = aCellStr.Len(); + bool bMatch = (bool) rEntry.GetSearchTextPtr( rParam.bCaseSens ) + ->SearchFrwrd( aCellStr, &nStart, &nEnd ); + // from 614 on, nEnd is behind the found text + if (bMatch && bMatchWholeCell + && (nStart != 0 || nEnd != aCellStr.Len())) + bMatch = false; // RegExp must match entire cell string + if (bRealRegExp) + bOk = ((rEntry.eOp == SC_NOT_EQUAL) ? !bMatch : bMatch); + else + bTestEqual = bMatch; + } + if (!bRealRegExp) + { + if (rEntry.eOp == SC_EQUAL || rEntry.eOp == SC_NOT_EQUAL) { - if ( rEntry.eOp == SC_EQUAL || rEntry.eOp == SC_NOT_EQUAL ) + if (bMatchWholeCell) { - if ( bMatchWholeCell ) + bOk = pTransliteration->isEqual( aCellStr, *rEntry.pStr ); + String aStr = *rEntry.pStr; + sal_Bool bHasStar = sal_False; + xub_StrLen nIndex; + if (( nIndex = aStr.Search('*') ) != STRING_NOTFOUND) + bHasStar = sal_True; + if (bHasStar && (nIndex>0)) { - bOk = pTransliteration->isEqual( aCellStr, *rEntry.pStr ); - //Added by zhaosz,for sodc_2702,20060808 - String aStr = *rEntry.pStr;//"f*" - //modified by weihuaw,for SODC_16698 - //use another way to find "*" in aStr - sal_Bool bHasStar = sal_False; - xub_StrLen nIndex; - if( ( nIndex = aStr.Search('*') ) != STRING_NOTFOUND ) - bHasStar = sal_True; - if(bHasStar && (nIndex>0)) + for (i=0;(i<nIndex) && (i< aCellStr.Len()) ; i++) { - for(i=0;(i<nIndex) && (i< aCellStr.Len()) ; i++) + if (aCellStr.GetChar( (USHORT)i ) == aStr.GetChar((USHORT) i )) { - if(aCellStr.GetChar( (USHORT)i ) == aStr.GetChar((USHORT) i )) - { - bOk=1; - } - else - { - bOk=0; - break; - } + bOk=1; + } + else + { + bOk=0; + break; } } - //end modified - //Added end,20060808 } - else - { - ::com::sun::star::uno::Sequence< sal_Int32 > xOff; - String aCell( pTransliteration->transliterate( - aCellStr, ScGlobal::eLnge, 0, aCellStr.Len(), - &xOff ) ); - String aQuer( pTransliteration->transliterate( - *rEntry.pStr, ScGlobal::eLnge, 0, rEntry.pStr->Len(), - &xOff ) ); - bOk = (aCell.Search( aQuer ) != STRING_NOTFOUND); - } - if ( rEntry.eOp == SC_NOT_EQUAL ) - bOk = !bOk; } else - { // use collator here because data was probably sorted - sal_Int32 nCompare = pCollator->compareString( - aCellStr, *rEntry.pStr ); - switch (rEntry.eOp) - { - case SC_LESS : - bOk = (nCompare < 0); - break; - case SC_GREATER : - bOk = (nCompare > 0); - break; - case SC_LESS_EQUAL : - bOk = (nCompare <= 0); - break; - case SC_GREATER_EQUAL : - bOk = (nCompare >= 0); - break; - case SC_NOT_EQUAL: - DBG_ASSERT( false , "SC_NOT_EQUAL"); - break; - case SC_TOPVAL: - case SC_BOTVAL: - case SC_TOPPERC: - case SC_BOTPERC: - default: - break; - } + { + ::com::sun::star::uno::Sequence< sal_Int32 > xOff; + String aCell( pTransliteration->transliterate( + aCellStr, ScGlobal::eLnge, 0, aCellStr.Len(), + &xOff ) ); + String aQuer( pTransliteration->transliterate( + *rEntry.pStr, ScGlobal::eLnge, 0, rEntry.pStr->Len(), + &xOff ) ); + bOk = (aCell.Search( aQuer ) != STRING_NOTFOUND); + } + if (rEntry.eOp == SC_NOT_EQUAL) + bOk = !bOk; + } + else + { // use collator here because data was probably sorted + sal_Int32 nCompare = pCollator->compareString( + aCellStr, *rEntry.pStr ); + switch (rEntry.eOp) + { + case SC_LESS : + bOk = (nCompare < 0); + break; + case SC_GREATER : + bOk = (nCompare > 0); + break; + case SC_LESS_EQUAL : + bOk = (nCompare <= 0); + break; + case SC_GREATER_EQUAL : + bOk = (nCompare >= 0); + break; + case SC_NOT_EQUAL: + DBG_ASSERT( false , "SC_NOT_EQUAL"); + break; + case SC_TOPVAL: + case SC_BOTVAL: + case SC_TOPPERC: + case SC_BOTPERC: + default: + break; } } } + } - if (nPos == -1) + if (nPos == -1) + { + nPos++; + pPasst[nPos] = bOk; + pTest[nPos] = bTestEqual; + } + else + { + if (rEntry.eConnect == SC_AND) { - nPos++; - pPasst[nPos] = bOk; - pTest[nPos] = bTestEqual; + pPasst[nPos] = pPasst[nPos] && bOk; + pTest[nPos] = pTest[nPos] && bTestEqual; } else { - if (rEntry.eConnect == SC_AND) - { - pPasst[nPos] = pPasst[nPos] && bOk; - pTest[nPos] = pTest[nPos] && bTestEqual; - } - else - { - nPos++; - pPasst[nPos] = bOk; - pTest[nPos] = bTestEqual; - } + nPos++; + pPasst[nPos] = bOk; + pTest[nPos] = bTestEqual; } - i++; } + i++; + } - for ( long j=1; j <= nPos; j++ ) - { - pPasst[0] = pPasst[0] || pPasst[j]; - pTest[0] = pTest[0] || pTest[j]; - } + for (long j=1; j <= nPos; j++) + { + pPasst[0] = pPasst[0] || pPasst[j]; + pTest[0] = pTest[0] || pTest[j]; + } - BOOL bRet = pPasst[0]; - if ( pPasst != &aBool[0] ) - delete [] pPasst; - if ( pTest != &aTest[0] ) - delete [] pTest; + bool bRet = pPasst[0]; + if (pPasst != &aBool[0]) + delete [] pPasst; + if (pTest != &aTest[0]) + delete [] pTest; - return bRet; + return bRet; } -// ----------------------------------------------------------------------- bool ScDPTableDataCache::IsRowEmpty( SCROW nRow ) const { - return mbEmptyRow[ nRow ]; - + return mbEmptyRow[ nRow ]; } -// ----------------------------------------------------------------------- bool ScDPTableDataCache::IsEmptyMember( SCROW nRow, USHORT nColumn ) const { - return !GetItemDataById( nColumn, GetItemDataId( nColumn, nRow, FALSE ) )->IsHasData(); + return !GetItemDataById( nColumn, GetItemDataId( nColumn, nRow, false ) )->IsHasData(); } -BOOL ScDPTableDataCache::AddData(long nDim, ScDPItemData* pitemData) +bool ScDPTableDataCache::AddData(long nDim, ScDPItemData* pitemData) { DBG_ASSERT( IsValid(), " IsValid() == false " ); DBG_ASSERT( nDim < mnColumnCount && nDim >=0 , "dimension out of bound" ); SCROW nIndex = 0; - BOOL bInserted = FALSE; + bool bInserted = false; pitemData->SetDate( lcl_isDate( GetNumType( pitemData->nNumFormat ) ) ); @@ -896,7 +831,7 @@ BOOL ScDPTableDataCache::AddData(long nDim, ScDPItemData* pitemData) mpGlobalOrder[nDim].insert( mpGlobalOrder[nDim].begin()+nIndex, mpTableDataValues[nDim].size()-1 ); DBG_ASSERT( (size_t) mpGlobalOrder[nDim][nIndex] == mpTableDataValues[nDim].size()-1 ,"ScDPTableDataCache::AddData "); mpSourceData[nDim].push_back( mpTableDataValues[nDim].size()-1 ); - bInserted = TRUE; + bInserted = true; } else mpSourceData[nDim].push_back( mpGlobalOrder[nDim][nIndex] ); @@ -904,25 +839,26 @@ BOOL ScDPTableDataCache::AddData(long nDim, ScDPItemData* pitemData) size_t nCurRow = mpSourceData[nDim].size() -1 ; while ( mbEmptyRow.size() <= nCurRow ) - mbEmptyRow.push_back( TRUE ); + mbEmptyRow.push_back( true ); if ( pitemData->IsHasData() ) - mbEmptyRow[ nCurRow ] = FALSE; + mbEmptyRow[ nCurRow ] = false; if ( !bInserted ) delete pitemData; - return TRUE; + return true; } String ScDPTableDataCache::GetDimensionName( USHORT nColumn ) const { - DBG_ASSERT( /* nColumn>=0 && */ nColumn < mrLabelNames.size()-1 , "ScDPTableDataCache::GetDimensionName"); - DBG_ASSERT( mrLabelNames.size() == static_cast <USHORT> (mnColumnCount+1), "ScDPTableDataCache::GetDimensionName"); - if ( static_cast<size_t>(nColumn+1) < mrLabelNames.size() ) + DBG_ASSERT(nColumn < maLabelNames.size()-1 , "ScDPTableDataCache::GetDimensionName"); + DBG_ASSERT(maLabelNames.size() == static_cast <USHORT> (mnColumnCount+1), "ScDPTableDataCache::GetDimensionName"); + + if ( static_cast<size_t>(nColumn+1) < maLabelNames.size() ) { - return mrLabelNames[nColumn+1]->aString; + return maLabelNames[nColumn+1]->aString; } else return String(); @@ -932,24 +868,23 @@ void ScDPTableDataCache::AddLabel(ScDPItemData *pData) { DBG_ASSERT( IsValid(), " IsValid() == false " ); - if ( mrLabelNames.size() == 0 ) - mrLabelNames.push_back( new ScDPItemData( ScGlobal::GetRscString(STR_PIVOT_DATA) ) ); - + if ( maLabelNames.size() == 0 ) + maLabelNames.push_back( new ScDPItemData(ScGlobal::GetRscString(STR_PIVOT_DATA)) ); //reset name if needed String strNewName = pData->aString; - BOOL bFound = FALSE; + bool bFound = false; long nIndex = 1; do { - for ( long i= mrLabelNames.size()-1; i>=0; i-- ) + for ( long i= maLabelNames.size()-1; i>=0; i-- ) { - if( mrLabelNames[i]->aString == strNewName ) + if( maLabelNames[i]->aString == strNewName ) { strNewName = pData->aString; strNewName += String::CreateFromInt32( nIndex ); nIndex ++ ; - bFound = TRUE; + bFound = true; } } bFound = !bFound; @@ -957,11 +892,11 @@ void ScDPTableDataCache::AddLabel(ScDPItemData *pData) while ( !bFound ); pData->aString = strNewName; - mrLabelNames.push_back( pData ); + maLabelNames.push_back( pData ); } -SCROW ScDPTableDataCache::GetItemDataId(USHORT nDim, SCROW nRow, BOOL bRepeatIfEmpty) const -{ // +SCROW ScDPTableDataCache::GetItemDataId(USHORT nDim, SCROW nRow, bool bRepeatIfEmpty) const +{ DBG_ASSERT( IsValid(), " IsValid() == false " ); DBG_ASSERT( /* nDim >= 0 && */ nDim < mnColumnCount, "ScDPTableDataCache::GetItemDataId " ); @@ -977,7 +912,7 @@ SCROW ScDPTableDataCache::GetItemDataId(USHORT nDim, SCROW nRow, BOOL bRepeatIfE const ScDPItemData* ScDPTableDataCache::GetItemDataById(long nDim, SCROW nId) const { if ( nId >= GetRowCount() ) - return maAdditionalDatas.getData( nId - GetRowCount() ); + return maAdditionalData.getData( nId - GetRowCount() ); if ( (size_t)nId >= mpTableDataValues[nDim].size() || nDim >= mnColumnCount || nId < 0 ) return NULL; @@ -1027,7 +962,7 @@ ULONG ScDPTableDataCache::GetNumberFormat( long nDim ) const return mpTableDataValues[nDim][0]->nNumFormat; } -BOOL ScDPTableDataCache::IsDateDimension( long nDim ) const +bool ScDPTableDataCache::IsDateDimension( long nDim ) const { if ( nDim >= mnColumnCount ) return false; @@ -1052,9 +987,9 @@ const ScDPItemData* ScDPTableDataCache::GetSortedItemData(SCCOL nDim, SCROW nOrd SCCOL ScDPTableDataCache::GetDimensionIndex(String sName) const { - for ( size_t n = 1; n < mrLabelNames.size(); n ++ ) //defects, label name map wrong SODC_17590, SODC_18932,SODC_18827,SODC_18960,SODC_18923 + for ( size_t n = 1; n < maLabelNames.size(); n ++ ) { - if ( mrLabelNames[n]->GetString() == sName ) + if ( maLabelNames[n]->GetString() == sName ) return (SCCOL)(n-1); } return -1; @@ -1072,7 +1007,7 @@ SCROW ScDPTableDataCache::GetIdByItemData(long nDim, String sItemData ) const } ScDPItemData rData ( sItemData ); - return GetRowCount() +maAdditionalDatas.getDataId(rData); + return GetRowCount() +maAdditionalData.getDataId(rData); } SCROW ScDPTableDataCache::GetIdByItemData( long nDim, const ScDPItemData& rData ) const @@ -1085,7 +1020,7 @@ SCROW ScDPTableDataCache::GetIdByItemData( long nDim, const ScDPItemData& rData return n; } } - return GetRowCount() + maAdditionalDatas.getDataId(rData); + return GetRowCount() + maAdditionalData.getDataId(rData); } SCROW ScDPTableDataCache::GetAdditionalItemID ( String sItemData ) @@ -1096,7 +1031,7 @@ SCROW ScDPTableDataCache::GetAdditionalItemID ( String sItemData ) SCROW ScDPTableDataCache::GetAdditionalItemID( const ScDPItemData& rData ) { - return GetRowCount() + maAdditionalDatas.insertData( rData ); + return GetRowCount() + maAdditionalData.insertData( rData ); } @@ -1120,7 +1055,7 @@ SCROW ScDPTableDataCache::GetOrder(long nDim, SCROW nIndex) const return mpIndexOrder[nDim][nIndex]; } -ScDocument* ScDPTableDataCache::GetDoc() const +ScDocument* ScDPTableDataCache::GetDoc() const { return mpDoc; }; @@ -1129,7 +1064,8 @@ long ScDPTableDataCache::GetColumnCount() const { return mnColumnCount; } -long ScDPTableDataCache::GetId() const + +long ScDPTableDataCache::GetId() const { return mnID; } diff --git a/sc/source/core/data/dptabres.cxx b/sc/source/core/data/dptabres.cxx index cc7b986eeb16..c3cafc868430 100644 --- a/sc/source/core/data/dptabres.cxx +++ b/sc/source/core/data/dptabres.cxx @@ -232,14 +232,12 @@ BOOL ScDPRowMembersOrder::operator()( sal_Int32 nIndex1, sal_Int32 nIndex2 ) con { const ScDPResultMember* pMember1 = rDimension.GetMember(nIndex1); const ScDPResultMember* pMember2 = rDimension.GetMember(nIndex2); -// Wang Xu Ming -- 3/17/2009 // make the hide item to the largest order. if ( !pMember1->IsVisible() || !pMember2->IsVisible() ) return pMember1->IsVisible(); const ScDPDataMember* pDataMember1 = pMember1->GetDataRoot() ; const ScDPDataMember* pDataMember2 = pMember2->GetDataRoot(); -// End Comments // GetDataRoot can be NULL if there was no data. // IsVisible == FALSE can happen after AutoShow. return lcl_IsLess( pDataMember1, pDataMember2, nMeasure, bAscending ); @@ -249,12 +247,10 @@ BOOL ScDPColMembersOrder::operator()( sal_Int32 nIndex1, sal_Int32 nIndex2 ) con { ScDPDataMember* pDataMember1 = rDimension.GetMember(nIndex1); ScDPDataMember* pDataMember2 = rDimension.GetMember(nIndex2); - // Wang Xu Ming -- 2009-6-17 BOOL bHide1 = pDataMember1 && !pDataMember1->IsVisible(); BOOL bHide2 = pDataMember2 && !pDataMember2->IsVisible(); if ( bHide1 || bHide2 ) return !bHide1; - // End Comments return lcl_IsLess( pDataMember1, pDataMember2, nMeasure, bAscending ); } @@ -604,7 +600,6 @@ void ScDPAggData::Calculate( ScSubTotalFunc eFunc, const ScDPSubTotalState& rSub if ( bEmpty || bError ) fResult = 0.0; // default, in case the state is later modified -// fprintf(stdout, "ScDPAggData::Calculate: result = %g\n", fResult);fflush(stdout); fVal = fResult; // used directly from now on fAux = 0.0; // used for running total or original result of reference value } @@ -1099,7 +1094,6 @@ void ScDPResultMember::InitFrom( const vector<ScDPDimension*>& ppDim, const vect // skip child dimension if details are not shown if ( GetDPMember() && !GetDPMember()->getShowDetails() ) { - // Wang Xu Ming -- 2009-6-16 // Show DataLayout dimention nMemberStep = 1; while ( nPos < ppDim.size() ) @@ -1117,7 +1111,6 @@ void ScDPResultMember::InitFrom( const vector<ScDPDimension*>& ppDim, const vect nMemberStep ++; } } - // End Comments bHasHiddenDetails = TRUE; // only if there is a next dimension return; } @@ -1146,8 +1139,6 @@ void ScDPResultMember::LateInitFrom( LateInitParams& rParams/*const vector<ScDPD // skip child dimension if details are not shown if ( GetDPMember() && !GetDPMember()->getShowDetails() ) { - // Wang Xu Ming -- 2009-6-16 - // DataPilot Migration // Show DataLayout dimention nMemberStep = 1; while ( !rParams.IsEnd( nPos ) ) @@ -1171,7 +1162,6 @@ void ScDPResultMember::LateInitFrom( LateInitParams& rParams/*const vector<ScDPD nMemberStep ++; } } - // End Comments bHasHiddenDetails = TRUE; // only if there is a next dimension return; } @@ -1457,7 +1447,6 @@ void ScDPResultMember::FillMemberResults( uno::Sequence<sheet::MemberResult>* pS if (bRoot) // same sequence for root member pChildDimension->FillMemberResults( pSequences, rPos, nMeasure ); else - //pChildDimension->FillMemberResults( pSequences + 1, rPos, nMeasure ); pChildDimension->FillMemberResults( pSequences + nMemberStep/*1*/, rPos, nMeasure ); if ( bTitleLine ) // title row is included in GetSize, so the following @@ -2269,7 +2258,6 @@ void ScDPDataMember::UpdateRunningTotals( const ScDPResultMember* pRefMember, BOOL bHasChild = ( pRefChild != NULL ); long nUserSubCount = pRefMember->GetSubTotalCount(); - //if ( nUserSubCount || !bHasChild ) { // Calculate at least automatic if no subtotals are selected, // show only own values if there's no child dimension (innermost). @@ -2658,10 +2646,7 @@ private: BOOL bIncludeAll; BOOL bIsBase; long nGroupBase; - // Wang Xu Ming -- 2009-8-6 - // DataPilot Migration - Cache&&Performance SCROW nBaseDataId; - // End Comments public: ScDPGroupCompare( const ScDPResultData* pData, const ScDPInitState& rState, long nDimension ); ~ScDPGroupCompare() {} @@ -2851,7 +2836,6 @@ void ScDPResultDimension::InitFrom( const vector<ScDPDimension*>& ppDim, const v void ScDPResultDimension::LateInitFrom( LateInitParams& rParams/* const vector<ScDPDimension*>& ppDim, const vector<ScDPLevel*>& ppLev*/, const vector<SCROW>& pItemData, size_t nPos, ScDPInitState& rInitState ) -// End Comments { if ( rParams.IsEnd( nPos ) ) return; @@ -2960,9 +2944,6 @@ void ScDPResultDimension::LateInitFrom( LateInitParams& rParams/* const vector<S ScDPResultMember* pResultMember = FindMember( rThisData ); if( NULL != pResultMember ) { - //DBG_TRACE( "ScDPResultDimension::LateInitFrom"); - // DBG_TRACESTR( pResultMember->GetDPMember()->GetNameStr()); - rInitState.AddMember( nDimSource, pResultMember->GetDataId() ); pResultMember->LateInitFrom( rParams, pItemData, nPos+1, rInitState ); rInitState.RemoveMember(); @@ -3005,7 +2986,6 @@ bool ScDPResultDimension::IsValidEntry( const vector< SCROW >& aMembers ) const ByteString strTemp ("IsValidEntry: Member not found, DimName = " ); strTemp += ByteString( GetName(), RTL_TEXTENCODING_UTF8 ); DBG_TRACE( strTemp.GetBuffer() ); - // DBG_ERROR("IsValidEntry: Member not found"); #endif return false; } @@ -3335,7 +3315,6 @@ ScDPDataMember* ScDPResultDimension::GetRowReferenceMember( const ScDPRelativePo return pColMember; } -// static ScDPDataMember* ScDPResultDimension::GetColReferenceMember( const ScDPRelativePos* pRelativePos, const String* pName, long nRefDimPos, const ScDPRunningTotalState& rRunning ) { @@ -3928,8 +3907,6 @@ size_t ScDPResultVisibilityData::MemberHash::operator() (const ScDPItemData& r) else return rtl_ustr_hashCode_WithLength(r.GetString().GetBuffer(), r.GetString().Len()); } -// Wang Xu Ming -- 2009-6-10 -// DataPilot Migration SCROW ScDPResultMember::GetDataId( ) const { const ScDPMember* pMemberDesc = GetDPMember(); @@ -3949,27 +3926,6 @@ ScDPResultMember* ScDPResultDimension::AddMember(const ScDPParentDimData &aData return pMember; } -ResultMembers* ScDPResultDimension::GetResultMember( ScDPDimension* pThisDim, ScDPLevel* pThisLevel ) -{ - ResultMembers* pResultMembers = new ResultMembers(); - // global order is used to initialize aMembers, so it doesn't have to be looked at later - const ScMemberSortOrder& rGlobalOrder = pThisLevel->GetGlobalOrder(); - - ScDPMembers* pMembers = pThisLevel->GetMembersObject(); - long nMembCount = pMembers->getCount(); - for ( long i=0; i<nMembCount; i++ ) - { - long nSorted = rGlobalOrder.empty() ? i : rGlobalOrder[i]; - ScDPMember* pMember = pMembers->getByIndex(nSorted); - if ( NULL == pResultMembers->FindMember( pMember->GetItemDataId() ) ) - { - ScDPParentDimData* pNew = new ScDPParentDimData( i, pThisDim, pThisLevel, pMember ); - pResultMembers->InsertMember( pNew ); - } - } - return pResultMembers; -} - ScDPResultMember* ScDPResultDimension::InsertMember(ScDPParentDimData *pMemberData) { SCROW nInsert = 0; @@ -4019,8 +3975,6 @@ void ScDPResultDimension:: InitWithMembers( LateInitParams& rParams, } if ( pResultMember ) { - // DBG_TRACE( "ScDPResultDimension::InitWithMembers"); - // DBG_TRACESTR( pResultMember->GetDPMember()->GetNameStr()); rInitState.AddMember( nDimSource, pResultMember->GetDataId() ); pResultMember->LateInitFrom( rParams /*ppDim, ppLev*/, pItemData, nPos+1 , rInitState ); rInitState.RemoveMember(); @@ -4050,7 +4004,7 @@ ResultMembers::ResultMembers(): } ResultMembers::~ResultMembers() { - for ( DimMemberHash::const_iterator iter = maMemberHash.begin(); iter != maMemberHash.end(); iter++ ) + for ( DimMemberHash::const_iterator iter = maMemberHash.begin(); iter != maMemberHash.end(); ++iter ) delete iter->second; } // ----------------------------------------------------------------------- @@ -4072,9 +4026,6 @@ BOOL LateInitParams::IsEnd( size_t nPos ) const return nPos >= mppDim.size(); } -// End Comments -// Wang Xu Ming -- 2009-8-4 -// DataPilot Migration - old defects merge void ScDPResultDimension::CheckShowEmpty( BOOL bShow ) { long nCount = maMemberArray.size(); @@ -4107,6 +4058,6 @@ void ScDPResultMember::CheckShowEmpty( BOOL bShow ) pChildDim->CheckShowEmpty( TRUE ); } } -}// End Comments +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/data/dptabsrc.cxx b/sc/source/core/data/dptabsrc.cxx index 4b9adca7e9c3..7c84e9f97cc3 100644 --- a/sc/source/core/data/dptabsrc.cxx +++ b/sc/source/core/data/dptabsrc.cxx @@ -301,11 +301,9 @@ void ScDPSource::SetOrientation(long nColumn, USHORT nNew) case sheet::DataPilotFieldOrientation_PAGE: nPageDims[nPageDimCount++] = nColumn; break; - // Wang Xu Ming -- 2009-9-1 // DataPilot Migration - Cache&&Performance case sheet::DataPilotFieldOrientation_HIDDEN: break; - // End Comments default: DBG_ERROR( "ScDPSource::SetOrientation: unexpected orientation" ); break; @@ -906,8 +904,8 @@ void ScDPSource::CreateRes_Impl() aInitState.AddMember( nPageDims[i], GetMemberId( nPageDims[i], pDim->GetSelectedData() ) ); } - pColResRoot = new ScDPResultMember( pResData, /*NULL, NULL, NULL, */bColumnGrand ); - pRowResRoot = new ScDPResultMember( pResData, /*NULL, NULL, NULL, */bRowGrand ); + pColResRoot = new ScDPResultMember( pResData, bColumnGrand ); + pRowResRoot = new ScDPResultMember( pResData, bRowGrand ); FillCalcInfo(false, aInfo, bHasAutoShow); long nColLevelCount = aInfo.aColLevels.size(); @@ -1089,8 +1087,6 @@ void ScDPSource::FillMemberResults() for (long i=0; i<nColLevelCount; i++) pColResults[i].realloc(nColDimSize); - // ScDPResultDimension* pColResDim = pColResRoot->GetChildDimension(); - // pColResDim->FillMemberResults( pColResults, 0, pResData->GetColStartMeasure() ); long nPos = 0; pColResRoot->FillMemberResults( pColResults, nPos, pResData->GetColStartMeasure(), TRUE, NULL, NULL ); @@ -1105,8 +1101,6 @@ void ScDPSource::FillMemberResults() for (long i=0; i<nRowLevelCount; i++) pRowResults[i].realloc(nRowDimSize); - // ScDPResultDimension* pRowResDim = pRowResRoot->GetChildDimension(); - // pRowResDim->FillMemberResults( pRowResults, 0, pResData->GetRowStartMeasure() ); long nPos = 0; pRowResRoot->FillMemberResults( pRowResults, nPos, pResData->GetRowStartMeasure(), TRUE, NULL, NULL ); @@ -1466,7 +1460,6 @@ long ScDPDimension::getUsedHierarchy() const void ScDPDimension::setUsedHierarchy(long /* nNew */) { // #i52547# don't use the incomplete date hierarchy implementation - ignore the call - // nUsedHier = nNew; } ScDPDimension* ScDPDimension::CreateCloneObject() @@ -1732,9 +1725,9 @@ uno::Any SAL_CALL ScDPDimension::getPropertyValue( const rtl::OUString& aPropert aRet <<= uno::Sequence<sheet::TableFilterField>(0); } else if (aNameStr.EqualsAscii(SC_UNO_LAYOUTNAME)) - aRet <<= mpLayoutName.get() ? *mpLayoutName : OUString::createFromAscii(""); + aRet <<= mpLayoutName.get() ? *mpLayoutName : OUString(RTL_CONSTASCII_USTRINGPARAM("")); else if (aNameStr.EqualsAscii(SC_UNO_FIELD_SUBTOTALNAME)) - aRet <<= mpSubtotalName.get() ? *mpSubtotalName : OUString::createFromAscii(""); + aRet <<= mpSubtotalName.get() ? *mpSubtotalName : OUString(RTL_CONSTASCII_USTRINGPARAM("")); else if (aNameStr.EqualsAscii(SC_UNO_HAS_HIDDEN_MEMBER)) aRet <<= mbHasHiddenMember; else if (aNameStr.EqualsAscii(SC_UNO_FLAGS)) @@ -1761,14 +1754,7 @@ ScDPHierarchies::ScDPHierarchies( ScDPSource* pSrc, long nD ) : { //! hold pSource -#if 0 // date columns have 3 hierarchies (flat/quarter/week), other columns only one - long nSrcDim = pSource->GetSourceDim( nDim ); - if ( pSource->IsDateDimension( nSrcDim ) ) - nHierCount = SC_DAPI_DATE_HIERARCHIES; - else - nHierCount = 1; -#endif // #i52547# don't offer the incomplete date hierarchy implementation nHierCount = 1; @@ -1804,7 +1790,6 @@ uno::Any SAL_CALL ScDPHierarchies::getByName( const rtl::OUString& aName ) } throw container::NoSuchElementException(); -// return uno::Any(); } uno::Sequence<rtl::OUString> SAL_CALL ScDPHierarchies::getElementNames() throw(uno::RuntimeException) @@ -1988,7 +1973,6 @@ uno::Any SAL_CALL ScDPLevels::getByName( const rtl::OUString& aName ) } throw container::NoSuchElementException(); -// return uno::Any(); } uno::Sequence<rtl::OUString> SAL_CALL ScDPLevels::getElementNames() throw(uno::RuntimeException) @@ -2134,7 +2118,6 @@ void ScDPLevel::EvaluateSortOrder() ScDPMembers* pLocalMembers = GetMembersObject(); long nCount = pLocalMembers->getCount(); -// DBG_ASSERT( aGlobalOrder.empty(), "sort twice?" ); aGlobalOrder.resize( nCount ); for (long nPos=0; nPos<nCount; nPos++) aGlobalOrder[nPos] = nPos; @@ -2329,7 +2312,6 @@ void SAL_CALL ScDPLevel::setPropertyValue( const rtl::OUString& aPropertyName, c else { DBG_ERROR("unknown property"); - //! THROW( UnknownPropertyException() ); } } @@ -2369,7 +2351,6 @@ uno::Any SAL_CALL ScDPLevel::getPropertyValue( const rtl::OUString& aPropertyNam else { DBG_ERROR("unknown property"); - //! THROW( UnknownPropertyException() ); } return aRet; } @@ -2399,7 +2380,6 @@ ScDPMembers::ScDPMembers( ScDPSource* pSrc, long nD, long nH, long nL ) : { case SC_DAPI_LEVEL_YEAR: { - // Wang Xu Ming - DataPilot migration const ScDPItemData* pLastNumData = NULL; for ( SCROW n = 0 ;n <GetSrcItemsCount() ; n-- ) { @@ -2409,7 +2389,6 @@ ScDPMembers::ScDPMembers( ScDPSource* pSrc, long nD, long nH, long nL ) : else pLastNumData = pData; } - // End Comments if ( pLastNumData ) { @@ -2502,7 +2481,6 @@ uno::Any SAL_CALL ScDPMembers::getByName( const rtl::OUString& aName ) } throw container::NoSuchElementException(); -// return uno::Any(); } uno::Sequence<rtl::OUString> SAL_CALL ScDPMembers::getElementNames() throw(uno::RuntimeException) @@ -2599,13 +2577,11 @@ ScDPMember* ScDPMembers::getByIndex(long nIndex) const { //! cache year range here! - // Wang Xu Ming - DataPilot migration double fFirstVal = pSource->GetData()->GetMemberByIndex( nSrcDim, 0 )->GetValue(); long nFirstYear = pSource->GetData()->GetDatePart( (long)::rtl::math::approxFloor( fFirstVal ), nHier, nLev ); - // End Comments nVal = nFirstYear + nIndex; } else if ( nHier == SC_DAPI_HIERARCHY_WEEK && nLev == SC_DAPI_LEVEL_WEEKDAY ) @@ -2670,22 +2646,6 @@ ScDPMember::~ScDPMember() //! release pSource } -BOOL ScDPMember::IsNamedItem( const ScDPItemData& r ) const -{ - long nSrcDim = pSource->GetSourceDim( nDim ); - if ( nHier != SC_DAPI_HIERARCHY_FLAT && pSource->IsDateDimension( nSrcDim ) && r.IsValue() ) - { - long nComp = pSource->GetData()->GetDatePart( - (long)::rtl::math::approxFloor( r.GetValue() ), - nHier, nLev ); - - // fValue is converted from integer, so simple comparison works - return nComp == GetItemData().GetValue(); - } - - return r.IsCaseInsEqual( GetItemData() ); -} - BOOL ScDPMember::IsNamedItem( SCROW nIndex ) const { long nSrcDim = pSource->GetSourceDim( nDim ); @@ -2834,7 +2794,6 @@ void SAL_CALL ScDPMember::setPropertyValue( const rtl::OUString& aPropertyName, else { DBG_ERROR("unknown property"); - //! THROW( UnknownPropertyException() ); } } @@ -2855,7 +2814,6 @@ uno::Any SAL_CALL ScDPMember::getPropertyValue( const rtl::OUString& aPropertyNa else { DBG_ERROR("unknown property"); - //! THROW( UnknownPropertyException() ); } return aRet; } @@ -2866,7 +2824,7 @@ SC_IMPL_DUMMY_PROPERTY_LISTENER( ScDPMember ) ScDPTableDataCache* ScDPSource::GetCache() { DBG_ASSERT( GetData() , "empty ScDPTableData pointer"); - return ( GetData()!=NULL) ? GetData()->GetCacheTable().GetCache() : NULL ; + return ( GetData()!=NULL) ? GetData()->GetCacheTable().getCache() : NULL ; } const ScDPItemData& ScDPMember::GetItemData() const @@ -2906,6 +2864,5 @@ const ScDPItemData* ScDPMembers::GetSrcItemDataByIndex( SCROW nIndex) { return pSource->GetData()->GetColumnEntries( nDim ).size(); } -// End Comments /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/data/drawpage.cxx b/sc/source/core/data/drawpage.cxx index 541318df0c8c..ff18ac6e05e9 100644 --- a/sc/source/core/data/drawpage.cxx +++ b/sc/source/core/data/drawpage.cxx @@ -44,7 +44,7 @@ // ----------------------------------------------------------------------- -ScDrawPage::ScDrawPage(ScDrawLayer& rNewModel, StarBASIC* pBasic, BOOL bMasterPage) : +ScDrawPage::ScDrawPage(ScDrawLayer& rNewModel, StarBASIC* pBasic, bool bMasterPage) : FmFormPage(rNewModel, pBasic, bMasterPage) { SetSize( Size( LONG_MAX, LONG_MAX ) ); @@ -52,7 +52,7 @@ ScDrawPage::ScDrawPage(ScDrawLayer& rNewModel, StarBASIC* pBasic, BOOL bMasterPa // ----------------------------------------------------------------------- -__EXPORT ScDrawPage::~ScDrawPage() +ScDrawPage::~ScDrawPage() { } diff --git a/sc/source/core/data/drwlayer.cxx b/sc/source/core/data/drwlayer.cxx index 31b2291c1ef8..7ea95632118a 100644 --- a/sc/source/core/data/drwlayer.cxx +++ b/sc/source/core/data/drwlayer.cxx @@ -69,6 +69,9 @@ #include <vcl/svapp.hxx> #include <unotools/ucbstreamhelper.hxx> +#include <basegfx/polygon/b2dpolygon.hxx> +#include <basegfx/polygon/b2dpolygontools.hxx> + #include "drwlayer.hxx" #include "drawpage.hxx" #include "global.hxx" @@ -89,7 +92,6 @@ // Abstand zur naechsten Zelle beim Loeschen (bShrink), damit der Anker // immer an der richtigen Zelle angezeigt wird -//#define SHRINK_DIST 3 // und noch etwas mehr, damit das Objekt auch sichtbar in der Zelle liegt #define SHRINK_DIST 25 @@ -107,7 +109,6 @@ static E3dObjFactory* pF3d = NULL; static USHORT nInst = 0; SfxObjectShell* ScDrawLayer::pGlobalDrawPersist = NULL; -//REMOVE SvPersist* ScDrawLayer::pGlobalDrawPersist = NULL; BOOL bDrawIsInUndo = FALSE; //! Member @@ -123,7 +124,7 @@ ScUndoObjData::ScUndoObjData( SdrObject* pObjP, const ScAddress& rOS, const ScAd { } -__EXPORT ScUndoObjData::~ScUndoObjData() +ScUndoObjData::~ScUndoObjData() { } @@ -138,7 +139,7 @@ void ScUndoObjData::Undo() } } -void __EXPORT ScUndoObjData::Redo() +void ScUndoObjData::Redo() { ScDrawObjData* pData = ScDrawLayer::GetObjData( pObj ); DBG_ASSERT(pData,"ScUndoObjData: Daten nicht da"); @@ -156,7 +157,7 @@ ScTabDeletedHint::ScTabDeletedHint( SCTAB nTabNo ) : { } -__EXPORT ScTabDeletedHint::~ScTabDeletedHint() +ScTabDeletedHint::~ScTabDeletedHint() { } @@ -165,7 +166,7 @@ ScTabSizeChangedHint::ScTabSizeChangedHint( SCTAB nTabNo ) : { } -__EXPORT ScTabSizeChangedHint::~ScTabSizeChangedHint() +ScTabSizeChangedHint::~ScTabSizeChangedHint() { } @@ -305,12 +306,10 @@ ScDrawLayer::ScDrawLayer( ScDocument* pDocument, const String& rName ) : } } -__EXPORT ScDrawLayer::~ScDrawLayer() +ScDrawLayer::~ScDrawLayer() { Broadcast(SdrHint(HINT_MODELCLEARED)); - // #116168# - //Clear(); ClearModel(sal_True); delete pUndoGroup; @@ -335,7 +334,7 @@ void ScDrawLayer::UseHyphenator() } } -SdrPage* __EXPORT ScDrawLayer::AllocPage(bool bMasterPage) +SdrPage* ScDrawLayer::AllocPage(bool bMasterPage) { // don't create basic until it is needed StarBASIC* pBasic = NULL; @@ -361,7 +360,7 @@ void ScDrawLayer::UpdateBasic() //! remove this method? } -SdrModel* __EXPORT ScDrawLayer::AllocModel() const +SdrModel* ScDrawLayer::AllocModel() const { // #103849# Allocated model (for clipboard etc) must not have a pointer // to the original model's document, pass NULL as document: @@ -369,7 +368,7 @@ SdrModel* __EXPORT ScDrawLayer::AllocModel() const return new ScDrawLayer( NULL, aName ); } -Window* __EXPORT ScDrawLayer::GetCurDocViewWin() +Window* ScDrawLayer::GetCurDocViewWin() { DBG_ASSERT( pDoc, "ScDrawLayer::GetCurDocViewWin without document" ); if ( !pDoc ) @@ -443,9 +442,7 @@ void ScDrawLayer::ScCopyPage( USHORT nOldPos, USHORT nNewPos, BOOL bAlloc ) SdrObject* pOldObject = aIter.Next(); while (pOldObject) { - // #116235# SdrObject* pNewObject = pOldObject->Clone(); - //SdrObject* pNewObject = pOldObject->Clone( pNewPage, this ); pNewObject->SetModel(this); pNewObject->SetPage(pNewPage); @@ -539,7 +536,41 @@ void ScDrawLayer::SetPageSize( USHORT nPageNo, const Size& rSize, bool bUpdateNo } } -void ScDrawLayer::RecalcPos( SdrObject* pObj, const ScDrawObjData& rData, bool bNegativePage, bool bUpdateNoteCaptionPos ) +namespace +{ + //Can't have a zero width dimension + Rectangle lcl_makeSafeRectangle(const Rectangle &rNew) + { + Rectangle aRect = rNew; + if (aRect.Bottom() == aRect.Top()) + aRect.Bottom() = aRect.Top()+1; + if (aRect.Right() == aRect.Left()) + aRect.Right() = aRect.Left()+1; + return aRect; + } + + Point lcl_calcAvailableDiff(ScDocument &rDoc, SCCOL nCol, SCROW nRow, SCTAB nTab, const Point &aWantedDiff) + { + Point aAvailableDiff(aWantedDiff); + long nHeight = rDoc.GetRowHeight( nRow, nTab ) * HMM_PER_TWIPS; + long nWidth = rDoc.GetColWidth( nCol, nTab ) * HMM_PER_TWIPS; + if (aAvailableDiff.Y() > nHeight) + aAvailableDiff.Y() = nHeight; + if (aAvailableDiff.X() > nWidth) + aAvailableDiff.X() = nWidth; + return aAvailableDiff; + } + + Rectangle lcl_UpdateCalcPoly(basegfx::B2DPolygon &rCalcPoly, int nWhichPoint, const Point &rPos) + { + rCalcPoly.setB2DPoint(nWhichPoint, basegfx::B2DPoint(rPos.X(), rPos.Y())); + basegfx::B2DRange aRange(basegfx::tools::getRange(rCalcPoly)); + return Rectangle(aRange.getMinX(), aRange.getMinY(), + aRange.getMaxX(), aRange.getMaxY()); + } +} + +void ScDrawLayer::RecalcPos( SdrObject* pObj, ScDrawObjData& rData, bool bNegativePage, bool bUpdateNoteCaptionPos ) { DBG_ASSERT( pDoc, "ScDrawLayer::RecalcPos - missing document" ); if( !pDoc ) @@ -578,6 +609,8 @@ void ScDrawLayer::RecalcPos( SdrObject* pObj, const ScDrawObjData& rData, bool b if( bCircle ) { + rData.maLastRect = pObj->GetLogicRect(); + Point aPos( pDoc->GetColOffset( nCol1, nTab1 ), pDoc->GetRowOffset( nRow1, nTab1 ) ); TwipsToMM( aPos.X() ); TwipsToMM( aPos.Y() ); @@ -598,11 +631,18 @@ void ScDrawLayer::RecalcPos( SdrObject* pObj, const ScDrawObjData& rData, bool b { if (bRecording) AddCalcUndo( new SdrUndoGeoObj( *pObj ) ); - pObj->SetLogicRect(aRect); + rData.maLastRect = lcl_makeSafeRectangle(aRect); + pObj->SetLogicRect(rData.maLastRect); } } else if( bArrow ) { + rData.maLastRect = pObj->GetLogicRect(); + basegfx::B2DPolygon aCalcPoly; + Point aOrigStartPos(pObj->GetPoint(0)); + Point aOrigEndPos(pObj->GetPoint(1)); + aCalcPoly.append(basegfx::B2DPoint(aOrigStartPos.X(), aOrigStartPos.Y())); + aCalcPoly.append(basegfx::B2DPoint(aOrigEndPos.X(), aOrigEndPos.Y())); //! nicht mehrere Undos fuer ein Objekt erzeugen (hinteres kann dann weggelassen werden) SCCOL nLastCol; @@ -623,6 +663,8 @@ void ScDrawLayer::RecalcPos( SdrObject* pObj, const ScDrawObjData& rData, bool b { if (bRecording) AddCalcUndo( new SdrUndoGeoObj( *pObj ) ); + + rData.maLastRect = lcl_UpdateCalcPoly(aCalcPoly, 0, aStartPos); pObj->SetPoint( aStartPos, 0 ); } @@ -637,6 +679,8 @@ void ScDrawLayer::RecalcPos( SdrObject* pObj, const ScDrawObjData& rData, bool b { if (bRecording) AddCalcUndo( new SdrUndoGeoObj( *pObj ) ); + + rData.maLastRect = lcl_UpdateCalcPoly(aCalcPoly, 1, aEndPos); pObj->SetPoint( aEndPos, 1 ); } } @@ -657,6 +701,8 @@ void ScDrawLayer::RecalcPos( SdrObject* pObj, const ScDrawObjData& rData, bool b { if (bRecording) AddCalcUndo( new SdrUndoGeoObj( *pObj ) ); + + rData.maLastRect = lcl_UpdateCalcPoly(aCalcPoly, 1, aEndPos); pObj->SetPoint( aEndPos, 1 ); } @@ -673,45 +719,68 @@ void ScDrawLayer::RecalcPos( SdrObject* pObj, const ScDrawObjData& rData, bool b { if (bRecording) AddCalcUndo( new SdrUndoGeoObj( *pObj ) ); + + rData.maLastRect = lcl_UpdateCalcPoly(aCalcPoly, 0, aStartPos); pObj->SetPoint( aStartPos, 0 ); } } } } - else // Referenz-Rahmen + else { + bool bCanResize = bValid2 && !pObj->IsResizeProtect(); + + //First time positioning, must be able to at least move it + if (rData.maLastRect.IsEmpty()) + rData.maLastRect = pObj->GetLogicRect(); + DBG_ASSERT( bValid1, "ScDrawLayer::RecalcPos - invalid start position" ); Point aPos( pDoc->GetColOffset( nCol1, nTab1 ), pDoc->GetRowOffset( nRow1, nTab1 ) ); TwipsToMM( aPos.X() ); TwipsToMM( aPos.Y() ); + aPos += lcl_calcAvailableDiff(*pDoc, nCol1, nRow1, nTab1, rData.maStartOffset); - if( bValid2 ) + if( bCanResize ) { - Point aEnd( pDoc->GetColOffset( nCol2 + 1, nTab2 ), pDoc->GetRowOffset( nRow2 + 1, nTab2 ) ); + Point aEnd( pDoc->GetColOffset( nCol2, nTab2 ), pDoc->GetRowOffset( nRow2, nTab2 ) ); TwipsToMM( aEnd.X() ); TwipsToMM( aEnd.Y() ); + aEnd += lcl_calcAvailableDiff(*pDoc, nCol2, nRow2, nTab2, rData.maEndOffset); Rectangle aNew( aPos, aEnd ); if ( bNegativePage ) MirrorRectRTL( aNew ); if ( pObj->GetLogicRect() != aNew ) { + Rectangle aOld(pObj->GetLogicRect()); + if (bRecording) AddCalcUndo( new SdrUndoGeoObj( *pObj ) ); - pObj->SetLogicRect(aNew); + rData.maLastRect = lcl_makeSafeRectangle(aNew); + pObj->SetLogicRect(rData.maLastRect); } } else { if ( bNegativePage ) - aPos.X() = -aPos.X(); + aPos.X() = -aPos.X() - rData.maLastRect.GetWidth(); if ( pObj->GetRelativePos() != aPos ) { if (bRecording) AddCalcUndo( new SdrUndoGeoObj( *pObj ) ); + rData.maLastRect.SetPos( aPos ); pObj->SetRelativePos( aPos ); } } + + /* + * If we were not allowed resize the object, then the end cell anchor + * is possibly incorrect now, and if the object has no end-cell (e.g. + * missing in original .xml) we are also forced to generate one + */ + bool bEndAnchorIsBad = !bValid2 || pObj->IsResizeProtect(); + if (bEndAnchorIsBad) + ScDrawLayer::UpdateCellAnchorFromPositionEnd(*pObj, *pDoc, nTab1); } } @@ -870,167 +939,18 @@ void ScDrawLayer::AddCalcUndo( SdrUndoAction* pUndo ) void ScDrawLayer::BeginCalcUndo() { -//! DBG_ASSERT( !bRecording, "BeginCalcUndo ohne GetCalcUndo" ); - DELETEZ(pUndoGroup); bRecording = TRUE; } SdrUndoGroup* ScDrawLayer::GetCalcUndo() { -//! DBG_ASSERT( bRecording, "GetCalcUndo ohne BeginCalcUndo" ); - SdrUndoGroup* pRet = pUndoGroup; pUndoGroup = NULL; bRecording = FALSE; return pRet; } -// MoveAreaTwips: all measures are kept in twips -void ScDrawLayer::MoveAreaTwips( SCTAB nTab, const Rectangle& rArea, - const Point& rMove, const Point& rTopLeft ) -{ - if (!rMove.X() && !rMove.Y()) - return; // nix - - SdrPage* pPage = GetPage(static_cast<sal_uInt16>(nTab)); - DBG_ASSERT(pPage,"Page nicht gefunden"); - if (!pPage) - return; - - BOOL bNegativePage = pDoc && pDoc->IsNegativePage( nTab ); - - // fuer Shrinking! - Rectangle aNew( rArea ); - BOOL bShrink = FALSE; - if ( rMove.X() < 0 || rMove.Y() < 0 ) // verkleinern - { - if ( rTopLeft != rArea.TopLeft() ) // sind gleich beim Verschieben von Zellen - { - bShrink = TRUE; - aNew.Left() = rTopLeft.X(); - aNew.Top() = rTopLeft.Y(); - } - } - SdrObjListIter aIter( *pPage, IM_FLAT ); - SdrObject* pObject = aIter.Next(); - while (pObject) - { - if( GetAnchor( pObject ) == SCA_CELL ) - { - if ( GetObjData( pObject ) ) // Detektiv-Pfeil ? - { - // hier nichts - } - else if ( pObject->ISA( SdrEdgeObj ) ) // Verbinder? - { - // hier auch nichts - //! nicht verbundene Enden wie bei Linien (s.u.) behandeln? - } - else if ( pObject->IsPolyObj() && pObject->GetPointCount()==2 ) - { - for (USHORT i=0; i<2; i++) - { - BOOL bMoved = FALSE; - Point aPoint = pObject->GetPoint(i); - lcl_ReverseTwipsToMM( aPoint ); - if (rArea.IsInside(aPoint)) - { - aPoint += rMove; bMoved = TRUE; - } - else if (bShrink && aNew.IsInside(aPoint)) - { - // Punkt ist in betroffener Zelle - Test auf geloeschten Bereich - if ( rMove.X() && aPoint.X() >= rArea.Left() + rMove.X() ) - { - aPoint.X() = rArea.Left() + rMove.X() - SHRINK_DIST_TWIPS; - if ( aPoint.X() < 0 ) aPoint.X() = 0; - bMoved = TRUE; - } - if ( rMove.Y() && aPoint.Y() >= rArea.Top() + rMove.Y() ) - { - aPoint.Y() = rArea.Top() + rMove.Y() - SHRINK_DIST_TWIPS; - if ( aPoint.Y() < 0 ) aPoint.Y() = 0; - bMoved = TRUE; - } - } - if( bMoved ) - { - AddCalcUndo( new SdrUndoGeoObj( *pObject ) ); - lcl_TwipsToMM( aPoint ); - pObject->SetPoint( aPoint, i ); - } - } - } - else - { - Rectangle aObjRect = pObject->GetLogicRect(); - // aOldMMPos: not converted, millimeters - Point aOldMMPos = bNegativePage ? aObjRect.TopRight() : aObjRect.TopLeft(); - lcl_ReverseTwipsToMM( aObjRect ); - Point aTopLeft = bNegativePage ? aObjRect.TopRight() : aObjRect.TopLeft(); // logical left - Size aMoveSize; - BOOL bDoMove = FALSE; - if (rArea.IsInside(aTopLeft)) - { - aMoveSize = Size(rMove.X(),rMove.Y()); - bDoMove = TRUE; - } - else if (bShrink && aNew.IsInside(aTopLeft)) - { - // Position ist in betroffener Zelle - Test auf geloeschten Bereich - if ( rMove.X() && aTopLeft.X() >= rArea.Left() + rMove.X() ) - { - aMoveSize.Width() = rArea.Left() + rMove.X() - SHRINK_DIST - aTopLeft.X(); - bDoMove = TRUE; - } - if ( rMove.Y() && aTopLeft.Y() >= rArea.Top() + rMove.Y() ) - { - aMoveSize.Height() = rArea.Top() + rMove.Y() - SHRINK_DIST - aTopLeft.Y(); - bDoMove = TRUE; - } - } - if ( bDoMove ) - { - if ( bNegativePage ) - { - if ( aTopLeft.X() + aMoveSize.Width() > 0 ) - aMoveSize.Width() = -aTopLeft.X(); - } - else - { - if ( aTopLeft.X() + aMoveSize.Width() < 0 ) - aMoveSize.Width() = -aTopLeft.X(); - } - if ( aTopLeft.Y() + aMoveSize.Height() < 0 ) - aMoveSize.Height() = -aTopLeft.Y(); - - // get corresponding move size in millimeters: - Point aNewPos( aTopLeft.X() + aMoveSize.Width(), aTopLeft.Y() + aMoveSize.Height() ); - lcl_TwipsToMM( aNewPos ); - aMoveSize = Size( aNewPos.X() - aOldMMPos.X(), aNewPos.Y() - aOldMMPos.Y() ); // millimeters - - AddCalcUndo( new SdrUndoMoveObj( *pObject, aMoveSize ) ); - pObject->Move( aMoveSize ); - } - else if ( rArea.IsInside( bNegativePage ? aObjRect.BottomLeft() : aObjRect.BottomRight() ) && - !pObject->IsResizeProtect() ) - { - // geschuetzte Groessen werden nicht veraendert - // (Positionen schon, weil sie ja an der Zelle "verankert" sind) - AddCalcUndo( new SdrUndoGeoObj( *pObject ) ); - long nOldSizeX = aObjRect.Right() - aObjRect.Left() + 1; - long nOldSizeY = aObjRect.Bottom() - aObjRect.Top() + 1; - long nLogMoveX = rMove.X() * ( bNegativePage ? -1 : 1 ); // logical direction - pObject->Resize( aOldMMPos, Fraction( nOldSizeX+nLogMoveX, nOldSizeX ), - Fraction( nOldSizeY+rMove.Y(), nOldSizeY ) ); - } - } - } - pObject = aIter.Next(); - } -} - void ScDrawLayer::MoveArea( SCTAB nTab, SCCOL nCol1,SCROW nRow1, SCCOL nCol2,SCROW nRow2, SCsCOL nDx,SCsROW nDy, BOOL bInsDel, bool bUpdateNoteCaptionPos ) { @@ -1072,11 +992,6 @@ void ScDrawLayer::MoveArea( SCTAB nTab, SCCOL nCol1,SCROW nRow1, SCCOL nCol2,SCR aTopLeft.Y() += aMove.Y(); } - // drawing objects are now directly included in cut&paste - // -> only update references when inserting/deleting (or changing widths or heights) - if ( bInsDel ) - MoveAreaTwips( nTab, aRect, aMove, aTopLeft ); - // // Detektiv-Pfeile: Zellpositionen anpassen // @@ -1084,72 +999,6 @@ void ScDrawLayer::MoveArea( SCTAB nTab, SCCOL nCol1,SCROW nRow1, SCCOL nCol2,SCR MoveCells( nTab, nCol1,nRow1, nCol2,nRow2, nDx,nDy, bUpdateNoteCaptionPos ); } -void ScDrawLayer::WidthChanged( SCTAB nTab, SCCOL nCol, long nDifTwips ) -{ - DBG_ASSERT( pDoc, "ScDrawLayer::WidthChanged without document" ); - if ( !pDoc ) - return; - - if (!bAdjustEnabled) - return; - - Rectangle aRect; - Point aTopLeft; - - for (SCCOL i=0; i<nCol; i++) - aRect.Left() += pDoc->GetColWidth(i,nTab); - aTopLeft.X() = aRect.Left(); - aRect.Left() += pDoc->GetColWidth(nCol,nTab); - - aRect.Right() = MAXMM; - aRect.Top() = 0; - aRect.Bottom() = MAXMM; - - //! aTopLeft ist falsch, wenn mehrere Spalten auf einmal ausgeblendet werden - - BOOL bNegativePage = pDoc->IsNegativePage( nTab ); - if ( bNegativePage ) - { - MirrorRectRTL( aRect ); - aTopLeft.X() = -aTopLeft.X(); - nDifTwips = -nDifTwips; - } - - MoveAreaTwips( nTab, aRect, Point( nDifTwips,0 ), aTopLeft ); -} - -void ScDrawLayer::HeightChanged( SCTAB nTab, SCROW nRow, long nDifTwips ) -{ - DBG_ASSERT( pDoc, "ScDrawLayer::HeightChanged without document" ); - if ( !pDoc ) - return; - - if (!bAdjustEnabled) - return; - - Rectangle aRect; - Point aTopLeft; - - aRect.Top() += pDoc->GetRowHeight( 0, nRow-1, nTab); - aTopLeft.Y() = aRect.Top(); - aRect.Top() += pDoc->GetRowHeight(nRow, nTab); - - aRect.Bottom() = MAXMM; - aRect.Left() = 0; - aRect.Right() = MAXMM; - - //! aTopLeft ist falsch, wenn mehrere Zeilen auf einmal ausgeblendet werden - - BOOL bNegativePage = pDoc->IsNegativePage( nTab ); - if ( bNegativePage ) - { - MirrorRectRTL( aRect ); - aTopLeft.X() = -aTopLeft.X(); - } - - MoveAreaTwips( nTab, aRect, Point( 0,nDifTwips ), aTopLeft ); -} - BOOL ScDrawLayer::HasObjectsInRows( SCTAB nTab, SCROW nStartRow, SCROW nEndRow ) { DBG_ASSERT( pDoc, "ScDrawLayer::HasObjectsInRows without document" ); @@ -1214,10 +1063,10 @@ void ScDrawLayer::DeleteObjectsInArea( SCTAB nTab, SCCOL nCol1,SCROW nRow1, pPage->RecalcObjOrdNums(); - long nDelCount = 0; ULONG nObjCount = pPage->GetObjCount(); if (nObjCount) { + long nDelCount = 0; Rectangle aDelRect = pDoc->GetMMRect( nCol1, nRow1, nCol2, nRow2, nTab ); SdrObject** ppObj = new SdrObject*[nObjCount]; @@ -1270,10 +1119,10 @@ void ScDrawLayer::DeleteObjectsInSelection( const ScMarkData& rMark ) if (pPage) { pPage->RecalcObjOrdNums(); - long nDelCount = 0; ULONG nObjCount = pPage->GetObjCount(); if (nObjCount) { + long nDelCount = 0; // Rechteck um die ganze Selektion Rectangle aMarkBound = pDoc->GetMMRect( aMarkRange.aStart.Col(), aMarkRange.aStart.Row(), @@ -1356,9 +1205,7 @@ void ScDrawLayer::CopyToClip( ScDocument* pClipDoc, SCTAB nTab, const Rectangle& DBG_ASSERT( pDestPage, "no page" ); if (pDestPage) { - // #116235# SdrObject* pNewObject = pOldObject->Clone(); - //SdrObject* pNewObject = pOldObject->Clone( pDestPage, pDestModel ); pNewObject->SetModel(pDestModel); pNewObject->SetPage(pDestPage); @@ -1385,10 +1232,9 @@ BOOL lcl_IsAllInRange( const ::std::vector< ScRangeList >& rRangesVector, const for( ;aIt!=rRangesVector.end(); ++aIt ) { const ScRangeList& rRanges = *aIt; - ULONG nCount = rRanges.Count(); - for (ULONG i=0; i<nCount; i++) + for ( size_t i = 0, nCount = rRanges.size(); i < nCount; i++ ) { - ScRange aRange = *rRanges.GetObject(i); + ScRange aRange = *rRanges[ i ]; if ( !rClipRange.In( aRange ) ) { return FALSE; // at least one range is not valid @@ -1407,10 +1253,9 @@ BOOL lcl_MoveRanges( ::std::vector< ScRangeList >& rRangesVector, const ScRange& for( ;aIt!=rRangesVector.end(); ++aIt ) { ScRangeList& rRanges = *aIt; - ULONG nCount = rRanges.Count(); - for (ULONG i=0; i<nCount; i++) + for ( size_t i = 0, nCount = rRanges.size(); i < nCount; i++ ) { - ScRange* pRange = rRanges.GetObject(i); + ScRange* pRange = rRanges[ i ]; if ( rSourceRange.In( *pRange ) ) { SCsCOL nDiffX = rDestPos.Col() - (SCsCOL)rSourceRange.aStart.Col(); @@ -1522,9 +1367,7 @@ void ScDrawLayer::CopyFromClip( ScDrawLayer* pClipModel, SCTAB nSourceTab, const // do not copy internal objects (detective) and note captions if ( rSourceRange.IsInside( aObjRect ) && (pOldObject->GetLayer() != SC_LAYER_INTERN) && !IsNoteCaption( pOldObject ) ) { - // #116235# SdrObject* pNewObject = pOldObject->Clone(); - //SdrObject* pNewObject = pOldObject->Clone( pDestPage, this ); pNewObject->SetModel(this); pNewObject->SetPage(pDestPage); @@ -1663,7 +1506,6 @@ void ScDrawLayer::MirrorRTL( SdrObject* pObj ) } } -// static void ScDrawLayer::MirrorRectRTL( Rectangle& rRect ) { // mirror and swap left/right @@ -1713,7 +1555,6 @@ Rectangle ScDrawLayer::GetCellRect( ScDocument& rDoc, const ScAddress& rPos, boo return aCellRect; } -// static String ScDrawLayer::GetVisibleName( SdrObject* pObj ) { String aName = pObj->GetName(); @@ -1821,35 +1662,105 @@ void ScDrawLayer::EnsureGraphicNames() } } -void ScDrawLayer::SetAnchor( SdrObject* pObj, ScAnchorType eType ) +namespace { - ScAnchorType eOldAnchorType = GetAnchor( pObj ); + SdrObjUserData* GetFirstUserDataOfType(const SdrObject *pObj, UINT16 nId) + { + USHORT nCount = pObj ? pObj->GetUserDataCount() : 0; + for( USHORT i = 0; i < nCount; i++ ) + { + SdrObjUserData* pData = pObj->GetUserData( i ); + if( pData && pData->GetInventor() == SC_DRAWLAYER && pData->GetId() == nId ) + return pData; + } + return NULL; + } - // Ein an der Seite verankertes Objekt zeichnet sich durch eine Anker-Pos - // von (0,1) aus. Das ist ein shabby Trick, der aber funktioniert! - Point aAnchor( 0, eType == SCA_PAGE ? 1 : 0 ); - pObj->SetAnchorPos( aAnchor ); + void DeleteFirstUserDataOfType(SdrObject *pObj, UINT16 nId) + { + USHORT nCount = pObj ? pObj->GetUserDataCount() : 0; + for( USHORT i = nCount; i > 0; i-- ) + { + SdrObjUserData* pData = pObj->GetUserData( i-1 ); + if( pData && pData->GetInventor() == SC_DRAWLAYER && pData->GetId() == nId ) + pObj->DeleteUserData(i-1); + } + } +} - if ( eOldAnchorType != eType ) - pObj->notifyShapePropertyChange( ::svx::eSpreadsheetAnchor ); +void ScDrawLayer::SetCellAnchored( SdrObject &rObj, const ScDrawObjData &rAnchor ) +{ + ScDrawObjData* pAnchor = GetObjData( &rObj, true ); + pAnchor->maStart = rAnchor.maStart; + pAnchor->maEnd = rAnchor.maEnd; + pAnchor->maStartOffset = rAnchor.maStartOffset; + pAnchor->maEndOffset = rAnchor.maEndOffset; } -ScAnchorType ScDrawLayer::GetAnchor( const SdrObject* pObj ) +void ScDrawLayer::SetCellAnchoredFromPosition( SdrObject &rObj, const ScDocument &rDoc, SCTAB nTab ) { - Point aAnchor( pObj->GetAnchorPos() ); - return ( aAnchor.Y() != 0 ) ? SCA_PAGE : SCA_CELL; + Rectangle aObjRect(rObj.GetLogicRect()); + ScRange aRange = rDoc.GetRange( nTab, aObjRect ); + + Rectangle aCellRect; + + ScDrawObjData aAnchor; + aAnchor.maStart = aRange.aStart; + aCellRect = rDoc.GetMMRect( aRange.aStart.Col(), aRange.aStart.Row(), + aRange.aStart.Col(), aRange.aStart.Row(), aRange.aStart.Tab() ); + aAnchor.maStartOffset.Y() = aObjRect.Top()-aCellRect.Top(); + if (!rDoc.IsNegativePage(nTab)) + aAnchor.maStartOffset.X() = aObjRect.Left()-aCellRect.Left(); + else + aAnchor.maStartOffset.X() = aCellRect.Right()-aObjRect.Right(); + + aAnchor.maEnd = aRange.aEnd; + aCellRect = rDoc.GetMMRect( aRange.aEnd.Col(), aRange.aEnd.Row(), + aRange.aEnd.Col(), aRange.aEnd.Row(), aRange.aEnd.Tab() ); + aAnchor.maEndOffset.Y() = aObjRect.Bottom()-aCellRect.Top(); + if (!rDoc.IsNegativePage(nTab)) + aAnchor.maEndOffset.X() = aObjRect.Right()-aCellRect.Left(); + else + aAnchor.maEndOffset.X() = aCellRect.Right()-aObjRect.Left(); + + SetCellAnchored( rObj, aAnchor ); } -ScDrawObjData* ScDrawLayer::GetObjData( SdrObject* pObj, BOOL bCreate ) // static +void ScDrawLayer::UpdateCellAnchorFromPositionEnd( SdrObject &rObj, const ScDocument &rDoc, SCTAB nTab ) { - USHORT nCount = pObj ? pObj->GetUserDataCount() : 0; - for( USHORT i = 0; i < nCount; i++ ) - { - SdrObjUserData* pData = pObj->GetUserData( i ); - if( pData && pData->GetInventor() == SC_DRAWLAYER - && pData->GetId() == SC_UD_OBJDATA ) - return (ScDrawObjData*) pData; - } + Rectangle aObjRect(rObj.GetLogicRect()); + ScRange aRange = rDoc.GetRange( nTab, aObjRect ); + + ScDrawObjData* pAnchor = GetObjData( &rObj, true ); + pAnchor->maEnd = aRange.aEnd; + + Rectangle aCellRect; + aCellRect = rDoc.GetMMRect( aRange.aEnd.Col(), aRange.aEnd.Row(), + aRange.aEnd.Col(), aRange.aEnd.Row(), aRange.aEnd.Tab() ); + pAnchor->maEndOffset.Y() = aObjRect.Bottom()-aCellRect.Top(); + if (!rDoc.IsNegativePage(nTab)) + pAnchor->maEndOffset.X() = aObjRect.Right()-aCellRect.Left(); + else + pAnchor->maEndOffset.X() = aCellRect.Right()-aObjRect.Left(); +} + +void ScDrawLayer::SetPageAnchored( SdrObject &rObj ) +{ + DeleteFirstUserDataOfType(&rObj, SC_UD_OBJDATA); +} + +ScAnchorType ScDrawLayer::GetAnchorType( const SdrObject &rObj ) +{ + //If this object has a cell anchor associated with it + //then its cell-anchored, otherwise its page-anchored + return ScDrawLayer::GetObjData(const_cast<SdrObject*>(&rObj)) ? SCA_CELL : SCA_PAGE; +} + +ScDrawObjData* ScDrawLayer::GetObjData( SdrObject* pObj, BOOL bCreate ) +{ + if (SdrObjUserData *pData = GetFirstUserDataOfType(pObj, SC_UD_OBJDATA)) + return (ScDrawObjData*) pData; + if( pObj && bCreate ) { ScDrawObjData* pData = new ScDrawObjData; @@ -1859,7 +1770,7 @@ ScDrawObjData* ScDrawLayer::GetObjData( SdrObject* pObj, BOOL bCreate ) // s return 0; } -ScDrawObjData* ScDrawLayer::GetObjDataTab( SdrObject* pObj, SCTAB nTab ) // static +ScDrawObjData* ScDrawLayer::GetObjDataTab( SdrObject* pObj, SCTAB nTab ) { ScDrawObjData* pData = GetObjData( pObj ); if ( pData ) @@ -1884,20 +1795,11 @@ ScDrawObjData* ScDrawLayer::GetNoteCaptionData( SdrObject* pObj, SCTAB nTab ) return (pData && pData->mbNote) ? pData : 0; } -ScIMapInfo* ScDrawLayer::GetIMapInfo( SdrObject* pObj ) // static +ScIMapInfo* ScDrawLayer::GetIMapInfo( SdrObject* pObj ) { - USHORT nCount = pObj->GetUserDataCount(); - for( USHORT i = 0; i < nCount; i++ ) - { - SdrObjUserData* pData = pObj->GetUserData( i ); - if( pData && pData->GetInventor() == SC_DRAWLAYER - && pData->GetId() == SC_UD_IMAPDATA ) - return (ScIMapInfo*) pData; - } - return NULL; + return (ScIMapInfo*)GetFirstUserDataOfType(pObj, SC_UD_IMAPDATA); } -// static: IMapObject* ScDrawLayer::GetHitIMapObject( SdrObject* pObj, const Point& rWinPoint, const Window& rCmpWnd ) { @@ -1947,7 +1849,7 @@ IMapObject* ScDrawLayer::GetHitIMapObject( SdrObject* pObj, else if ( pObj->ISA( SdrOle2Obj ) ) // OLE-Objekt { // TODO/LEAN: working with visual area needs running state - aGraphSize = ((SdrOle2Obj*)pObj)->GetOrigObjSize(); + aGraphSize = ((const SdrOle2Obj*)pObj)->GetOrigObjSize(); bObjSupported = TRUE; } @@ -1963,16 +1865,11 @@ IMapObject* ScDrawLayer::GetHitIMapObject( SdrObject* pObj, return pIMapObj; } -ScMacroInfo* ScDrawLayer::GetMacroInfo( SdrObject* pObj, BOOL bCreate ) // static +ScMacroInfo* ScDrawLayer::GetMacroInfo( SdrObject* pObj, BOOL bCreate ) { - USHORT nCount = pObj->GetUserDataCount(); - for( USHORT i = 0; i < nCount; i++ ) - { - SdrObjUserData* pData = pObj->GetUserData( i ); - if( pData && pData->GetInventor() == SC_DRAWLAYER - && pData->GetId() == SC_UD_MACRODATA ) - return (ScMacroInfo*) pData; - } + if (SdrObjUserData *pData = GetFirstUserDataOfType(pObj, SC_UD_MACRODATA)) + return (ScMacroInfo*) pData; + if ( bCreate ) { ScMacroInfo* pData = new ScMacroInfo; @@ -1982,20 +1879,20 @@ ScMacroInfo* ScDrawLayer::GetMacroInfo( SdrObject* pObj, BOOL bCreate ) return 0; } -void ScDrawLayer::SetGlobalDrawPersist(SfxObjectShell* pPersist) // static +void ScDrawLayer::SetGlobalDrawPersist(SfxObjectShell* pPersist) { DBG_ASSERT(!pGlobalDrawPersist,"SetGlobalDrawPersist mehrfach"); pGlobalDrawPersist = pPersist; } -void __EXPORT ScDrawLayer::SetChanged( sal_Bool bFlg /* = sal_True */ ) +void ScDrawLayer::SetChanged( sal_Bool bFlg /* = sal_True */ ) { if ( bFlg && pDoc ) pDoc->SetChartListenerCollectionNeedsUpdate( TRUE ); FmFormModel::SetChanged( bFlg ); } -SvStream* __EXPORT ScDrawLayer::GetDocumentStream(SdrDocumentStreamInfo& rStreamInfo) const +SvStream* ScDrawLayer::GetDocumentStream(SdrDocumentStreamInfo& rStreamInfo) const { DBG_ASSERT( pDoc, "ScDrawLayer::GetDocumentStream without document" ); if ( !pDoc ) @@ -2042,31 +1939,13 @@ SvStream* __EXPORT ScDrawLayer::GetDocumentStream(SdrDocumentStreamInfo& rStream } } } - // the following code seems to be related to binary format -//REMOVE else -//REMOVE { -//REMOVE pRet = pStor->OpenStream( String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(STRING_SCSTREAM)), -//REMOVE STREAM_READ | STREAM_WRITE | STREAM_TRUNC ); -//REMOVE -//REMOVE if( pRet ) -//REMOVE { -//REMOVE pRet->SetVersion( pStor->GetVersion() ); -//REMOVE pRet->SetKey( pStor->GetKey() ); -//REMOVE } -//REMOVE } - rStreamInfo.mbDeleteAfterUse = ( pRet != NULL ); } return pRet; } -//REMOVE void ScDrawLayer::ReleasePictureStorage() -//REMOVE { -//REMOVE xPictureStorage.Clear(); -//REMOVE } - -SdrLayerID __EXPORT ScDrawLayer::GetControlExportLayerId( const SdrObject & ) const +SdrLayerID ScDrawLayer::GetControlExportLayerId( const SdrObject & ) const { // Layer fuer Export von Form-Controls in Versionen vor 5.0 - immer SC_LAYER_FRONT return SC_LAYER_FRONT; diff --git a/sc/source/core/data/funcdesc.cxx b/sc/source/core/data/funcdesc.cxx new file mode 100644 index 000000000000..79be4f4d784c --- /dev/null +++ b/sc/source/core/data/funcdesc.cxx @@ -0,0 +1,858 @@ +/* -*- 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 "funcdesc.hxx" + +#include "addincol.hxx" +#include "appoptio.hxx" +#include "callform.hxx" +#include "compiler.hxx" +#include "global.hxx" +#include "sc.hrc" +#include "scmod.hxx" +#include "scresid.hxx" + +#include <rtl/ustring.hxx> +#include <rtl/ustrbuf.hxx> +#include <tools/list.hxx> +#include <tools/rcid.h> +#include <tools/resid.hxx> +#include <tools/string.hxx> +#include <unotools/collatorwrapper.hxx> + +#include <numeric> + +class ScFuncRes : public Resource +{ +public: + ScFuncRes( ResId&, ScFuncDesc*, bool & rbSuppressed ); + +private: + sal_uInt16 GetNum(); +}; + + +class ScResourcePublisher : public Resource +{ +private: + void FreeResource() { Resource::FreeResource(); } +public: + ScResourcePublisher( const ScResId& rId ) : Resource( rId ) {} + ~ScResourcePublisher() { FreeResource(); } + bool IsAvailableRes( const ResId& rId ) const + { return Resource::IsAvailableRes( rId ); } + +}; + +//======================================================================== +// class ScFuncDesc: + +ScFuncDesc::ScFuncDesc() : + pFuncName (NULL), + pFuncDesc (NULL), + ppDefArgNames (NULL), + ppDefArgDescs (NULL), + pDefArgFlags (NULL), + nFIndex (0), + nCategory (0), + nArgCount (0), + nHelpId (0), + bIncomplete (false), + bHasSuppressedArgs(false) +{} + +//------------------------------------------------------------------------ + +ScFuncDesc::~ScFuncDesc() +{ + Clear(); +} + +//------------------------------------------------------------------------ + +void ScFuncDesc::Clear() +{ + sal_uInt16 nArgs = nArgCount; + if (nArgs >= VAR_ARGS) nArgs -= VAR_ARGS-1; + if (nArgs) + { + for (sal_uInt16 i=0; i<nArgs; i++ ) + { + delete ppDefArgNames[i]; + delete ppDefArgDescs[i]; + } + delete [] ppDefArgNames; + delete [] ppDefArgDescs; + delete [] pDefArgFlags; + } + nArgCount = 0; + ppDefArgNames = NULL; + ppDefArgDescs = NULL; + pDefArgFlags = NULL; + + delete pFuncName; + pFuncName = NULL; + + delete pFuncDesc; + pFuncDesc = NULL; + + nFIndex = 0; + nCategory = 0; + nHelpId = 0; + bIncomplete = false; + bHasSuppressedArgs = false; +} + +//------------------------------------------------------------------------ + +::rtl::OUString ScFuncDesc::GetParamList() const +{ + ::rtl::OUString sep(ScCompiler::GetNativeSymbol(ocSep)); + + ::rtl::OUStringBuffer aSig; + + if ( nArgCount > 0 ) + { + if ( nArgCount < VAR_ARGS ) + { + sal_uInt16 nLastSuppressed = nArgCount; + sal_uInt16 nLastAdded = nArgCount; + for ( sal_uInt16 i=0; i<nArgCount; i++ ) + { + if (pDefArgFlags[i].bSuppress) + nLastSuppressed = i; + else + { + nLastAdded = i; + aSig.append(*(ppDefArgNames[i])); + if ( i != nArgCount-1 ) + { + aSig.append(sep); + aSig.appendAscii( " " ); + } + } + } + // If only suppressed parameters follow the last added parameter, + // remove one "; " + if (nLastSuppressed < nArgCount && nLastAdded < nLastSuppressed && + aSig.getLength() >= 2) + aSig.setLength(aSig.getLength() - 2); + } + else + { + sal_uInt16 nFix = nArgCount - VAR_ARGS; + for ( sal_uInt16 nArg = 0; nArg < nFix; nArg++ ) + { + if (!pDefArgFlags[nArg].bSuppress) + { + aSig.append(*(ppDefArgNames[nArg])); + aSig.append(sep); + aSig.appendAscii( " " ); + } + } + /* NOTE: Currently there are no suppressed var args parameters. If + * there were, we'd have to cope with it here and above for the fix + * parameters. For now parameters are always added, so no special + * treatment of a trailing "; " necessary. */ + aSig.append(*(ppDefArgNames[nFix])); + aSig.append(sal_Unicode('1')); + aSig.append(sep); + aSig.append(sal_Unicode(' ')); + aSig.append(*(ppDefArgNames[nFix])); + aSig.append(sal_Unicode('2')); + aSig.append(sep); + aSig.appendAscii(" ... "); + } + } + + return aSig.makeStringAndClear(); +} + +//------------------------------------------------------------------------ + +::rtl::OUString ScFuncDesc::getSignature() const +{ + ::rtl::OUStringBuffer aSig; + + if(pFuncName) + { + aSig.append(*pFuncName); + + ::rtl::OUString aParamList = GetParamList(); + if( aParamList.getLength() ) + { + aSig.appendAscii( "( " ); + aSig.append(aParamList); + // U+00A0 (NBSP) prevents automatic line break + aSig.append( static_cast< sal_Unicode >(0xA0) ); + aSig.appendAscii( ")" ); + } + else + aSig.appendAscii( "()" ); + } + return aSig.makeStringAndClear(); +} + +//------------------------------------------------------------------------ + +::rtl::OUString ScFuncDesc::getFormula( const ::std::vector< ::rtl::OUString >& _aArguments ) const +{ + ::rtl::OUString sep = ScCompiler::GetNativeSymbol(ocSep); + + ::rtl::OUStringBuffer aFormula; + + if(pFuncName) + { + aFormula.append( *pFuncName ); + + aFormula.appendAscii( "(" ); + ::std::vector< ::rtl::OUString >::const_iterator aIter = _aArguments.begin(); + ::std::vector< ::rtl::OUString >::const_iterator aEnd = _aArguments.end(); + + if ( nArgCount > 0 && aIter != aEnd ) + { + bool bLastArg = ( aIter->getLength() == 0 ); + + while( aIter != aEnd && !bLastArg ) + { + aFormula.append( *(aIter) ); + if ( aIter != (aEnd-1) ) + { + bLastArg = !( (aIter+1)->getLength() > 0 ); + if ( !bLastArg ) + aFormula.append( sep ); + } + + ++aIter; + } + } + + aFormula.appendAscii( ")" ); + } + return aFormula.makeStringAndClear(); +} + +//------------------------------------------------------------------------ + +sal_uInt16 ScFuncDesc::GetSuppressedArgCount() const +{ + if (!bHasSuppressedArgs || !pDefArgFlags) + return nArgCount; + + sal_uInt16 nArgs = nArgCount; + if (nArgs >= VAR_ARGS) + nArgs -= VAR_ARGS - 1; + sal_uInt16 nCount = nArgs; + for (sal_uInt16 i=0; i < nArgs; ++i) + { + if (pDefArgFlags[i].bSuppress) + --nCount; + } + if (nArgCount >= VAR_ARGS) + nCount += VAR_ARGS - 1; + return nCount; +} + +//------------------------------------------------------------------------ + +::rtl::OUString ScFuncDesc::getFunctionName() const +{ + ::rtl::OUString sRet; + if ( pFuncName ) + sRet = *pFuncName; + return sRet; +} +// ----------------------------------------------------------------------------- +const formula::IFunctionCategory* ScFuncDesc::getCategory() const +{ + return ScGlobal::GetStarCalcFunctionMgr()->getCategory(nCategory); +} +// ----------------------------------------------------------------------------- +::rtl::OUString ScFuncDesc::getDescription() const +{ + ::rtl::OUString sRet; + if ( pFuncDesc ) + sRet = *pFuncDesc; + return sRet; +} +// ----------------------------------------------------------------------------- +// GetSuppressedArgCount +xub_StrLen ScFuncDesc::getSuppressedArgumentCount() const +{ + return GetSuppressedArgCount(); +} +// ----------------------------------------------------------------------------- +// +void ScFuncDesc::fillVisibleArgumentMapping(::std::vector<sal_uInt16>& _rArguments) const +{ + if (!bHasSuppressedArgs || !pDefArgFlags) + { + _rArguments.resize( nArgCount); + ::std::iota( _rArguments.begin(), _rArguments.end(), 0); + } + + _rArguments.reserve( nArgCount); + sal_uInt16 nArgs = nArgCount; + if (nArgs >= VAR_ARGS) + nArgs -= VAR_ARGS - 1; + for (sal_uInt16 i=0; i < nArgs; ++i) + { + if (!pDefArgFlags[i].bSuppress) + _rArguments.push_back(i); + } +} +// ----------------------------------------------------------------------------- +void ScFuncDesc::initArgumentInfo() const +{ + // get the full argument description + // (add-in has to be instantiated to get the type information) + + if ( bIncomplete && pFuncName ) + { + ScUnoAddInCollection& rAddIns = *ScGlobal::GetAddInCollection(); + ::rtl::OUString aIntName(rAddIns.FindFunction( *pFuncName, true )); // pFuncName is upper-case + + if ( aIntName.getLength() ) + { + // GetFuncData with bComplete=true loads the component and updates + // the global function list if needed. + + rAddIns.GetFuncData( aIntName, true ); + } + + if ( bIncomplete ) + { + DBG_ERRORFILE( "couldn't initialize add-in function" ); + const_cast<ScFuncDesc*>(this)->bIncomplete = false; // even if there was an error, don't try again + } + } +} +// ----------------------------------------------------------------------------- +long ScFuncDesc::getHelpId() const +{ + return (long)nHelpId; +} +// ----------------------------------------------------------------------------- + +// parameter +sal_uInt32 ScFuncDesc::getParameterCount() const +{ + return nArgCount; +} +// ----------------------------------------------------------------------------- +::rtl::OUString ScFuncDesc::getParameterName(sal_uInt32 _nPos) const +{ + return *(ppDefArgNames[_nPos]); +} +// ----------------------------------------------------------------------------- +::rtl::OUString ScFuncDesc::getParameterDescription(sal_uInt32 _nPos) const +{ + return *(ppDefArgDescs[_nPos]); +} +// ----------------------------------------------------------------------------- +bool ScFuncDesc::isParameterOptional(sal_uInt32 _nPos) const +{ + return pDefArgFlags[_nPos].bOptional; +} +// ----------------------------------------------------------------------------- + + + +//=================================================================== +// class ScFunctionList: +//=================================================================== + +ScFunctionList::ScFunctionList() : + nMaxFuncNameLen ( 0 ) +{ + ScFuncDesc* pDesc = NULL; + xub_StrLen nStrLen = 0; + FuncCollection* pFuncColl; + sal_uInt16 nDescBlock[] = + { + RID_SC_FUNCTION_DESCRIPTIONS1, + RID_SC_FUNCTION_DESCRIPTIONS2 + }; + + aFunctionList.Clear(); + + for (sal_uInt16 k = 0; k < SAL_N_ELEMENTS(nDescBlock); ++k) + { + ::std::auto_ptr<ScResourcePublisher> pBlock( new ScResourcePublisher( ScResId( nDescBlock[k] ) ) ); + // Browse for all possible OpCodes. This is not the fastest method, but + // otherwise the sub resources within the resource blocks and the + // resource blocks themselfs would had to be ordered according to + // OpCodes, which is utopian.. + for (sal_uInt16 i = 0; i <= SC_OPCODE_LAST_OPCODE_ID; ++i) + { + ScResId aRes(i); + aRes.SetRT(RSC_RESOURCE); + // Sub resource of OpCode available? + if (pBlock->IsAvailableRes(aRes)) + { + pDesc = new ScFuncDesc; + bool bSuppressed = false; + ScFuncRes aSubRes( aRes, pDesc, bSuppressed); + // Instead of dealing with this exceptional case at 1001 places + // we simply don't add an entirely suppressed function to the + // list and delete it. + if (bSuppressed) + delete pDesc; + else + { + pDesc->nFIndex = i; + aFunctionList.Insert( pDesc, LIST_APPEND ); + + nStrLen = (*(pDesc->pFuncName)).getLength(); + if (nStrLen > nMaxFuncNameLen) + nMaxFuncNameLen = nStrLen; + } + } + } + } + + sal_uInt16 nNextId = SC_OPCODE_LAST_OPCODE_ID + 1; // FuncID for AddIn functions + + // Interpretation of AddIn list + ::rtl::OUString aDefArgNameValue = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("value")); + ::rtl::OUString aDefArgNameString = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("string")); + ::rtl::OUString aDefArgNameValues = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("values")); + ::rtl::OUString aDefArgNameStrings = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("strings")); + ::rtl::OUString aDefArgNameCells = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("cells")); + ::rtl::OUString aDefArgNameNone = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("none")); + ::rtl::OUString aDefArgDescValue = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("a value")); + ::rtl::OUString aDefArgDescString = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("a string")); + ::rtl::OUString aDefArgDescValues = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("array of values")); + ::rtl::OUString aDefArgDescStrings = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("array of strings")); + ::rtl::OUString aDefArgDescCells = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("range of cells")); + ::rtl::OUString aDefArgDescNone = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("none")); + + ::rtl::OUString aArgName, aArgDesc; + pFuncColl = ScGlobal::GetFuncCollection(); + for (sal_uInt16 i = 0; i < pFuncColl->GetCount(); ++i) + { + pDesc = new ScFuncDesc; + FuncData *pAddInFuncData = (FuncData*)pFuncColl->At(i); + sal_uInt16 nArgs = pAddInFuncData->GetParamCount() - 1; + pAddInFuncData->getParamDesc( aArgName, aArgDesc, 0 ); + pDesc->nFIndex = nNextId++; // ??? OpCode vergeben + pDesc->nCategory = ID_FUNCTION_GRP_ADDINS; + pDesc->pFuncName = new ::rtl::OUString(pAddInFuncData->GetInternalName()); + pDesc->pFuncName->toAsciiUpperCase(); + + ::rtl::OUStringBuffer aBuf(aArgDesc); + aBuf.append(sal_Unicode('\n')); + aBuf.appendAscii("( AddIn: "); + aBuf.append(pAddInFuncData->GetModuleName()); + aBuf.appendAscii(" )"); + pDesc->pFuncDesc = new ::rtl::OUString(aBuf.makeStringAndClear()); + + pDesc->nArgCount = nArgs; + if (nArgs) + { + pDesc->pDefArgFlags = new ScFuncDesc::ParameterFlags[nArgs]; + pDesc->ppDefArgNames = new ::rtl::OUString*[nArgs]; + pDesc->ppDefArgDescs = new ::rtl::OUString*[nArgs]; + for (sal_uInt16 j = 0; j < nArgs; ++j) + { + pDesc->pDefArgFlags[j].bOptional = false; + pDesc->pDefArgFlags[j].bSuppress = false; + pAddInFuncData->getParamDesc( aArgName, aArgDesc, j+1 ); + if ( aArgName.getLength() ) + pDesc->ppDefArgNames[j] = new ::rtl::OUString( aArgName ); + else + { + switch (pAddInFuncData->GetParamType(j+1)) + { + case PTR_DOUBLE: + pDesc->ppDefArgNames[j] = new ::rtl::OUString( aDefArgNameValue ); + break; + case PTR_STRING: + pDesc->ppDefArgNames[j] = new ::rtl::OUString( aDefArgNameString ); + break; + case PTR_DOUBLE_ARR: + pDesc->ppDefArgNames[j] = new ::rtl::OUString( aDefArgNameValues ); + break; + case PTR_STRING_ARR: + pDesc->ppDefArgNames[j] = new ::rtl::OUString( aDefArgNameStrings ); + break; + case PTR_CELL_ARR: + pDesc->ppDefArgNames[j] = new ::rtl::OUString( aDefArgNameCells ); + break; + default: + pDesc->ppDefArgNames[j] = new ::rtl::OUString( aDefArgNameNone ); + break; + } + } + if ( aArgDesc.getLength() ) + pDesc->ppDefArgDescs[j] = new ::rtl::OUString( aArgDesc ); + else + { + switch (pAddInFuncData->GetParamType(j+1)) + { + case PTR_DOUBLE: + pDesc->ppDefArgDescs[j] = new ::rtl::OUString( aDefArgDescValue ); + break; + case PTR_STRING: + pDesc->ppDefArgDescs[j] = new ::rtl::OUString( aDefArgDescString ); + break; + case PTR_DOUBLE_ARR: + pDesc->ppDefArgDescs[j] = new ::rtl::OUString( aDefArgDescValues ); + break; + case PTR_STRING_ARR: + pDesc->ppDefArgDescs[j] = new ::rtl::OUString( aDefArgDescStrings ); + break; + case PTR_CELL_ARR: + pDesc->ppDefArgDescs[j] = new ::rtl::OUString( aDefArgDescCells ); + break; + default: + pDesc->ppDefArgDescs[j] = new ::rtl::OUString( aDefArgDescNone ); + break; + } + } + } + } + + aFunctionList.Insert(pDesc, LIST_APPEND); + nStrLen = (*(pDesc->pFuncName)).getLength(); + if ( nStrLen > nMaxFuncNameLen) + nMaxFuncNameLen = nStrLen; + } + + // StarOne AddIns + + ScUnoAddInCollection* pUnoAddIns = ScGlobal::GetAddInCollection(); + long nUnoCount = pUnoAddIns->GetFuncCount(); + for (long nFunc=0; nFunc<nUnoCount; nFunc++) + { + pDesc = new ScFuncDesc; + pDesc->nFIndex = nNextId++; + + if ( pUnoAddIns->FillFunctionDesc( nFunc, *pDesc ) ) + { + aFunctionList.Insert(pDesc, LIST_APPEND); + nStrLen = (*(pDesc->pFuncName)).getLength(); + if (nStrLen > nMaxFuncNameLen) + nMaxFuncNameLen = nStrLen; + } + else + delete pDesc; + } +} + +//------------------------------------------------------------------------ + +ScFunctionList::~ScFunctionList() +{ + const ScFuncDesc* pDesc = First(); + while (pDesc) + { + delete pDesc; + pDesc = Next(); + } +} + + + + +// ----------------------------------------------------------------------------- +sal_uInt32 ScFunctionCategory::getCount() const +{ + return m_pCategory->Count(); +} +// ----------------------------------------------------------------------------- +const formula::IFunctionManager* ScFunctionCategory::getFunctionManager() const +{ + return m_pMgr; +} +// ----------------------------------------------------------------------------- +::rtl::OUString ScFunctionCategory::getName() const +{ + if ( !m_sName.getLength() ) + m_sName = ScFunctionMgr::GetCategoryName(m_nCategory+1); + return m_sName; +} +// ----------------------------------------------------------------------------- +const formula::IFunctionDescription* ScFunctionCategory::getFunction(sal_uInt32 _nPos) const +{ + const ScFuncDesc* pDesc = NULL; + sal_uInt32 i = 0; + for (pDesc = (const ScFuncDesc*)m_pCategory->First(); i < _nPos && pDesc; pDesc = (const ScFuncDesc*)m_pCategory->Next(),++i) + ; + return pDesc; +} +// ----------------------------------------------------------------------------- +sal_uInt32 ScFunctionCategory::getNumber() const +{ + return m_nCategory; +} +// ----------------------------------------------------------------------------- + + +//======================================================================== +// class ScFunctionMgr: + +ScFunctionMgr::ScFunctionMgr() : + pFuncList( ScGlobal::GetStarCalcFunctionList() ), + pCurCatList( NULL ) +{ + DBG_ASSERT( pFuncList, "Funktionsliste nicht gefunden." ); + sal_uInt32 nCount = pFuncList->GetCount(); + ScFuncDesc* pDesc; + List* pRootList; + sal_uInt32 n; + + for (sal_uInt16 i = 0; i < MAX_FUNCCAT; ++i) // create category lists + aCatLists[i] = new List; + + pRootList = aCatLists[0]; // create cumulative list ("All") + CollatorWrapper* pCaseCollator = ScGlobal::GetCaseCollator(); + for ( n=0; n<nCount; n++ ) + { + sal_uInt32 nTmpCnt=0; + pDesc = pFuncList->GetFunction(n); + for (nTmpCnt = 0; nTmpCnt < n; nTmpCnt++) + { + // it's case sensitiv, but special characters have to be put the right place + + const ScFuncDesc* pTmpDesc = static_cast<const ScFuncDesc*>( + pRootList->GetObject(nTmpCnt)); + if ( pCaseCollator->compareString(*pDesc->pFuncName, *pTmpDesc->pFuncName ) == COMPARE_LESS ) + break; + } + pRootList->Insert(static_cast<void*>(pDesc), nTmpCnt); // insert the right place + } + + for ( n=0; n<nCount; n++ ) // copy to group list + { + pDesc = static_cast<ScFuncDesc*>(pRootList->GetObject(n)); + DBG_ASSERT((pDesc->nCategory) < MAX_FUNCCAT, "Unbekannte Kategorie"); + if ((pDesc->nCategory) < MAX_FUNCCAT) + aCatLists[pDesc->nCategory]->Insert(static_cast<void*>(pDesc), LIST_APPEND); + } +} + +//------------------------------------------------------------------------ + +ScFunctionMgr::~ScFunctionMgr() +{ + for (sal_uInt16 i = 0; i < MAX_FUNCCAT; ++i) + delete aCatLists[i]; +} + +//------------------------------------------------------------------------ + +const ScFuncDesc* ScFunctionMgr::Get( const ::rtl::OUString& rFName ) const +{ + const ScFuncDesc* pDesc = NULL; + if (rFName.getLength() <= pFuncList->GetMaxFuncNameLen()) + for (pDesc = First(0); pDesc; pDesc = Next()) + if (rFName.equalsIgnoreAsciiCase(*pDesc->pFuncName)) + break; + return pDesc; +} + +//------------------------------------------------------------------------ + +const ScFuncDesc* ScFunctionMgr::Get( sal_uInt16 nFIndex ) const +{ + const ScFuncDesc* pDesc; + for (pDesc = First(0); pDesc; pDesc = Next()) + if (pDesc->nFIndex == nFIndex) + break; + return pDesc; +} + +//------------------------------------------------------------------------ + +const ScFuncDesc* ScFunctionMgr::First( sal_uInt16 nCategory ) const +{ + DBG_ASSERT( nCategory < MAX_FUNCCAT, "Unbekannte Kategorie" ); + + if ( nCategory < MAX_FUNCCAT ) + { + pCurCatList = aCatLists[nCategory]; + return (const ScFuncDesc*)pCurCatList->First(); + } + else + { + pCurCatList = NULL; + return NULL; + } +} + +//------------------------------------------------------------------------ + +const ScFuncDesc* ScFunctionMgr::Next() const +{ + if ( pCurCatList ) + return (const ScFuncDesc*)pCurCatList->Next(); + else + return NULL; +} +sal_uInt32 ScFunctionMgr::getCount() const +{ + return MAX_FUNCCAT - 1; +} +const formula::IFunctionCategory* ScFunctionMgr::getCategory(sal_uInt32 nCategory) const +{ + formula::IFunctionCategory* pRet = NULL; + if ( nCategory < (MAX_FUNCCAT-1) ) + { + pRet = new ScFunctionCategory(const_cast<ScFunctionMgr*>(this),aCatLists[nCategory+1],nCategory); // aCatLists[0] is "all" + } + return pRet; +} +// ----------------------------------------------------------------------------- +const formula::IFunctionDescription* ScFunctionMgr::getFunctionByName(const ::rtl::OUString& _sFunctionName) const +{ + return Get(_sFunctionName); +} +// ----------------------------------------------------------------------------- +void ScFunctionMgr::fillLastRecentlyUsedFunctions(::std::vector< const formula::IFunctionDescription*>& _rLastRUFunctions) const +{ +#define LRU_MAX 10 + + const ScAppOptions& rAppOpt = SC_MOD()->GetAppOptions(); + sal_uInt16 nLRUFuncCount = Min( rAppOpt.GetLRUFuncListCount(), (sal_uInt16)LRU_MAX ); + sal_uInt16* pLRUListIds = rAppOpt.GetLRUFuncList(); + + if ( pLRUListIds ) + { + for (sal_uInt16 i = 0; i < nLRUFuncCount; ++i) + _rLastRUFunctions.push_back( Get( pLRUListIds[i] ) ); + } +} +// ----------------------------------------------------------------------------- +::rtl::OUString ScFunctionMgr::GetCategoryName(sal_uInt32 _nCategoryNumber ) +{ + if ( _nCategoryNumber > SC_FUNCGROUP_COUNT ) + { + DBG_ERROR("Invalid category number!"); + return ::rtl::OUString(); + } + + ::std::auto_ptr<ScResourcePublisher> pCategories( new ScResourcePublisher( ScResId( RID_FUNCTION_CATEGORIES ) ) ); + return ResId::toString(ScResId(static_cast<sal_uInt16>(_nCategoryNumber))); +} +sal_Unicode ScFunctionMgr::getSingleToken(const formula::IFunctionManager::EToken _eToken) const +{ + switch(_eToken) + { + case eOk: + return ScCompiler::GetNativeSymbol(ocOpen).GetChar(0); + case eClose: + return ScCompiler::GetNativeSymbol(ocClose).GetChar(0); + case eSep: + return ScCompiler::GetNativeSymbol(ocSep).GetChar(0); + case eArrayOpen: + return ScCompiler::GetNativeSymbol(ocArrayOpen).GetChar(0); + case eArrayClose: + return ScCompiler::GetNativeSymbol(ocArrayClose).GetChar(0); + } + return 0; +} + +ScFuncRes::ScFuncRes( ResId &aRes, ScFuncDesc* pDesc, bool & rbSuppressed ) + : Resource(aRes) +{ + rbSuppressed = (bool)GetNum(); + pDesc->nCategory = GetNum(); + pDesc->nHelpId = GetNum() + 32768; //! Hack, see scfuncs.src + pDesc->nArgCount = GetNum(); + sal_uInt16 nArgs = pDesc->nArgCount; + if (nArgs >= VAR_ARGS) + nArgs -= VAR_ARGS - 1; + if (nArgs) + { + pDesc->pDefArgFlags = new ScFuncDesc::ParameterFlags[nArgs]; + for (sal_uInt16 i = 0; i < nArgs; ++i) + { + pDesc->pDefArgFlags[i].bOptional = (bool)GetNum(); + } + } + // Need to read the value from the resource even if nArgs==0 to advance the + // resource position pointer, so this can't be in the if(nArgs) block above. + sal_uInt16 nSuppressed = GetNum(); + if (nSuppressed) + { + if (nSuppressed > nArgs) + { + DBG_ERROR3( "ScFuncRes: suppressed parameters count mismatch on OpCode %u: suppressed %d > params %d", + aRes.GetId(), (int)nSuppressed, (int)nArgs); + nSuppressed = nArgs; // sanitize + } + for (sal_uInt16 i = 0; i < nSuppressed; ++i) + { + sal_uInt16 nParam = GetNum(); + if (nParam < nArgs) + { + if (pDesc->nArgCount >= VAR_ARGS && nParam == nArgs-1) + { + DBG_ERROR3( "ScFuncRes: VAR_ARGS parameters can't be suppressed, on OpCode %u: param %d == arg %d-1", + aRes.GetId(), (int)nParam, (int)nArgs); + } + else + { + pDesc->pDefArgFlags[nParam].bSuppress = true; + pDesc->bHasSuppressedArgs = true; + } + } + else + { + DBG_ERROR3( "ScFuncRes: suppressed parameter exceeds count on OpCode %u: param %d >= args %d", + aRes.GetId(), (int)nParam, (int)nArgs); + } + } + } + + pDesc->pFuncName = new ::rtl::OUString( ScCompiler::GetNativeSymbol( static_cast<OpCode>( aRes.GetId()))); + pDesc->pFuncDesc = new ::rtl::OUString( ResId::toString(ScResId(1))); + + if (nArgs) + { + pDesc->ppDefArgNames = new ::rtl::OUString*[nArgs]; + pDesc->ppDefArgDescs = new ::rtl::OUString*[nArgs]; + for (sal_uInt16 i = 0; i < nArgs; ++i) + { + pDesc->ppDefArgNames[i] = new ::rtl::OUString(ResId::toString(ScResId(2*(i+1) ))); + pDesc->ppDefArgDescs[i] = new ::rtl::OUString(ResId::toString(ScResId(2*(i+1)+1))); + } + } + + FreeResource(); +} + +//------------------------------------------------------------------------ + +sal_uInt16 ScFuncRes::GetNum() +{ + return ReadShortRes(); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/data/global.cxx b/sc/source/core/data/global.cxx index 0ceb96f85c4d..11e6b38aa05a 100644 --- a/sc/source/core/data/global.cxx +++ b/sc/source/core/data/global.cxx @@ -50,6 +50,7 @@ #include <svl/zformat.hxx> #include <vcl/image.hxx> #include <vcl/virdev.hxx> +#include <sal/macros.h> #include <tools/rcid.h> #include <unotools/charclass.hxx> #include <stdlib.h> @@ -91,6 +92,9 @@ // ----------------------------------------------------------------------- +using ::rtl::OUString; +using ::rtl::OUStringBuffer; + #define CLIPST_AVAILABLE 0 #define CLIPST_CAPTURED 1 #define CLIPST_DELETE 2 @@ -125,7 +129,6 @@ SvxBrushItem* ScGlobal::pEmbeddedBrushItem = NULL; SvxBrushItem* ScGlobal::pProtectedBrushItem = NULL; ImageList* ScGlobal::pOutlineBitmaps = NULL; -ImageList* ScGlobal::pOutlineBitmapsHC = NULL; ScFunctionList* ScGlobal::pStarCalcFunctionList = NULL; ScFunctionMgr* ScGlobal::pStarCalcFunctionMgr = NULL; @@ -217,7 +220,6 @@ ULONG ScGlobal::GetStandardFormat( double fNumber, SvNumberFormatter& rFormatter } -// static SvNumberFormatter* ScGlobal::GetEnglishFormatter() { if ( !pEnglishFormatter ) @@ -523,11 +525,11 @@ const String& ScGlobal::GetEmptyString() return *pEmptyString; } -ImageList* ScGlobal::GetOutlineSymbols( bool bHC ) +ImageList* ScGlobal::GetOutlineSymbols() { - ImageList*& rpImageList = bHC ? pOutlineBitmapsHC : pOutlineBitmaps; + ImageList*& rpImageList = pOutlineBitmaps; if( !rpImageList ) - rpImageList = new ImageList( ScResId( bHC ? RID_OUTLINEBITMAPS_H : RID_OUTLINEBITMAPS ) ); + rpImageList = new ImageList( ScResId( RID_OUTLINEBITMAPS ) ); return rpImageList; } @@ -615,7 +617,6 @@ void ScGlobal::InitTextHeight(SfxItemPool* pPool) return; } -// String aTestString('X'); OutputDevice* pDefaultDev = Application::GetDefaultDevice(); VirtualDevice aVirtWindow( *pDefaultDev ); aVirtWindow.SetMapMode(MAP_PIXEL); @@ -659,9 +660,6 @@ void ScGlobal::Clear() DELETEZ(pEmbeddedBrushItem); DELETEZ(pProtectedBrushItem); DELETEZ(pOutlineBitmaps); - DELETEZ(pOutlineBitmapsHC); -// DELETEZ(pAnchorBitmap); -// DELETEZ(pGrayAnchorBitmap); DELETEZ(pEnglishFormatter); DELETEZ(pCaseTransliteration); DELETEZ(pTransliteration); @@ -686,7 +684,6 @@ void ScGlobal::Clear() //------------------------------------------------------------------------ -// static CharSet ScGlobal::GetCharsetValue( const String& rCharSet ) { // new TextEncoding values @@ -707,13 +704,11 @@ CharSet ScGlobal::GetCharsetValue( const String& rCharSet ) else if (rCharSet.EqualsIgnoreCaseAscii("IBMPC_861")) return RTL_TEXTENCODING_IBM_861; else if (rCharSet.EqualsIgnoreCaseAscii("IBMPC_863")) return RTL_TEXTENCODING_IBM_863; else if (rCharSet.EqualsIgnoreCaseAscii("IBMPC_865")) return RTL_TEXTENCODING_IBM_865; -// else if (rCharSet.EqualsIgnoreCaseAscii("SYSTEM") ) return gsl_getSystemTextEncoding(); else return gsl_getSystemTextEncoding(); } //------------------------------------------------------------------------ -// static String ScGlobal::GetCharsetString( CharSet eVal ) { const sal_Char* pChar; @@ -772,7 +767,6 @@ void ScGlobal::ResetFunctionList() //------------------------------------------------------------------------ -// static ScUnitConverter* ScGlobal::GetUnitConverter() { if ( !pUnitConverter ) @@ -784,7 +778,6 @@ ScUnitConverter* ScGlobal::GetUnitConverter() //------------------------------------------------------------------------ -// static const sal_Unicode* ScGlobal::UnicodeStrChr( const sal_Unicode* pStr, sal_Unicode c ) { @@ -1097,821 +1090,9 @@ void ScGlobal::AddLanguage( SfxItemSet& rSet, SvNumberFormatter& rFormatter ) } - - - -//=================================================================== -// class ScFunctionList: -//=================================================================== - -//=================================================================== -// class ScFuncRes -// fuer temporaere Objekte zum Holen der Resourcen - -class ScFuncRes : public Resource -{ -public: - ScFuncRes( ResId&, ScFuncDesc*, bool & rbSuppressed ); - -private: - USHORT GetNum(); -}; - //-------------------------------------------------------------------- -ScFuncRes::ScFuncRes( ResId &aRes, ScFuncDesc* pDesc, bool & rbSuppressed ) - : Resource(aRes) -{ - rbSuppressed = (bool)GetNum(); - pDesc->nCategory = GetNum(); - pDesc->nHelpId = GetNum() + 32768; //! Hack, see scfuncs.src - pDesc->nArgCount = GetNum(); - USHORT nArgs = pDesc->nArgCount; - if (nArgs >= VAR_ARGS) - nArgs -= VAR_ARGS - 1; - if (nArgs) - { - pDesc->pDefArgFlags = new ScFuncDesc::ParameterFlags[nArgs]; - for (USHORT i = 0; i < nArgs; i++) - { - pDesc->pDefArgFlags[i].bOptional = (bool)GetNum(); - } - } - // Need to read the value from the resource even if nArgs==0 to advance the - // resource position pointer, so this can't be in the if(nArgs) block above. - USHORT nSuppressed = GetNum(); - if (nSuppressed) - { - if (nSuppressed > nArgs) - { - DBG_ERROR3( "ScFuncRes: suppressed parameters count mismatch on OpCode %u: suppressed %d > params %d", - aRes.GetId(), (int)nSuppressed, (int)nArgs); - nSuppressed = nArgs; // sanitize - } - for (USHORT i=0; i < nSuppressed; ++i) - { - USHORT nParam = GetNum(); - if (nParam < nArgs) - { - if (pDesc->nArgCount >= VAR_ARGS && nParam == nArgs-1) - { - DBG_ERROR3( "ScFuncRes: VAR_ARGS parameters can't be suppressed, on OpCode %u: param %d == arg %d-1", - aRes.GetId(), (int)nParam, (int)nArgs); - } - else - { - pDesc->pDefArgFlags[nParam].bSuppress = true; - pDesc->bHasSuppressedArgs = true; - } - } - else - { - DBG_ERROR3( "ScFuncRes: suppressed parameter exceeds count on OpCode %u: param %d >= args %d", - aRes.GetId(), (int)nParam, (int)nArgs); - } - } - } - - pDesc->pFuncName = new String( ScCompiler::GetNativeSymbol( static_cast<OpCode>( aRes.GetId()))); - pDesc->pFuncDesc = new String(ScResId(1)); - - if (nArgs) - { - pDesc->ppDefArgNames = new String*[nArgs]; - pDesc->ppDefArgDescs = new String*[nArgs]; - for (USHORT i = 0; i < nArgs; i++) - { - pDesc->ppDefArgNames[i] = new String(ScResId(2*(i+1) )); - pDesc->ppDefArgDescs[i] = new String(ScResId(2*(i+1)+1)); - } - } - - FreeResource(); -} - -//------------------------------------------------------------------------ - -USHORT ScFuncRes::GetNum() -{ - return ReadShortRes(); -} - -//========================================================================= - -// um an die protected von Resource ranzukommen -class ScResourcePublisher : public Resource -{ -private: - void FreeResource() { Resource::FreeResource(); } -public: - ScResourcePublisher( const ScResId& rId ) : Resource( rId ) {} - ~ScResourcePublisher() { FreeResource(); } - BOOL IsAvailableRes( const ResId& rId ) const - { return Resource::IsAvailableRes( rId ); } - -}; - - -ScFunctionList::ScFunctionList() : - nMaxFuncNameLen ( 0 ) -{ - ScFuncDesc* pDesc = NULL; - xub_StrLen nStrLen = 0; - FuncCollection* pFuncColl; - USHORT i,j; - USHORT nDescBlock[] = - { - RID_SC_FUNCTION_DESCRIPTIONS1, - RID_SC_FUNCTION_DESCRIPTIONS2 - }; - const USHORT nBlocks = sizeof(nDescBlock) / sizeof(USHORT); - - aFunctionList.Clear(); - - for ( USHORT k = 0; k < nBlocks; k++ ) - { - ::std::auto_ptr<ScResourcePublisher> pBlock( new ScResourcePublisher( ScResId( nDescBlock[k] ) ) ); - // Browse for all possible OpCodes. This is not the fastest method, but - // otherwise the sub resources within the resource blocks and the - // resource blocks themselfs would had to be ordered according to - // OpCodes, which is utopian.. - for (i = 0; i <= SC_OPCODE_LAST_OPCODE_ID; i++) - { - ScResId aRes(i); - aRes.SetRT(RSC_RESOURCE); - // Sub resource of OpCode available? - if (pBlock->IsAvailableRes(aRes)) - { - pDesc = new ScFuncDesc; - bool bSuppressed = false; - ScFuncRes aSubRes( aRes, pDesc, bSuppressed); - // Instead of dealing with this exceptional case at 1001 places - // we simply don't add an entirely suppressed function to the - // list and delete it. - if (bSuppressed) - delete pDesc; - else - { - pDesc->nFIndex = i; - aFunctionList.Insert( pDesc, LIST_APPEND ); - - nStrLen = (*(pDesc->pFuncName)).Len(); - if (nStrLen > nMaxFuncNameLen) - nMaxFuncNameLen = nStrLen; - } - } - } - } - - USHORT nNextId = SC_OPCODE_LAST_OPCODE_ID + 1; // FuncID for AddIn functions - - // Auswertung AddIn-Liste - String aDefArgNameValue(RTL_CONSTASCII_STRINGPARAM("value")); - String aDefArgNameString(RTL_CONSTASCII_STRINGPARAM("string")); - String aDefArgNameValues(RTL_CONSTASCII_STRINGPARAM("values")); - String aDefArgNameStrings(RTL_CONSTASCII_STRINGPARAM("strings")); - String aDefArgNameCells(RTL_CONSTASCII_STRINGPARAM("cells")); - String aDefArgNameNone(RTL_CONSTASCII_STRINGPARAM("none")); - String aDefArgDescValue(RTL_CONSTASCII_STRINGPARAM("a value")); - String aDefArgDescString(RTL_CONSTASCII_STRINGPARAM("a string")); - String aDefArgDescValues(RTL_CONSTASCII_STRINGPARAM("array of values")); - String aDefArgDescStrings(RTL_CONSTASCII_STRINGPARAM("array of strings")); - String aDefArgDescCells(RTL_CONSTASCII_STRINGPARAM("range of cells")); - String aDefArgDescNone(RTL_CONSTASCII_STRINGPARAM("none")); - String aArgName, aArgDesc; - pFuncColl = ScGlobal::GetFuncCollection(); - for (i = 0; i < pFuncColl->GetCount(); i++) - { - pDesc = new ScFuncDesc; - FuncData *pAddInFuncData = (FuncData*)pFuncColl->At(i); - USHORT nArgs = pAddInFuncData->GetParamCount() - 1; - pAddInFuncData->GetParamDesc( aArgName, aArgDesc, 0 ); - pDesc->nFIndex = nNextId++; // ??? OpCode vergeben - pDesc->nCategory = ID_FUNCTION_GRP_ADDINS; - pDesc->pFuncName = new String(pAddInFuncData->GetInternalName()); - pDesc->pFuncName->ToUpperAscii(); - pDesc->pFuncDesc = new String( aArgDesc ); - *(pDesc->pFuncDesc) += '\n'; - pDesc->pFuncDesc->AppendAscii(RTL_CONSTASCII_STRINGPARAM( "( AddIn: " )); - *(pDesc->pFuncDesc) += pAddInFuncData->GetModuleName(); - pDesc->pFuncDesc->AppendAscii(RTL_CONSTASCII_STRINGPARAM( " )" )); - pDesc->nArgCount = nArgs; - if (nArgs) - { - pDesc->pDefArgFlags = new ScFuncDesc::ParameterFlags[nArgs]; - pDesc->ppDefArgNames = new String*[nArgs]; - pDesc->ppDefArgDescs = new String*[nArgs]; - for (j = 0; j < nArgs; j++) - { - pDesc->pDefArgFlags[j].bOptional = false; - pDesc->pDefArgFlags[j].bSuppress = false; - pAddInFuncData->GetParamDesc( aArgName, aArgDesc, j+1 ); - if ( aArgName.Len() ) - pDesc->ppDefArgNames[j] = new String( aArgName ); - else - { - switch (pAddInFuncData->GetParamType(j+1)) - { - case PTR_DOUBLE: - pDesc->ppDefArgNames[j] = new String( aDefArgNameValue ); - break; - case PTR_STRING: - pDesc->ppDefArgNames[j] = new String( aDefArgNameString ); - break; - case PTR_DOUBLE_ARR: - pDesc->ppDefArgNames[j] = new String( aDefArgNameValues ); - break; - case PTR_STRING_ARR: - pDesc->ppDefArgNames[j] = new String( aDefArgNameStrings ); - break; - case PTR_CELL_ARR: - pDesc->ppDefArgNames[j] = new String( aDefArgNameCells ); - break; - default: - pDesc->ppDefArgNames[j] = new String( aDefArgNameNone ); - break; - } - } - if ( aArgDesc.Len() ) - pDesc->ppDefArgDescs[j] = new String( aArgDesc ); - else - { - switch (pAddInFuncData->GetParamType(j+1)) - { - case PTR_DOUBLE: - pDesc->ppDefArgDescs[j] = new String( aDefArgDescValue ); - break; - case PTR_STRING: - pDesc->ppDefArgDescs[j] = new String( aDefArgDescString ); - break; - case PTR_DOUBLE_ARR: - pDesc->ppDefArgDescs[j] = new String( aDefArgDescValues ); - break; - case PTR_STRING_ARR: - pDesc->ppDefArgDescs[j] = new String( aDefArgDescStrings ); - break; - case PTR_CELL_ARR: - pDesc->ppDefArgDescs[j] = new String( aDefArgDescCells ); - break; - default: - pDesc->ppDefArgDescs[j] = new String( aDefArgDescNone ); - break; - } - } - } - } -// pDesc->nHelpId = 0; - - aFunctionList.Insert(pDesc, LIST_APPEND); - nStrLen = (*(pDesc->pFuncName)).Len(); - if ( nStrLen > nMaxFuncNameLen) - nMaxFuncNameLen = nStrLen; - } - - // StarOne AddIns - - ScUnoAddInCollection* pUnoAddIns = ScGlobal::GetAddInCollection(); - long nUnoCount = pUnoAddIns->GetFuncCount(); - for (long nFunc=0; nFunc<nUnoCount; nFunc++) - { - pDesc = new ScFuncDesc; - pDesc->nFIndex = nNextId++; - - if ( pUnoAddIns->FillFunctionDesc( nFunc, *pDesc ) ) - { - aFunctionList.Insert(pDesc, LIST_APPEND); - nStrLen = (*(pDesc->pFuncName)).Len(); - if (nStrLen > nMaxFuncNameLen) - nMaxFuncNameLen = nStrLen; - } - else - delete pDesc; - } -} - -//------------------------------------------------------------------------ - -ScFunctionList::~ScFunctionList() -{ - const ScFuncDesc* pDesc = First(); - while (pDesc) - { - delete pDesc; - pDesc = Next(); - } -} - - -//======================================================================== -// class ScFuncDesc: - -ScFuncDesc::ScFuncDesc() : - pFuncName (NULL), - pFuncDesc (NULL), - ppDefArgNames (NULL), - ppDefArgDescs (NULL), - pDefArgFlags (NULL), - nFIndex (0), - nCategory (0), - nArgCount (0), - nHelpId (0), - bIncomplete (false), - bHasSuppressedArgs(false) -{} - -//------------------------------------------------------------------------ - -ScFuncDesc::~ScFuncDesc() -{ - Clear(); -} - -//------------------------------------------------------------------------ - -void ScFuncDesc::Clear() -{ - USHORT nArgs = nArgCount; - if (nArgs >= VAR_ARGS) nArgs -= VAR_ARGS-1; - if (nArgs) - { - for (USHORT i=0; i<nArgs; i++ ) - { - delete ppDefArgNames[i]; - delete ppDefArgDescs[i]; - } - delete [] ppDefArgNames; - delete [] ppDefArgDescs; - delete [] pDefArgFlags; - } - nArgCount = 0; - ppDefArgNames = NULL; - ppDefArgDescs = NULL; - pDefArgFlags = NULL; - - delete pFuncName; - pFuncName = NULL; - - delete pFuncDesc; - pFuncDesc = NULL; - - nFIndex = 0; - nCategory = 0; - nHelpId = 0; - bIncomplete = false; - bHasSuppressedArgs = false; -} - -//------------------------------------------------------------------------ - -String ScFuncDesc::GetParamList() const -{ - const String& sep = ScCompiler::GetNativeSymbol(ocSep); - - String aSig; - - if ( nArgCount > 0 ) - { - if ( nArgCount < VAR_ARGS ) - { - USHORT nLastSuppressed = nArgCount; - USHORT nLastAdded = nArgCount; - for ( USHORT i=0; i<nArgCount; i++ ) - { - if (pDefArgFlags[i].bSuppress) - nLastSuppressed = i; - else - { - nLastAdded = i; - aSig += *(ppDefArgNames[i]); - if ( i != nArgCount-1 ) - { - aSig.Append(sep); - aSig.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " " )); - } - } - } - // If only suppressed parameters follow the last added parameter, - // remove one "; " - if (nLastSuppressed < nArgCount && nLastAdded < nLastSuppressed && - aSig.Len() >= 2) - aSig.Erase( aSig.Len() - 2 ); - } - else - { - USHORT nFix = nArgCount - VAR_ARGS; - for ( USHORT nArg = 0; nArg < nFix; nArg++ ) - { - if (!pDefArgFlags[nArg].bSuppress) - { - aSig += *(ppDefArgNames[nArg]); - aSig.Append(sep); - aSig.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " " )); - } - } - /* NOTE: Currently there are no suppressed var args parameters. If - * there were, we'd have to cope with it here and above for the fix - * parameters. For now parameters are always added, so no special - * treatment of a trailing "; " necessary. */ - aSig += *(ppDefArgNames[nFix]); - aSig += '1'; - aSig.Append(sep); - aSig.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " " )); - aSig += *(ppDefArgNames[nFix]); - aSig += '2'; - aSig.Append(sep); - aSig.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " ... " )); - } - } - - return aSig; -} - -//------------------------------------------------------------------------ - -String ScFuncDesc::GetSignature() const -{ - String aSig; - - if(pFuncName) - { - aSig = *pFuncName; - - String aParamList( GetParamList() ); - if( aParamList.Len() ) - { - aSig.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "( " )); - aSig.Append( aParamList ); - // U+00A0 (NBSP) prevents automatic line break - aSig.Append( static_cast< sal_Unicode >(0xA0) ).Append( ')' ); - } - else - aSig.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "()" )); - } - return aSig; -} - -//------------------------------------------------------------------------ - -::rtl::OUString ScFuncDesc::getFormula( const ::std::vector< ::rtl::OUString >& _aArguments ) const -{ - const String& sep = ScCompiler::GetNativeSymbol(ocSep); - - ::rtl::OUStringBuffer aFormula; - - if(pFuncName) - { - aFormula.append( *pFuncName ); - - aFormula.appendAscii( "(" ); - ::std::vector< ::rtl::OUString >::const_iterator aIter = _aArguments.begin(); - ::std::vector< ::rtl::OUString >::const_iterator aEnd = _aArguments.end(); - - if ( nArgCount > 0 && aIter != aEnd ) - { - BOOL bLastArg = ( aIter->getLength() == 0 ); - - while( aIter != aEnd && !bLastArg ) - { - aFormula.append( *(aIter) ); - if ( aIter != (aEnd-1) ) - { - bLastArg = !( (aIter+1)->getLength() > 0 ); - if ( !bLastArg ) - aFormula.append( sep ); - } - - ++aIter; - } - } - - aFormula.appendAscii( ")" ); - } - return aFormula.makeStringAndClear(); -} - -//------------------------------------------------------------------------ - -USHORT ScFuncDesc::GetSuppressedArgCount() const -{ - if (!bHasSuppressedArgs || !pDefArgFlags) - return nArgCount; - - USHORT nArgs = nArgCount; - if (nArgs >= VAR_ARGS) - nArgs -= VAR_ARGS - 1; - USHORT nCount = nArgs; - for (USHORT i=0; i < nArgs; ++i) - { - if (pDefArgFlags[i].bSuppress) - --nCount; - } - if (nArgCount >= VAR_ARGS) - nCount += VAR_ARGS - 1; - return nCount; -} - -//------------------------------------------------------------------------ - -::rtl::OUString ScFuncDesc::getFunctionName() const -{ - ::rtl::OUString sRet; - if ( pFuncName ) - sRet = *pFuncName; - return sRet; -} -// ----------------------------------------------------------------------------- -const formula::IFunctionCategory* ScFuncDesc::getCategory() const -{ - return ScGlobal::GetStarCalcFunctionMgr()->getCategory(nCategory); -} -// ----------------------------------------------------------------------------- -::rtl::OUString ScFuncDesc::getDescription() const -{ - ::rtl::OUString sRet; - if ( pFuncDesc ) - sRet = *pFuncDesc; - return sRet; -} -// ----------------------------------------------------------------------------- -// GetSuppressedArgCount -xub_StrLen ScFuncDesc::getSuppressedArgumentCount() const -{ - return GetSuppressedArgCount(); -} -// ----------------------------------------------------------------------------- -// -void ScFuncDesc::fillVisibleArgumentMapping(::std::vector<USHORT>& _rArguments) const -{ - if (!bHasSuppressedArgs || !pDefArgFlags) - { - _rArguments.resize( nArgCount); - ::std::iota( _rArguments.begin(), _rArguments.end(), 0); - } - - _rArguments.reserve( nArgCount); - USHORT nArgs = nArgCount; - if (nArgs >= VAR_ARGS) - nArgs -= VAR_ARGS - 1; - for (USHORT i=0; i < nArgs; ++i) - { - if (!pDefArgFlags[i].bSuppress) - _rArguments.push_back(i); - } -} -// ----------------------------------------------------------------------------- -void ScFuncDesc::initArgumentInfo() const -{ - // get the full argument description - // (add-in has to be instantiated to get the type information) - - if ( bIncomplete && pFuncName ) - { - ScUnoAddInCollection& rAddIns = *ScGlobal::GetAddInCollection(); - String aIntName = rAddIns.FindFunction( *pFuncName, TRUE ); // pFuncName is upper-case - - if ( aIntName.Len() ) - { - // GetFuncData with bComplete=true loads the component and updates - // the global function list if needed. - - rAddIns.GetFuncData( aIntName, true ); - } - - if ( bIncomplete ) - { - DBG_ERRORFILE( "couldn't initialize add-in function" ); - const_cast<ScFuncDesc*>(this)->bIncomplete = FALSE; // even if there was an error, don't try again - } - } -} -// ----------------------------------------------------------------------------- -::rtl::OUString ScFuncDesc::getSignature() const -{ - return GetSignature(); -} -// ----------------------------------------------------------------------------- -long ScFuncDesc::getHelpId() const -{ - return nHelpId; -} -// ----------------------------------------------------------------------------- - -// parameter -sal_uInt32 ScFuncDesc::getParameterCount() const -{ - return nArgCount; -} -// ----------------------------------------------------------------------------- -::rtl::OUString ScFuncDesc::getParameterName(sal_uInt32 _nPos) const -{ - return *(ppDefArgNames[_nPos]); -} -// ----------------------------------------------------------------------------- -::rtl::OUString ScFuncDesc::getParameterDescription(sal_uInt32 _nPos) const -{ - return *(ppDefArgDescs[_nPos]); -} -// ----------------------------------------------------------------------------- -bool ScFuncDesc::isParameterOptional(sal_uInt32 _nPos) const -{ - return pDefArgFlags[_nPos].bOptional; -} -// ----------------------------------------------------------------------------- -//======================================================================== -// class ScFunctionMgr: - -ScFunctionMgr::ScFunctionMgr() - : pFuncList ( ScGlobal::GetStarCalcFunctionList() ), - pCurCatList ( NULL ) -{ - DBG_ASSERT( pFuncList, "Funktionsliste nicht gefunden." ); - ULONG nCount = pFuncList->GetCount(); - const ScFuncDesc* pDesc; - List* pRootList; - ULONG n; - - for ( USHORT i=0; i<MAX_FUNCCAT; i++ ) // Kategorie-Listen erstellen - aCatLists[i] = new List; - - pRootList = aCatLists[0]; // Gesamtliste ("Alle") erstellen - CollatorWrapper* pCaseCollator = ScGlobal::GetCaseCollator(); - for ( n=0; n<nCount; n++ ) - { - ULONG nTmpCnt=0; - pDesc = pFuncList->GetFunction(n); - for (nTmpCnt = 0; nTmpCnt < n; nTmpCnt++) - { - // ist zwar case-sensitiv, aber Umlaute muessen richtig einsortiert werden - - const ScFuncDesc* pTmpDesc = (const ScFuncDesc*)pRootList->GetObject(nTmpCnt); - if ( pCaseCollator->compareString(*pDesc->pFuncName, *pTmpDesc->pFuncName ) == COMPARE_LESS ) - break; - } - pRootList->Insert((void*)pDesc, nTmpCnt); // Einsortieren - } - - for ( n=0; n<nCount; n++ ) // in Gruppenlisten kopieren - { - pDesc = (const ScFuncDesc*)pRootList->GetObject(n); - DBG_ASSERT((pDesc->nCategory) < MAX_FUNCCAT, "Unbekannte Kategorie"); - if ((pDesc->nCategory) < MAX_FUNCCAT) - aCatLists[pDesc->nCategory]->Insert((void*)pDesc, LIST_APPEND); - } -} - -//------------------------------------------------------------------------ - -ScFunctionMgr::~ScFunctionMgr() -{ - for (USHORT i = 0; i < MAX_FUNCCAT; i++) - delete aCatLists[i]; -// delete pFuncList; // Macht spaeter die App -} - -//------------------------------------------------------------------------ - -const ScFuncDesc* ScFunctionMgr::Get( const String& rFName ) const -{ - const ScFuncDesc* pDesc = NULL; - if (rFName.Len() <= pFuncList->GetMaxFuncNameLen()) - for (pDesc = First(0); pDesc; pDesc = Next()) - if (rFName.EqualsIgnoreCaseAscii(*(pDesc->pFuncName))) - break; - return pDesc; -} - -//------------------------------------------------------------------------ -const ScFuncDesc* ScFunctionMgr::Get( USHORT nFIndex ) const -{ - const ScFuncDesc* pDesc; - for (pDesc = First(0); pDesc; pDesc = Next()) - if (pDesc->nFIndex == nFIndex) - break; - return pDesc; -} - -//------------------------------------------------------------------------ - -const ScFuncDesc* ScFunctionMgr::First( USHORT nCategory ) const -{ - DBG_ASSERT( nCategory < MAX_FUNCCAT, "Unbekannte Kategorie" ); - - if ( nCategory < MAX_FUNCCAT ) - { - pCurCatList = aCatLists[nCategory]; - return (const ScFuncDesc*)pCurCatList->First(); - } - else - { - pCurCatList = NULL; - return NULL; - } -} - -//------------------------------------------------------------------------ - -const ScFuncDesc* ScFunctionMgr::Next() const -{ - if ( pCurCatList ) - return (const ScFuncDesc*)pCurCatList->Next(); - else - return NULL; -} -sal_uInt32 ScFunctionMgr::getCount() const -{ - return MAX_FUNCCAT - 1; -} -const formula::IFunctionCategory* ScFunctionMgr::getCategory(sal_uInt32 nCategory) const -{ - formula::IFunctionCategory* pRet = NULL; - if ( nCategory < (MAX_FUNCCAT-1) ) - { - pRet = new ScFunctionCategory(const_cast<ScFunctionMgr*>(this),aCatLists[nCategory+1],nCategory); // aCatLists[0] is "all" - } - return pRet; -} -// ----------------------------------------------------------------------------- -const formula::IFunctionDescription* ScFunctionMgr::getFunctionByName(const ::rtl::OUString& _sFunctionName) const -{ - return Get(_sFunctionName); -} -// ----------------------------------------------------------------------------- -void ScFunctionMgr::fillLastRecentlyUsedFunctions(::std::vector< const formula::IFunctionDescription*>& _rLastRUFunctions) const -{ -#define LRU_MAX 10 - - const ScAppOptions& rAppOpt = SC_MOD()->GetAppOptions(); - USHORT nLRUFuncCount = Min( rAppOpt.GetLRUFuncListCount(), (USHORT)LRU_MAX ); - USHORT* pLRUListIds = rAppOpt.GetLRUFuncList(); - - if ( pLRUListIds ) - { - for ( USHORT i=0; i<nLRUFuncCount; i++ ) - _rLastRUFunctions.push_back( Get( pLRUListIds[i] ) ); - } -} -// ----------------------------------------------------------------------------- -String ScFunctionMgr::GetCategoryName(sal_uInt32 _nCategoryNumber ) -{ - if ( _nCategoryNumber > SC_FUNCGROUP_COUNT ) - { - DBG_ERROR("Invalid category number!"); - return String(); - } // if ( _nCategoryNumber >= SC_FUNCGROUP_COUNT ) - - ::std::auto_ptr<ScResourcePublisher> pCategories( new ScResourcePublisher( ScResId( RID_FUNCTION_CATEGORIES ) ) ); - return String(ScResId((USHORT)_nCategoryNumber)); -} -sal_Unicode ScFunctionMgr::getSingleToken(const formula::IFunctionManager::EToken _eToken) const -{ - switch(_eToken) - { - case eOk: - return ScCompiler::GetNativeSymbol(ocOpen).GetChar(0); - case eClose: - return ScCompiler::GetNativeSymbol(ocClose).GetChar(0); - case eSep: - return ScCompiler::GetNativeSymbol(ocSep).GetChar(0); - case eArrayOpen: - return ScCompiler::GetNativeSymbol(ocArrayOpen).GetChar(0); - case eArrayClose: - return ScCompiler::GetNativeSymbol(ocArrayClose).GetChar(0); - } // switch(_eToken) - return 0; -} -// ----------------------------------------------------------------------------- -sal_uInt32 ScFunctionCategory::getCount() const -{ - return m_pCategory->Count(); -} -// ----------------------------------------------------------------------------- -const formula::IFunctionManager* ScFunctionCategory::getFunctionManager() const -{ - return m_pMgr; -} -// ----------------------------------------------------------------------------- -::rtl::OUString ScFunctionCategory::getName() const -{ - if ( !m_sName.getLength() ) - m_sName = ScFunctionMgr::GetCategoryName(m_nCategory+1); - return m_sName; -} -// ----------------------------------------------------------------------------- -const formula::IFunctionDescription* ScFunctionCategory::getFunction(sal_uInt32 _nPos) const -{ - const ScFuncDesc* pDesc = NULL; - sal_uInt32 i = 0; - for (pDesc = (const ScFuncDesc*)m_pCategory->First(); i < _nPos && pDesc; pDesc = (const ScFuncDesc*)m_pCategory->Next(),++i) - ; - return pDesc; -} -// ----------------------------------------------------------------------------- -sal_uInt32 ScFunctionCategory::getNumber() const -{ - return m_nCategory; -} -// ----------------------------------------------------------------------------- //------------------------------------------------------------------------ @@ -1952,7 +1133,7 @@ CollatorWrapper* ScGlobal::GetCollator() { pCollator = new CollatorWrapper( ::comphelper::getProcessServiceFactory() ); pCollator->loadDefaultCollator( *GetLocale(), SC_COLLATOR_IGNORES ); - } // if ( !pCollator ) + } return pCollator; } CollatorWrapper* ScGlobal::GetCaseCollator() @@ -1961,7 +1142,7 @@ CollatorWrapper* ScGlobal::GetCaseCollator() { pCaseCollator = new CollatorWrapper( ::comphelper::getProcessServiceFactory() ); pCaseCollator->loadDefaultCollator( *GetLocale(), 0 ); - } // if ( !pCaseCollator ) + } return pCaseCollator; } ::utl::TransliterationWrapper* ScGlobal::GetCaseTransliteration() @@ -1971,7 +1152,7 @@ CollatorWrapper* ScGlobal::GetCaseCollator() const LanguageType eOfficeLanguage = Application::GetSettings().GetLanguage(); pCaseTransliteration = new ::utl::TransliterationWrapper(::comphelper::getProcessServiceFactory(), SC_TRANSLITERATION_CASESENSE ); pCaseTransliteration->loadModuleIfNeeded( eOfficeLanguage ); - } // if ( !pCaseTransliteration ) + } return pCaseTransliteration; } IntlWrapper* ScGlobal::GetScIntlWrapper() diff --git a/sc/source/core/data/global2.cxx b/sc/source/core/data/global2.cxx index c9aaff566b15..bc805db5a650 100644 --- a/sc/source/core/data/global2.cxx +++ b/sc/source/core/data/global2.cxx @@ -29,8 +29,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sc.hxx" - - // INCLUDE --------------------------------------------------------------- #include <sfx2/docfile.hxx> @@ -50,10 +48,7 @@ #include "rechead.hxx" #include "compiler.hxx" #include "paramisc.hxx" -// Wang Xu Ming -- 2009-5-18 -// DataPilot Migration #include "dpglobal.hxx" -// End Comments #include "sc.hrc" #include "globstr.hrc" @@ -62,9 +57,6 @@ using ::std::vector; // ----------------------------------------------------------------------- - - - //------------------------------------------------------------------------ // struct ScImportParam: @@ -98,7 +90,6 @@ ScImportParam::~ScImportParam() { } - ScImportParam& ScImportParam::operator=( const ScImportParam& r ) { nCol1 = r.nCol1; @@ -131,7 +122,6 @@ BOOL ScImportParam::operator==( const ScImportParam& rOther ) const //! nQuerySh und pConnection sind gleich ? } - //------------------------------------------------------------------------ // struct ScQueryParam: @@ -469,14 +459,14 @@ ScConsolidateParam::ScConsolidateParam( const ScConsolidateParam& r ) : //------------------------------------------------------------------------ -__EXPORT ScConsolidateParam::~ScConsolidateParam() +ScConsolidateParam::~ScConsolidateParam() { ClearDataAreas(); } //------------------------------------------------------------------------ -void __EXPORT ScConsolidateParam::ClearDataAreas() +void ScConsolidateParam::ClearDataAreas() { if ( ppDataAreas ) { @@ -490,7 +480,7 @@ void __EXPORT ScConsolidateParam::ClearDataAreas() //------------------------------------------------------------------------ -void __EXPORT ScConsolidateParam::Clear() +void ScConsolidateParam::Clear() { ClearDataAreas(); @@ -503,7 +493,7 @@ void __EXPORT ScConsolidateParam::Clear() //------------------------------------------------------------------------ -ScConsolidateParam& __EXPORT ScConsolidateParam::operator=( const ScConsolidateParam& r ) +ScConsolidateParam& ScConsolidateParam::operator=( const ScConsolidateParam& r ) { nCol = r.nCol; nRow = r.nRow; @@ -519,7 +509,7 @@ ScConsolidateParam& __EXPORT ScConsolidateParam::operator=( const ScConsolidateP //------------------------------------------------------------------------ -BOOL __EXPORT ScConsolidateParam::operator==( const ScConsolidateParam& r ) const +BOOL ScConsolidateParam::operator==( const ScConsolidateParam& r ) const { BOOL bEqual = (nCol == r.nCol) && (nRow == r.nRow) @@ -544,7 +534,7 @@ BOOL __EXPORT ScConsolidateParam::operator==( const ScConsolidateParam& r ) cons //------------------------------------------------------------------------ -void __EXPORT ScConsolidateParam::SetAreas( ScArea* const* ppAreas, USHORT nCount ) +void ScConsolidateParam::SetAreas( ScArea* const* ppAreas, USHORT nCount ) { ClearDataAreas(); if ( ppAreas && nCount > 0 ) @@ -565,6 +555,11 @@ PivotField::PivotField( SCsCOL nNewCol, USHORT nNewFuncMask ) : { } +PivotField::PivotField( const PivotField& r ) : + nCol(r.nCol), nFuncMask(r.nFuncMask), nFuncCount(r.nFuncCount), maFieldRef(r.maFieldRef) +{ +} + bool PivotField::operator==( const PivotField& r ) const { return (nCol == r.nCol) @@ -581,7 +576,6 @@ bool PivotField::operator==( const PivotField& r ) const ScPivotParam::ScPivotParam() : nCol(0), nRow(0), nTab(0), - nPageCount(0), nColCount(0), nRowCount(0), nDataCount(0), bIgnoreEmptyRows(FALSE), bDetectCategories(FALSE), bMakeTotalCol(TRUE), bMakeTotalRow(TRUE) { @@ -591,37 +585,32 @@ ScPivotParam::ScPivotParam() ScPivotParam::ScPivotParam( const ScPivotParam& r ) : nCol( r.nCol ), nRow( r.nRow ), nTab( r.nTab ), - nPageCount(0), nColCount(0), nRowCount(0), nDataCount(0), + maPageFields(r.maPageFields), + maColFields(r.maColFields), + maRowFields(r.maRowFields), + maDataFields(r.maDataFields), bIgnoreEmptyRows(r.bIgnoreEmptyRows), bDetectCategories(r.bDetectCategories), bMakeTotalCol(r.bMakeTotalCol), bMakeTotalRow(r.bMakeTotalRow) { - SetPivotArrays ( r.aPageArr, r.aColArr, r.aRowArr, r.aDataArr, - r.nPageCount, r.nColCount, r.nRowCount, r.nDataCount ); - SetLabelData(r.maLabelArray); } //------------------------------------------------------------------------ -__EXPORT ScPivotParam::~ScPivotParam() +ScPivotParam::~ScPivotParam() { } //------------------------------------------------------------------------ - -void __EXPORT ScPivotParam::ClearPivotArrays() +void ScPivotParam::ClearPivotArrays() { - memset( aPageArr, 0, PIVOT_MAXPAGEFIELD * sizeof(PivotField) ); - memset( aColArr, 0, PIVOT_MAXFIELD * sizeof(PivotField) ); - memset( aRowArr, 0, PIVOT_MAXFIELD * sizeof(PivotField) ); - memset( aDataArr, 0, PIVOT_MAXFIELD * sizeof(PivotField) ); - nPageCount = 0; - nColCount = 0; - nRowCount = 0; - nDataCount = 0; + maPageFields.clear(); + maColFields.clear(); + maRowFields.clear(); + maDataFields.clear(); } void ScPivotParam::SetLabelData(const vector<ScDPLabelDataRef>& r) @@ -639,34 +628,7 @@ void ScPivotParam::SetLabelData(const vector<ScDPLabelDataRef>& r) //------------------------------------------------------------------------ -void __EXPORT ScPivotParam::SetPivotArrays ( const PivotField* pPageArr, - const PivotField* pColArr, - const PivotField* pRowArr, - const PivotField* pDataArr, - SCSIZE nPageCnt, - SCSIZE nColCnt, - SCSIZE nRowCnt, - SCSIZE nDataCnt ) -{ - ClearPivotArrays(); - - if ( pPageArr && pColArr && pRowArr && pDataArr ) - { - nPageCount = (nPageCnt>PIVOT_MAXPAGEFIELD) ? PIVOT_MAXPAGEFIELD : nPageCnt; - nColCount = (nColCnt>PIVOT_MAXFIELD) ? PIVOT_MAXFIELD : nColCnt; - nRowCount = (nRowCnt>PIVOT_MAXFIELD) ? PIVOT_MAXFIELD : nRowCnt; - nDataCount = (nDataCnt>PIVOT_MAXFIELD) ? PIVOT_MAXFIELD : nDataCnt; - - memcpy( aPageArr, pPageArr, nPageCount * sizeof(PivotField) ); - memcpy( aColArr, pColArr, nColCount * sizeof(PivotField) ); - memcpy( aRowArr, pRowArr, nRowCount * sizeof(PivotField) ); - memcpy( aDataArr, pDataArr, nDataCount * sizeof(PivotField) ); - } -} - -//------------------------------------------------------------------------ - -ScPivotParam& __EXPORT ScPivotParam::operator=( const ScPivotParam& r ) +ScPivotParam& ScPivotParam::operator=( const ScPivotParam& r ) { nCol = r.nCol; nRow = r.nRow; @@ -676,15 +638,17 @@ ScPivotParam& __EXPORT ScPivotParam::operator=( const ScPivotParam& r ) bMakeTotalCol = r.bMakeTotalCol; bMakeTotalRow = r.bMakeTotalRow; - SetPivotArrays ( r.aPageArr, r.aColArr, r.aRowArr, r.aDataArr, - r.nPageCount, r.nColCount, r.nRowCount, r.nDataCount ); + maPageFields = r.maPageFields; + maColFields = r.maColFields; + maRowFields = r.maRowFields; + maDataFields = r.maDataFields; SetLabelData(r.maLabelArray); return *this; } //------------------------------------------------------------------------ -BOOL __EXPORT ScPivotParam::operator==( const ScPivotParam& r ) const +BOOL ScPivotParam::operator==( const ScPivotParam& r ) const { BOOL bEqual = (nCol == r.nCol) && (nRow == r.nRow) @@ -694,27 +658,10 @@ BOOL __EXPORT ScPivotParam::operator==( const ScPivotParam& r ) const && (bMakeTotalCol == r.bMakeTotalCol) && (bMakeTotalRow == r.bMakeTotalRow) && (maLabelArray.size() == r.maLabelArray.size()) - && (nPageCount == r.nPageCount) - && (nColCount == r.nColCount) - && (nRowCount == r.nRowCount) - && (nDataCount == r.nDataCount); - - if ( bEqual ) - { - SCSIZE i; - - for ( i=0; i<nPageCount && bEqual; i++ ) - bEqual = ( aPageArr[i] == r.aPageArr[i] ); - - for ( i=0; i<nColCount && bEqual; i++ ) - bEqual = ( aColArr[i] == r.aColArr[i] ); - - for ( i=0; i<nRowCount && bEqual; i++ ) - bEqual = ( aRowArr[i] == r.aRowArr[i] ); - - for ( i=0; i<nDataCount && bEqual; i++ ) - bEqual = ( aDataArr[i] == r.aDataArr[i] ); - } + && maPageFields == r.maPageFields + && maColFields == r.maColFields + && maRowFields == r.maRowFields + && maDataFields == r.maDataFields; return bEqual; } @@ -758,7 +705,7 @@ ScSolveParam::~ScSolveParam() //------------------------------------------------------------------------ -ScSolveParam& __EXPORT ScSolveParam::operator=( const ScSolveParam& r ) +ScSolveParam& ScSolveParam::operator=( const ScSolveParam& r ) { delete pStrTargetVal; @@ -790,7 +737,6 @@ BOOL ScSolveParam::operator==( const ScSolveParam& r ) const return bEqual; } - //------------------------------------------------------------------------ // struct ScTabOpParam @@ -832,7 +778,7 @@ ScTabOpParam& ScTabOpParam::operator=( const ScTabOpParam& r ) //------------------------------------------------------------------------ -BOOL __EXPORT ScTabOpParam::operator==( const ScTabOpParam& r ) const +BOOL ScTabOpParam::operator==( const ScTabOpParam& r ) const { return ( (aRefFormulaCell == r.aRefFormulaCell) && (aRefFormulaEnd == r.aRefFormulaEnd) @@ -874,7 +820,6 @@ String ScGlobal::GetAbsDocName( const String& rFileName, return aAbsName; } - String ScGlobal::GetDocTabName( const String& rFileName, const String& rTabName ) { diff --git a/sc/source/core/data/globalx.cxx b/sc/source/core/data/globalx.cxx index be5cf810a967..8d043ac7a1e8 100644 --- a/sc/source/core/data/globalx.cxx +++ b/sc/source/core/data/globalx.cxx @@ -56,7 +56,6 @@ using namespace ::com::sun::star::uno; using namespace ::com::sun::star::ucb; -// static void ScGlobal::InitAddIns() { // multi paths separated by semicolons @@ -135,7 +134,6 @@ void ScGlobal::InitAddIns() } -// static String ScGlobal::GetOrdinalSuffix( sal_Int32 nNumber) { if (!xOrdinalSuffix.is()) @@ -146,7 +144,7 @@ String ScGlobal::GetOrdinalSuffix( sal_Int32 nNumber) ::comphelper::getProcessServiceFactory(); Reference< XInterface > xInterface = xServiceManager->createInstance( - ::rtl::OUString::createFromAscii("com.sun.star.i18n.OrdinalSuffix")); + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.i18n.OrdinalSuffix"))); if (xInterface.is()) xOrdinalSuffix = Reference< i18n::XOrdinalSuffix >( xInterface, UNO_QUERY); } diff --git a/sc/source/core/data/makefile.mk b/sc/source/core/data/makefile.mk index f3b3a357ade3..1fbcd3cbab28 100644 --- a/sc/source/core/data/makefile.mk +++ b/sc/source/core/data/makefile.mk @@ -43,36 +43,44 @@ AUTOSEG=true # --- Files -------------------------------------------------------- +.IF "$(USE_SYSTEM_STL)"!="YES" +CFLAGSCXX+=-DSTLPORT_WORKAROUND +.ENDIF + SLOFILES = \ - $(SLO)$/attarray.obj \ + $(EXCEPTIONSFILES) \ + $(EXCEPTIONSNOOPTFILES) \ $(SLO)$/attrib.obj \ + $(SLO)$/compressedarray.obj \ + $(SLO)$/docparam.obj \ + $(SLO)$/markarr.obj \ + $(SLO)$/markdata.obj \ + $(SLO)$/pagepar.obj \ + $(SLO)$/sheetevents.obj \ + $(SLO)$/sortparam.obj + +EXCEPTIONSFILES= \ + $(SLO)$/attarray.obj \ $(SLO)$/autonamecache.obj \ $(SLO)$/bcaslot.obj \ - $(SLO)$/cell.obj \ $(SLO)$/cell2.obj \ - $(SLO)$/clipparam.obj \ + $(SLO)$/clipparam.obj \ $(SLO)$/column.obj \ - $(SLO)$/column2.obj \ - $(SLO)$/column3.obj \ - $(SLO)$/compressedarray.obj \ - $(SLO)$/conditio.obj \ $(SLO)$/dbdocutl.obj \ $(SLO)$/dociter.obj \ $(SLO)$/docpool.obj \ $(SLO)$/documen2.obj \ $(SLO)$/documen3.obj \ - $(SLO)$/documen4.obj \ $(SLO)$/documen5.obj \ $(SLO)$/documen6.obj \ $(SLO)$/documen7.obj \ $(SLO)$/documen8.obj \ $(SLO)$/documen9.obj \ $(SLO)$/document.obj \ - $(SLO)$/docparam.obj \ - $(SLO)$/dpcachetable.obj \ - $(SLO)$/dpdimsave.obj \ + $(SLO)$/dpcachetable.obj \ + $(SLO)$/dpdimsave.obj \ $(SLO)$/dpglobal.obj \ - $(SLO)$/dpgroup.obj \ + $(SLO)$/dpgroup.obj \ $(SLO)$/dpobject.obj \ $(SLO)$/dpoutput.obj \ $(SLO)$/dpoutputgeometry.obj \ @@ -80,97 +88,54 @@ SLOFILES = \ $(SLO)$/dpsdbtab.obj \ $(SLO)$/dpshttab.obj \ $(SLO)$/dptabdat.obj \ + $(SLO)$/dptablecache.obj \ $(SLO)$/dptabres.obj \ $(SLO)$/dptabsrc.obj \ - $(SLO)$/dptablecache.obj\ - $(SLO)$/scdpoutputimpl.obj\ $(SLO)$/drawpage.obj \ $(SLO)$/drwlayer.obj \ $(SLO)$/fillinfo.obj \ + $(SLO)$/funcdesc.obj \ $(SLO)$/global.obj \ $(SLO)$/global2.obj \ $(SLO)$/globalx.obj \ - $(SLO)$/markarr.obj \ - $(SLO)$/markdata.obj \ $(SLO)$/olinetab.obj \ - $(SLO)$/pagepar.obj \ $(SLO)$/patattr.obj \ $(SLO)$/pivot2.obj \ $(SLO)$/poolhelp.obj \ - $(SLO)$/sheetevents.obj \ + $(SLO)$/postit.obj \ + $(SLO)$/scdpoutputimpl.obj \ $(SLO)$/segmenttree.obj \ - $(SLO)$/sortparam.obj \ $(SLO)$/stlpool.obj \ $(SLO)$/stlsheet.obj \ - $(SLO)$/tabbgcolor.obj \ + $(SLO)$/tabbgcolor.obj \ $(SLO)$/table1.obj \ $(SLO)$/table2.obj \ - $(SLO)$/table3.obj \ - $(SLO)$/table4.obj \ $(SLO)$/table5.obj \ $(SLO)$/table6.obj \ $(SLO)$/tabprotection.obj \ - $(SLO)$/userdat.obj \ - $(SLO)$/validat.obj \ - $(SLO)$/postit.obj + $(SLO)$/userdat.obj -EXCEPTIONSFILES= \ - $(SLO)$/autonamecache.obj \ - $(SLO)$/bcaslot.obj \ - $(SLO)$/cell2.obj \ - $(SLO)$/clipparam.obj \ - $(SLO)$/column.obj \ +.IF "$(OS)$(COM)$(CPUNAME)"=="LINUXGCCSPARC" +EXCEPTIONSNOOPTFILES= \ + $(SLO)$/cell.obj \ + $(SLO)$/column2.obj \ $(SLO)$/column3.obj \ - $(SLO)$/dociter.obj \ - $(SLO)$/documen2.obj \ - $(SLO)$/document.obj \ - $(SLO)$/dpdimsave.obj \ - $(SLO)$/dpglobal.obj \ - $(SLO)$/dpgroup.obj \ - $(SLO)$/dpshttab.obj \ - $(SLO)$/dptabres.obj \ - $(SLO)$/dptabdat.obj \ - $(SLO)$/global2.obj \ - $(SLO)$/tabbgcolor.obj \ - $(SLO)$/table1.obj \ - $(SLO)$/table2.obj \ + $(SLO)$/conditio.obj \ + $(SLO)$/documen4.obj \ $(SLO)$/table3.obj \ - $(SLO)$/tabprotection.obj \ - $(SLO)$/postit.obj \ - $(SLO)$/documen3.obj \ - $(SLO)$/documen5.obj \ - $(SLO)$/documen6.obj \ - $(SLO)$/documen9.obj \ - $(SLO)$/dpcachetable.obj \ - $(SLO)$/dptablecache.obj \ - $(SLO)$/scdpoutputimpl.obj \ - $(SLO)$/dpsdbtab.obj \ - $(SLO)$/dpobject.obj \ - $(SLO)$/dpoutput.obj \ - $(SLO)$/dpoutputgeometry.obj \ - $(SLO)$/dpsave.obj \ - $(SLO)$/dbdocutl.obj \ - $(SLO)$/dptabsrc.obj \ - $(SLO)$/drwlayer.obj \ - $(SLO)$/globalx.obj \ - $(SLO)$/segmenttree.obj + $(SLO)$/table4.obj \ + $(SLO)$/validat.obj -.IF "$(OS)$(COM)$(CPUNAME)"=="LINUXGCCSPARC" -NOOPTFILES= \ - $(SLO)$/column2.obj \ - $(SLO)$/column3.obj \ - $(SLO)$/table3.obj \ - $(SLO)$/table4.obj \ - $(SLO)$/documen4.obj \ - $(SLO)$/conditio.obj \ - $(SLO)$/validat.obj -EXCEPTIONSNOOPTFILES= \ - $(SLO)$/cell.obj .ELSE EXCEPTIONSFILES+= \ $(SLO)$/cell.obj \ - $(SLO)$/global.obj \ - $(SLO)$/table5.obj + $(SLO)$/column2.obj \ + $(SLO)$/column3.obj \ + $(SLO)$/conditio.obj \ + $(SLO)$/documen4.obj \ + $(SLO)$/table3.obj \ + $(SLO)$/table4.obj \ + $(SLO)$/validat.obj .ENDIF # --- Tagets ------------------------------------------------------- diff --git a/sc/source/core/data/markarr.cxx b/sc/source/core/data/markarr.cxx index b5b20084fc6d..ba7c0ce77454 100644 --- a/sc/source/core/data/markarr.cxx +++ b/sc/source/core/data/markarr.cxx @@ -249,7 +249,6 @@ void ScMarkArray::SetMarkArea( SCROW nStartRow, SCROW nEndRow, BOOL bMarked ) } } } -// InfoBox(0, String(nCount) + String(" Eintraege") ).Execute(); } BOOL ScMarkArray::IsAllMarked( SCROW nStartRow, SCROW nEndRow ) const diff --git a/sc/source/core/data/markdata.cxx b/sc/source/core/data/markdata.cxx index e9486e7705b0..8e1bbf29381c 100644 --- a/sc/source/core/data/markdata.cxx +++ b/sc/source/core/data/markdata.cxx @@ -345,18 +345,18 @@ void ScMarkData::MarkFromRangeList( const ScRangeList& rList, BOOL bReset ) ResetMark(); } - ULONG nCount = rList.Count(); + size_t nCount = rList.size(); if ( nCount == 1 && !bMarked && !bMultiMarked ) { - ScRange aRange = *rList.GetObject(0); + ScRange aRange = *rList[ 0 ]; SetMarkArea( aRange ); SelectTable( aRange.aStart.Tab(), TRUE ); } else { - for (ULONG i=0; i<nCount; i++) + for (size_t i=0; i < nCount; i++) { - ScRange aRange = *rList.GetObject(i); + ScRange aRange = *rList[ i ]; SetMultiMarkArea( aRange, TRUE ); SelectTable( aRange.aStart.Tab(), TRUE ); } @@ -411,10 +411,9 @@ void ScMarkData::ExtendRangeListTables( ScRangeList* pList ) const for (SCTAB nTab=0; nTab<=MAXTAB; nTab++) if (bTabMarked[nTab]) { - ULONG nCount = aOldList.Count(); - for (ULONG i=0; i<nCount; i++) + for ( size_t i=0, nCount = aOldList.size(); i<nCount; i++) { - ScRange aRange = *aOldList.GetObject(i); + ScRange aRange = *aOldList[ i ]; aRange.aStart.SetTab(nTab); aRange.aEnd.SetTab(nTab); pList->Append( aRange ); diff --git a/sc/source/core/data/olinetab.cxx b/sc/source/core/data/olinetab.cxx index 19706ce86c0f..c7a2b0cec0f7 100644 --- a/sc/source/core/data/olinetab.cxx +++ b/sc/source/core/data/olinetab.cxx @@ -271,35 +271,6 @@ BOOL ScOutlineArray::Insert( SCCOLROW nStartCol, SCCOLROW nEndCol, BOOL& rSizeCh rSizeChanged = TRUE; } -/* nicht zusammenfassen! - - // zusammenfassen - - USHORT nCount = aCollections[nLevel].GetCount(); - USHORT nIndex; - bFound = FALSE; - for ( nIndex=0; nIndex<nCount && !bFound; nIndex++ ) - { - if ( ((ScOutlineEntry*) aCollections[nLevel].At(nIndex))->GetEnd() + 1 == nStartCol ) - { - nStartCol = ((ScOutlineEntry*) aCollections[nLevel].At(nIndex))->GetStart(); - aCollections[nLevel].AtFree(nIndex); - nCount = aCollections[nLevel].GetCount(); // Daten geaendert - bFound = TRUE; - } - } - - bFound = FALSE; - for ( nIndex=0; nIndex<nCount && !bFound; nIndex++ ) - { - if ( ((ScOutlineEntry*) aCollections[nLevel].At(nIndex))->GetStart() == nEndCol + 1 ) - { - nEndCol = ((ScOutlineEntry*) aCollections[nLevel].At(nIndex))->GetEnd(); - aCollections[nLevel].AtFree(nIndex); - bFound = TRUE; - } - } -*/ ScOutlineEntry* pNewEntry = new ScOutlineEntry( nStartCol, nEndCol+1-nStartCol, bHidden ); pNewEntry->SetVisible( bVisible ); aCollections[nLevel].Insert( pNewEntry ); @@ -426,7 +397,6 @@ BOOL ScOutlineArray::Remove( SCCOLROW nBlockStart, SCCOLROW nBlockEnd, BOOL& rSi if ( nBlockStart<=nEnd && nBlockEnd>=nStart ) { -// RemoveSub( nStart, nEnd, nLevel+1 ); pCollect->AtFree(i); PromoteSub( nStart, nEnd, nLevel+1 ); nCount = pCollect->GetCount(); diff --git a/sc/source/core/data/patattr.cxx b/sc/source/core/data/patattr.cxx index eef90c7df8df..de590cd41d1c 100644 --- a/sc/source/core/data/patattr.cxx +++ b/sc/source/core/data/patattr.cxx @@ -121,12 +121,12 @@ ScPatternAttr::ScPatternAttr( const ScPatternAttr& rPatternAttr ) pName = NULL; } -__EXPORT ScPatternAttr::~ScPatternAttr() +ScPatternAttr::~ScPatternAttr() { delete pName; } -SfxPoolItem* __EXPORT ScPatternAttr::Clone( SfxItemPool *pPool ) const +SfxPoolItem* ScPatternAttr::Clone( SfxItemPool *pPool ) const { ScPatternAttr* pPattern = new ScPatternAttr( GetItemSet().Clone(TRUE, pPool) ); @@ -156,7 +156,7 @@ inline bool EqualPatternSets( const SfxItemSet& rSet1, const SfxItemSet& rSet2 ) return ( 0 == memcmp( pItems1, pItems2, (ATTR_PATTERN_END - ATTR_PATTERN_START + 1) * sizeof(pItems1[0]) ) ); } -int __EXPORT ScPatternAttr::operator==( const SfxPoolItem& rCmp ) const +int ScPatternAttr::operator==( const SfxPoolItem& rCmp ) const { // #i62090# Use quick comparison between ScPatternAttr's ItemSets @@ -164,7 +164,7 @@ int __EXPORT ScPatternAttr::operator==( const SfxPoolItem& rCmp ) const StrCmp( GetStyleName(), static_cast<const ScPatternAttr&>(rCmp).GetStyleName() ) ); } -SfxPoolItem* __EXPORT ScPatternAttr::Create( SvStream& rStream, USHORT /* nVersion */ ) const +SfxPoolItem* ScPatternAttr::Create( SvStream& rStream, USHORT /* nVersion */ ) const { String* pStr; BOOL bHasStyle; @@ -192,7 +192,7 @@ SfxPoolItem* __EXPORT ScPatternAttr::Create( SvStream& rStream, USHORT /* nVersi return pPattern; } -SvStream& __EXPORT ScPatternAttr::Store(SvStream& rStream, USHORT /* nItemVersion */) const +SvStream& ScPatternAttr::Store(SvStream& rStream, USHORT /* nItemVersion */) const { rStream << (BOOL)TRUE; diff --git a/sc/source/core/data/postit.cxx b/sc/source/core/data/postit.cxx index a80567b3c302..4ba65ac6dec9 100644 --- a/sc/source/core/data/postit.cxx +++ b/sc/source/core/data/postit.cxx @@ -100,7 +100,6 @@ void ScCaptionUtil::SetCaptionLayer( SdrCaptionObj& rCaption, bool bShown ) void ScCaptionUtil::SetBasicCaptionSettings( SdrCaptionObj& rCaption, bool bShown ) { - ScDrawLayer::SetAnchor( &rCaption, SCA_PAGE ); SetCaptionLayer( rCaption, bShown ); rCaption.SetFixedTail(); rCaption.SetSpecialTextBoxShadow(); diff --git a/sc/source/core/data/segmenttree.cxx b/sc/source/core/data/segmenttree.cxx index dd40e726fd9e..16e8d9f4560f 100644 --- a/sc/source/core/data/segmenttree.cxx +++ b/sc/source/core/data/segmenttree.cxx @@ -57,7 +57,7 @@ public: ScFlatSegmentsImpl(const ScFlatSegmentsImpl& r); ~ScFlatSegmentsImpl(); - void setValue(SCCOLROW nPos1, SCCOLROW nPos2, ValueType nValue); + bool setValue(SCCOLROW nPos1, SCCOLROW nPos2, ValueType nValue); ValueType getValue(SCCOLROW nPos); ExtValueType getSumValue(SCCOLROW nPos1, SCCOLROW nPos2); bool getRangeData(SCCOLROW nPos, RangeData& rData); @@ -111,12 +111,16 @@ ScFlatSegmentsImpl<_ValueType, _ExtValueType>::~ScFlatSegmentsImpl() } template<typename _ValueType, typename _ExtValueType> -void ScFlatSegmentsImpl<_ValueType, _ExtValueType>::setValue(SCCOLROW nPos1, SCCOLROW nPos2, ValueType nValue) +bool ScFlatSegmentsImpl<_ValueType, _ExtValueType>::setValue(SCCOLROW nPos1, SCCOLROW nPos2, ValueType nValue) { + ::std::pair<typename fst_type::const_iterator, bool> ret; if (mbInsertFromBack) - maSegments.insert_back(nPos1, nPos2+1, nValue); + ret = maSegments.insert_back(nPos1, nPos2+1, nValue); else - maSegments.insert_front(nPos1, nPos2+1, nValue); + ret = maSegments.insert(maItr, nPos1, nPos2+1, nValue); + + maItr = ret.first; + return ret.second; } template<typename _ValueType, typename _ExtValueType> @@ -182,8 +186,13 @@ bool ScFlatSegmentsImpl<_ValueType, _ExtValueType>::getRangeData(SCCOLROW nPos, else { // Conduct leaf-node only search. Faster when searching between range insertion. - if (!maSegments.search(nPos, nValue, &nPos1, &nPos2)) + ::std::pair<typename fst_type::const_iterator, bool> ret = + maSegments.search(maItr, nPos, nValue, &nPos1, &nPos2); + + if (!ret.second) return false; + + maItr = ret.first; } rData.mnPos1 = nPos1; @@ -268,18 +277,18 @@ public: { } - void setTrue(SCCOLROW nPos1, SCCOLROW nPos2); - void setFalse(SCCOLROW nPos1, SCCOLROW nPos2); + bool setTrue(SCCOLROW nPos1, SCCOLROW nPos2); + bool setFalse(SCCOLROW nPos1, SCCOLROW nPos2); }; -void ScFlatBoolSegmentsImpl::setTrue(SCCOLROW nPos1, SCCOLROW nPos2) +bool ScFlatBoolSegmentsImpl::setTrue(SCCOLROW nPos1, SCCOLROW nPos2) { - setValue(nPos1, nPos2, true); + return setValue(nPos1, nPos2, true); } -void ScFlatBoolSegmentsImpl::setFalse(SCCOLROW nPos1, SCCOLROW nPos2) +bool ScFlatBoolSegmentsImpl::setFalse(SCCOLROW nPos1, SCCOLROW nPos2) { - setValue(nPos1, nPos2, false); + return setValue(nPos1, nPos2, false); } // ============================================================================ @@ -362,14 +371,14 @@ ScFlatBoolRowSegments::~ScFlatBoolRowSegments() { } -void ScFlatBoolRowSegments::setTrue(SCROW nRow1, SCROW nRow2) +bool ScFlatBoolRowSegments::setTrue(SCROW nRow1, SCROW nRow2) { - mpImpl->setTrue(static_cast<SCCOLROW>(nRow1), static_cast<SCCOLROW>(nRow2)); + return mpImpl->setTrue(static_cast<SCCOLROW>(nRow1), static_cast<SCCOLROW>(nRow2)); } -void ScFlatBoolRowSegments::setFalse(SCROW nRow1, SCROW nRow2) +bool ScFlatBoolRowSegments::setFalse(SCROW nRow1, SCROW nRow2) { - mpImpl->setFalse(static_cast<SCCOLROW>(nRow1), static_cast<SCCOLROW>(nRow2)); + return mpImpl->setFalse(static_cast<SCCOLROW>(nRow1), static_cast<SCCOLROW>(nRow2)); } bool ScFlatBoolRowSegments::getValue(SCROW nRow) @@ -399,19 +408,19 @@ void ScFlatBoolRowSegments::insertSegment(SCROW nRow, SCROW nSize, bool bSkipSta mpImpl->insertSegment(static_cast<SCCOLROW>(nRow), static_cast<SCCOLROW>(nSize), bSkipStartBoundary); } -SCROW ScFlatBoolRowSegments::findLastNotOf(bool bValue) const +void ScFlatBoolRowSegments::enableTreeSearch(bool bEnable) { - return static_cast<SCROW>(mpImpl->findLastNotOf(bValue)); + mpImpl->enableTreeSearch(bEnable); } -void ScFlatBoolRowSegments::enableTreeSearch(bool bEnable) +void ScFlatBoolRowSegments::setInsertFromBack(bool bEnable) { - mpImpl->enableTreeSearch(bEnable); + mpImpl->setInsertFromBack(bEnable); } -void ScFlatBoolRowSegments::setInsertFromBack(bool bInsertFromBack) +SCROW ScFlatBoolRowSegments::findLastNotOf(bool bValue) const { - mpImpl->setInsertFromBack(bInsertFromBack); + return static_cast<SCROW>(mpImpl->findLastNotOf(bValue)); } // ============================================================================ @@ -430,19 +439,14 @@ ScFlatBoolColSegments::~ScFlatBoolColSegments() { } -void ScFlatBoolColSegments::setTrue(SCCOL nCol1, SCCOL nCol2) -{ - mpImpl->setTrue(static_cast<SCCOLROW>(nCol1), static_cast<SCCOLROW>(nCol2)); -} - -void ScFlatBoolColSegments::setFalse(SCCOL nCol1, SCCOL nCol2) +bool ScFlatBoolColSegments::setTrue(SCCOL nCol1, SCCOL nCol2) { - mpImpl->setFalse(static_cast<SCCOLROW>(nCol1), static_cast<SCCOLROW>(nCol2)); + return mpImpl->setTrue(static_cast<SCCOLROW>(nCol1), static_cast<SCCOLROW>(nCol2)); } -bool ScFlatBoolColSegments::getValue(SCCOL nCol) +bool ScFlatBoolColSegments::setFalse(SCCOL nCol1, SCCOL nCol2) { - return mpImpl->getValue(static_cast<SCCOLROW>(nCol)); + return mpImpl->setFalse(static_cast<SCCOLROW>(nCol1), static_cast<SCCOLROW>(nCol2)); } bool ScFlatBoolColSegments::getRangeData(SCCOL nCol, RangeData& rData) diff --git a/sc/source/core/data/sheetevents.cxx b/sc/source/core/data/sheetevents.cxx index d1df2bb04df6..da935464cffb 100644 --- a/sc/source/core/data/sheetevents.cxx +++ b/sc/source/core/data/sheetevents.cxx @@ -40,7 +40,6 @@ // ----------------------------------------------------------------------- -// static rtl::OUString ScSheetEvents::GetEventName(sal_Int32 nEvent) { if (nEvent<0 || nEvent>=SC_SHEETEVENT_COUNT) @@ -62,7 +61,6 @@ rtl::OUString ScSheetEvents::GetEventName(sal_Int32 nEvent) return rtl::OUString::createFromAscii(aEventNames[nEvent]); } -// static sal_Int32 ScSheetEvents::GetVbaSheetEventId(sal_Int32 nEvent) { using namespace ::com::sun::star::script::vba::VBAEventId; @@ -85,7 +83,6 @@ sal_Int32 ScSheetEvents::GetVbaSheetEventId(sal_Int32 nEvent) return nVbaEventIds[nEvent]; } -// static sal_Int32 ScSheetEvents::GetVbaDocumentEventId(sal_Int32 nEvent) { using namespace ::com::sun::star::script::vba::VBAEventId; diff --git a/sc/source/core/data/stlpool.cxx b/sc/source/core/data/stlpool.cxx index c391f09b1380..4ca9eadab729 100644 --- a/sc/source/core/data/stlpool.cxx +++ b/sc/source/core/data/stlpool.cxx @@ -81,7 +81,7 @@ ScStyleSheetPool::ScStyleSheetPool( SfxItemPool& rPoolP, //------------------------------------------------------------------------ -__EXPORT ScStyleSheetPool::~ScStyleSheetPool() +ScStyleSheetPool::~ScStyleSheetPool() { } @@ -121,7 +121,7 @@ SfxStyleSheetBase& ScStyleSheetPool::Make( const String& rName, //------------------------------------------------------------------------ -SfxStyleSheetBase* __EXPORT ScStyleSheetPool::Create( +SfxStyleSheetBase* ScStyleSheetPool::Create( const String& rName, SfxStyleFamily eFamily, USHORT nMaskP ) @@ -135,7 +135,7 @@ SfxStyleSheetBase* __EXPORT ScStyleSheetPool::Create( //------------------------------------------------------------------------ -SfxStyleSheetBase* __EXPORT ScStyleSheetPool::Create( const SfxStyleSheetBase& rStyle ) +SfxStyleSheetBase* ScStyleSheetPool::Create( const SfxStyleSheetBase& rStyle ) { DBG_ASSERT( rStyle.ISA(ScStyleSheet), "Invalid StyleSheet-class! :-/" ); return new ScStyleSheet( (const ScStyleSheet&) rStyle ); @@ -143,7 +143,7 @@ SfxStyleSheetBase* __EXPORT ScStyleSheetPool::Create( const SfxStyleSheetBase& r //------------------------------------------------------------------------ -void __EXPORT ScStyleSheetPool::Remove( SfxStyleSheetBase* pStyle ) +void ScStyleSheetPool::Remove( SfxStyleSheetBase* pStyle ) { if ( pStyle ) { @@ -255,7 +255,6 @@ void ScStyleSheetPool::CreateStandardStyles() String aStr; xub_StrLen nStrLen; String aHelpFile;//XXX JN welcher Text??? - //ULONG nNumFmt = 0L; SfxItemSet* pSet = NULL; SfxItemSet* pHFSet = NULL; SvxSetItem* pHFSetItem = NULL; @@ -337,11 +336,6 @@ void ScStyleSheetPool::CreateStandardStyles() pSheet->SetParent( SCSTR( STR_STYLENAME_RESULT ) ); pSheet->SetHelpId( aHelpFile, HID_SC_SHEET_CELL_ERG1 ); - // will now be done in GetItemSet(); - // pSet = &pSheet->GetItemSet(); - // nNumFmt = pDoc->GetFormatTable()->GetStandardFormat( NUMBERFORMAT_CURRENCY, - // ScGlobal::eLnge ); - // pSet->Put( SfxUInt32Item( ATTR_VALUE_FORMAT, nNumFmt ) ); //---------------- // 4. Ueberschrift diff --git a/sc/source/core/data/stlsheet.cxx b/sc/source/core/data/stlsheet.cxx index c77fc710b325..65b6c3eb2e72 100644 --- a/sc/source/core/data/stlsheet.cxx +++ b/sc/source/core/data/stlsheet.cxx @@ -85,20 +85,20 @@ ScStyleSheet::ScStyleSheet( const ScStyleSheet& rStyle ) //------------------------------------------------------------------------ -__EXPORT ScStyleSheet::~ScStyleSheet() +ScStyleSheet::~ScStyleSheet() { } //------------------------------------------------------------------------ -BOOL __EXPORT ScStyleSheet::HasFollowSupport() const +BOOL ScStyleSheet::HasFollowSupport() const { return FALSE; } //------------------------------------------------------------------------ -BOOL __EXPORT ScStyleSheet::HasParentSupport () const +BOOL ScStyleSheet::HasParentSupport () const { BOOL bHasParentSupport = FALSE; @@ -117,7 +117,7 @@ BOOL __EXPORT ScStyleSheet::HasParentSupport () const //------------------------------------------------------------------------ -BOOL __EXPORT ScStyleSheet::SetParent( const String& rParentName ) +BOOL ScStyleSheet::SetParent( const String& rParentName ) { BOOL bResult = FALSE; String aEffName = rParentName; @@ -145,7 +145,7 @@ BOOL __EXPORT ScStyleSheet::SetParent( const String& rParentName ) //------------------------------------------------------------------------ -SfxItemSet& __EXPORT ScStyleSheet::GetItemSet() +SfxItemSet& ScStyleSheet::GetItemSet() { if ( !pSet ) { @@ -205,7 +205,6 @@ SfxItemSet& __EXPORT ScStyleSheet::GetItemSet() aBoxInfoItem.SetDist( TRUE ); aBoxInfoItem.SetValid( VALID_DISTANCE, TRUE ); - // aPageItem.SetLandscape( ORIENTATION_LANDSCAPE == pPrinter->GetOrientation() ); aPageItem.SetLandscape( FALSE ); rHFSet.Put( aBoxInfoItem ); @@ -265,7 +264,7 @@ SfxItemSet& __EXPORT ScStyleSheet::GetItemSet() //------------------------------------------------------------------------ -BOOL __EXPORT ScStyleSheet::IsUsed() const +BOOL ScStyleSheet::IsUsed() const { if ( GetFamily() == SFX_STYLE_FAMILY_PARA ) { @@ -284,7 +283,7 @@ BOOL __EXPORT ScStyleSheet::IsUsed() const //------------------------------------------------------------------------ -void __EXPORT ScStyleSheet::Notify( SfxBroadcaster&, const SfxHint& rHint ) +void ScStyleSheet::Notify( SfxBroadcaster&, const SfxHint& rHint ) { if ( rHint.ISA(SfxSimpleHint) ) if ( ((SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING ) diff --git a/sc/source/core/data/table1.cxx b/sc/source/core/data/table1.cxx index d4dd2026a019..735de70e0553 100644 --- a/sc/source/core/data/table1.cxx +++ b/sc/source/core/data/table1.cxx @@ -261,7 +261,7 @@ ScTable::ScTable( ScDocument* pDoc, SCTAB nNewTab, const String& rNewName, pSearchParam( NULL ), pSearchText ( NULL ), pSortCollator( NULL ), - bPrintEntireSheet( FALSE ), + bPrintEntireSheet(true), pRepeatColRange( NULL ), pRepeatRowRange( NULL ), nLockCount( 0 ), @@ -545,26 +545,6 @@ BOOL ScTable::GetTableArea( SCCOL& rEndCol, SCROW& rEndRow ) const return bRet; } -/* vorher: - - BOOL bFound = FALSE; - SCCOL nMaxX = 0; - SCROW nMaxY = 0; - for (SCCOL i=0; i<=MAXCOL; i++) - if (!aCol[i].IsEmpty()) - { - bFound = TRUE; - nMaxX = i; - SCCOL nColY = aCol[i].GetLastEntryPos(); - if (nColY > nMaxY) - nMaxY = nColY; - } - - rEndCol = nMaxX; - rEndRow = nMaxY; - return bFound; -*/ - const SCCOL SC_COLUMNS_STOP = 30; BOOL ScTable::GetPrintArea( SCCOL& rEndCol, SCROW& rEndRow, BOOL bNotes ) const @@ -1664,7 +1644,7 @@ void ScTable::SetRepeatRowRange( const ScRange* pNew ) void ScTable::ClearPrintRanges() { aPrintRanges.clear(); - bPrintEntireSheet = FALSE; + bPrintEntireSheet = false; if (IsStreamValid()) SetStreamValid(FALSE); @@ -1672,7 +1652,7 @@ void ScTable::ClearPrintRanges() void ScTable::AddPrintRange( const ScRange& rNew ) { - bPrintEntireSheet = FALSE; + bPrintEntireSheet = false; if( aPrintRanges.size() < 0xFFFF ) aPrintRanges.push_back( rNew ); diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index bb4fbb0f4d85..c7572380024a 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -398,8 +398,6 @@ void ScTable::DeleteArea(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, USH aPattern.GetItemSet().Put( ScProtectionAttr( FALSE ) ); ApplyPatternArea( nCol1, nRow1, nCol2, nRow2, aPattern ); } - -// DecRecalcLevel(); } } @@ -470,8 +468,9 @@ void ScTable::CopyToClip(const ScRangeList& rRanges, ScTable* pTable, bool bKeepScenarioFlags, bool bCloneNoteCaptions) { ScRangeList aRanges(rRanges); - for (ScRangePtr p = aRanges.First(); p; p = aRanges.Next()) + for ( size_t i = 0, nListSize = aRanges.size(); i < nListSize; ++i ) { + ScRange* p = aRanges[ i ]; CopyToClip(p->aStart.Col(), p->aStart.Row(), p->aEnd.Col(), p->aEnd.Row(), pTable, bKeepScenarioFlags, bCloneNoteCaptions); } @@ -915,23 +914,17 @@ BOOL ScTable::HasScenarioRange( const ScRange& rRange ) const { DBG_ASSERT( bScenario, "bScenario == FALSE" ); -// ScMarkData aMark; -// MarkScenarioIn( aMark, 0 ); //! Bits als Parameter von HasScenarioRange? -// return aMark.IsAllMarked( rRange ); - ScRange aTabRange = rRange; aTabRange.aStart.SetTab( nTab ); aTabRange.aEnd.SetTab( nTab ); const ScRangeList* pList = GetScenarioRanges(); -// return ( pList && pList->Find( aTabRange ) ); if (pList) { - ULONG nCount = pList->Count(); - for ( ULONG j = 0; j < nCount; j++ ) + for ( size_t j = 0, n = pList->size(); j < n; j++ ) { - ScRange* pR = pList->GetObject( j ); + const ScRange* pR = (*pList)[j]; if ( pR->Intersects( aTabRange ) ) return TRUE; } @@ -1050,11 +1043,10 @@ double ScTable::GetValue( SCCOL nCol, SCROW nRow ) } -void ScTable::GetFormula( SCCOL nCol, SCROW nRow, String& rFormula, - BOOL bAsciiExport ) +void ScTable::GetFormula( SCCOL nCol, SCROW nRow, String& rFormula ) { if (ValidColRow(nCol,nRow)) - aCol[nCol].GetFormula( nRow, rFormula, bAsciiExport ); + aCol[nCol].GetFormula( nRow, rFormula ); else rFormula.Erase(); } @@ -1352,25 +1344,25 @@ bool ScTable::HasAttrib( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, USH } -BOOL ScTable::HasAttribSelection( const ScMarkData& rMark, USHORT nMask ) const +bool ScTable::HasAttribSelection( const ScMarkData& rMark, USHORT nMask ) const { - BOOL bFound=FALSE; + bool bFound = false; for (SCCOL i=0; i<=MAXCOL && !bFound; i++) bFound |= aCol[i].HasAttribSelection( rMark, nMask ); return bFound; } -BOOL ScTable::ExtendMerge( SCCOL nStartCol, SCROW nStartRow, +bool ScTable::ExtendMerge( SCCOL nStartCol, SCROW nStartRow, SCCOL& rEndCol, SCROW& rEndRow, BOOL bRefresh, BOOL bAttrs ) { if (!(ValidCol(nStartCol) && ValidCol(rEndCol))) { DBG_ERRORFILE("ScTable::ExtendMerge: invalid column number"); - return FALSE; + return false; } - BOOL bFound=FALSE; + bool bFound = false; SCCOL nOldEndX = rEndCol; SCROW nOldEndY = rEndRow; for (SCCOL i=nStartCol; i<=nOldEndX; i++) @@ -1612,9 +1604,9 @@ BOOL ScTable::HasBlockMatrixFragment( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCR } -BOOL ScTable::HasSelectionMatrixFragment( const ScMarkData& rMark ) const +bool ScTable::HasSelectionMatrixFragment( const ScMarkData& rMark ) const { - BOOL bFound=FALSE; + bool bFound = false; for (SCCOL i=0; i<=MAXCOL && !bFound; i++) bFound |= aCol[i].HasSelectionMatrixFragment(rMark); return bFound; @@ -1711,15 +1703,14 @@ BOOL ScTable::IsSelectionEditable( const ScMarkData& rMark, // in the active scenario range. ScRangeList aRanges; rMark.FillRangeListWithMarks( &aRanges, FALSE ); - ULONG nRangeCount = aRanges.Count(); SCTAB nScenTab = nTab+1; while(pDocument->IsScenario(nScenTab) && bIsEditable) { if(pDocument->IsActiveScenario(nScenTab)) { - for (ULONG i=0; i<nRangeCount && bIsEditable; i++) + for (size_t i=0, nRange = aRanges.size(); (i < nRange) && bIsEditable; i++ ) { - ScRange aRange = *aRanges.GetObject(i); + ScRange aRange = *aRanges[ i ]; if(pDocument->HasScenarioRange(nScenTab, aRange)) { USHORT nFlags; @@ -1746,10 +1737,9 @@ BOOL ScTable::IsSelectionEditable( const ScMarkData& rMark, { ScRangeList aRanges; rMark.FillRangeListWithMarks( &aRanges, FALSE ); - ULONG nRangeCount = aRanges.Count(); - for (ULONG i=0; i<nRangeCount && bIsEditable; i++) + for (size_t i = 0, nRange = aRanges.size(); (i < nRange) && bIsEditable; i++) { - ScRange aRange = *aRanges.GetObject(i); + ScRange aRange = *aRanges[ i ]; if(pDocument->HasScenarioRange(nTab, aRange)) { USHORT nFlags; @@ -1927,7 +1917,7 @@ const ScStyleSheet* ScTable::GetSelectionStyle( const ScMarkData& rMark, BOOL& r rFound = FALSE; BOOL bEqual = TRUE; - BOOL bColFound; + bool bColFound; const ScStyleSheet* pStyle = NULL; const ScStyleSheet* pNewStyle; @@ -1955,7 +1945,7 @@ const ScStyleSheet* ScTable::GetAreaStyle( BOOL& rFound, SCCOL nCol1, SCROW nRow rFound = FALSE; BOOL bEqual = TRUE; - BOOL bColFound; + bool bColFound; const ScStyleSheet* pStyle = NULL; const ScStyleSheet* pNewStyle; @@ -2020,10 +2010,10 @@ void ScTable::StyleSheetChanged( const SfxStyleSheetBase* pStyleSheet, BOOL bRem } -BOOL ScTable::ApplyFlags( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, +bool ScTable::ApplyFlags( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, INT16 nFlags ) { - BOOL bChanged = FALSE; + bool bChanged = false; if (ValidColRow(nStartCol, nStartRow) && ValidColRow(nEndCol, nEndRow)) for (SCCOL i = nStartCol; i <= nEndCol; i++) bChanged |= aCol[i].ApplyFlags(nStartRow, nEndRow, nFlags); @@ -2031,10 +2021,10 @@ BOOL ScTable::ApplyFlags( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW } -BOOL ScTable::RemoveFlags( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, +bool ScTable::RemoveFlags( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, INT16 nFlags ) { - BOOL bChanged = FALSE; + bool bChanged = false; if (ValidColRow(nStartCol, nStartRow) && ValidColRow(nEndCol, nEndRow)) for (SCCOL i = nStartCol; i <= nEndCol; i++) bChanged |= aCol[i].RemoveFlags(nStartRow, nEndRow, nFlags); @@ -2086,7 +2076,6 @@ void ScTable::SetColWidth( SCCOL nCol, USHORT nNewWidth ) { if (!nNewWidth) { -// DBG_ERROR("Spaltenbreite 0 in SetColWidth"); nNewWidth = STD_COL_WIDTH; } @@ -2094,9 +2083,6 @@ void ScTable::SetColWidth( SCCOL nCol, USHORT nNewWidth ) { IncRecalcLevel(); InitializeNoteCaptions(); - ScDrawLayer* pDrawLayer = pDocument->GetDrawLayer(); - if (pDrawLayer) - pDrawLayer->WidthChanged( nTab, nCol, ((long) nNewWidth) - (long) pColWidth[nCol] ); pColWidth[nCol] = nNewWidth; DecRecalcLevel(); @@ -2136,9 +2122,6 @@ void ScTable::SetRowHeight( SCROW nRow, USHORT nNewHeight ) { IncRecalcLevel(); InitializeNoteCaptions(); - ScDrawLayer* pDrawLayer = pDocument->GetDrawLayer(); - if (pDrawLayer) - pDrawLayer->HeightChanged( nTab, nRow, ((long) nNewHeight) - (long) nOldHeight ); mpRowHeights->setValue(nRow, nRow, nNewHeight); DecRecalcLevel(); @@ -2219,22 +2202,7 @@ BOOL ScTable::SetRowHeightRange( SCROW nStartRow, SCROW nEndRow, USHORT nNewHeig if (!bChanged) bChanged = lcl_pixelSizeChanged(*mpRowHeights, nStartRow, nEndRow, nNewHeight, nPPTY); - /* #i94028# #i94991# If drawing objects are involved, each row - has to be changed for its own, because each call to - ScDrawLayer::HeightChanged expects correct row heights - above passed row in the document. Cannot use array iterator - because array changes in every cycle. */ - if( pDrawLayer ) - { - for( SCROW nRow = nStartRow; nRow <= nEndRow ; ++nRow ) - { - pDrawLayer->HeightChanged( nTab, nRow, - static_cast<long>(nNewHeight) - static_cast<long>(mpRowHeights->getValue(nRow))); - mpRowHeights->setValue(nRow, nRow, nNewHeight); - } - } - else - mpRowHeights->setValue(nStartRow, nEndRow, nNewHeight); + mpRowHeights->setValue(nStartRow, nEndRow, nNewHeight); } else { @@ -2247,17 +2215,6 @@ BOOL ScTable::SetRowHeightRange( SCROW nStartRow, SCROW nEndRow, USHORT nNewHeig } else { - if (pDrawLayer) - { - // #i115025# When comparing to nNewHeight for the whole range, the height - // including hidden rows has to be used (same behavior as 3.2). - unsigned long nOldHeights = mpRowHeights->getSumValue(nStartRow, nEndRow); - // FIXME: should we test for overflows? - long nHeightDif = (long) (unsigned long) nNewHeight * - (nEndRow - nStartRow + 1) - nOldHeights; - pDrawLayer->HeightChanged( nTab, nEndRow, nHeightDif ); - } - if (!bChanged) bChanged = lcl_pixelSizeChanged(*mpRowHeights, nStartRow, nEndRow, nNewHeight, nPPTY); @@ -2511,17 +2468,9 @@ void ScTable::ShowCol(SCCOL nCol, bool bShow) { IncRecalcLevel(); InitializeNoteCaptions(); - ScDrawLayer* pDrawLayer = pDocument->GetDrawLayer(); - if (pDrawLayer) - { - if (bShow) - pDrawLayer->WidthChanged( nTab, nCol, (long) pColWidth[nCol] ); - else - pDrawLayer->WidthChanged( nTab, nCol, -(long) pColWidth[nCol] ); - } SetColHidden(nCol, nCol, !bShow); - DecRecalcLevel(); + DecRecalcLevel(); ScChartListenerCollection* pCharts = pDocument->GetChartListenerCollection(); if ( pCharts ) @@ -2542,17 +2491,6 @@ void ScTable::ShowRow(SCROW nRow, bool bShow) bool bWasVis = !RowHidden(nRow); if (bWasVis != bShow) { - ScDrawLayer* pDrawLayer = pDocument->GetDrawLayer(); - if (pDrawLayer) - { - if (bShow) - pDrawLayer->HeightChanged( - nTab, nRow, static_cast<long>(mpRowHeights->getValue(nRow))); - else - pDrawLayer->HeightChanged( - nTab, nRow, -static_cast<long>(mpRowHeights->getValue(nRow))); - } - SetRowHidden(nRow, nRow, !bShow); if (bShow) SetRowFiltered(nRow, nRow, false); @@ -2577,19 +2515,6 @@ void ScTable::DBShowRow(SCROW nRow, bool bShow) bool bWasVis = !RowHidden(nRow); IncRecalcLevel(); InitializeNoteCaptions(); - if (bWasVis != bShow) - { - ScDrawLayer* pDrawLayer = pDocument->GetDrawLayer(); - if (pDrawLayer) - { - if (bShow) - pDrawLayer->HeightChanged( - nTab, nRow, static_cast<long>(mpRowHeights->getValue(nRow))); - else - pDrawLayer->HeightChanged( - nTab, nRow, -static_cast<long>(mpRowHeights->getValue(nRow))); - } - } // Filter-Flag immer setzen, auch wenn Hidden unveraendert SetRowHidden(nRow, nRow, !bShow); @@ -2626,18 +2551,6 @@ void ScTable::DBShowRows(SCROW nRow1, SCROW nRow2, bool bShow) nEndRow = nRow2; BOOL bChanged = ( bWasVis != bShow ); - if ( bChanged ) - { - ScDrawLayer* pDrawLayer = pDocument->GetDrawLayer(); - if (pDrawLayer) - { - long nHeight = static_cast<long>(mpRowHeights->getSumValue(nStartRow, nEndRow)); - if (bShow) - pDrawLayer->HeightChanged( nTab, nStartRow, nHeight ); - else - pDrawLayer->HeightChanged( nTab, nStartRow, -nHeight ); - } - } SetRowHidden(nStartRow, nEndRow, !bShow); SetRowFiltered(nStartRow, nEndRow, !bShow); @@ -2665,6 +2578,11 @@ void ScTable::ShowRows(SCROW nRow1, SCROW nRow2, bool bShow) SCROW nStartRow = nRow1; IncRecalcLevel(); InitializeNoteCaptions(); + + // #i116164# if there are no drawing objects within the row range, a single HeightChanged call is enough + ScDrawLayer* pDrawLayer = pDocument->GetDrawLayer(); + bool bHasObjects = pDrawLayer && pDrawLayer->HasObjectsInRows( nTab, nRow1, nRow2 ); + while (nStartRow <= nRow2) { SCROW nEndRow = -1; @@ -2673,18 +2591,6 @@ void ScTable::ShowRows(SCROW nRow1, SCROW nRow2, bool bShow) nEndRow = nRow2; BOOL bChanged = ( bWasVis != bShow ); - if ( bChanged ) - { - ScDrawLayer* pDrawLayer = pDocument->GetDrawLayer(); - if (pDrawLayer) - { - long nHeight = static_cast<long>(mpRowHeights->getSumValue(nStartRow, nEndRow)); - if (bShow) - pDrawLayer->HeightChanged( nTab, nStartRow, nHeight ); - else - pDrawLayer->HeightChanged( nTab, nStartRow, -nHeight ); - } - } SetRowHidden(nStartRow, nEndRow, !bShow); if (bShow) @@ -2701,6 +2607,15 @@ void ScTable::ShowRows(SCROW nRow1, SCROW nRow2, bool bShow) nStartRow = nEndRow + 1; } + + if ( !bHasObjects ) + { + // #i116164# set the flags for the whole range at once + SetRowHidden(nRow1, nRow2, !bShow); + if (bShow) + SetRowFiltered(nRow1, nRow2, false); + } + DecRecalcLevel(); } @@ -2920,16 +2835,13 @@ void ScTable::DoAutoOutline( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SC ScOutlineArray* pArray; ScBaseCell* pCell; ScRange aRef; -/* ScPatternAttr aBoldPattern( pDocument->GetPool() ); //! spezielle Format-Vorlage - aBoldPattern.GetItemSet().Put( SvxWeightItem( WEIGHT_BOLD ) ); -*/ StartOutlineTable(); // Zeilen SCROW nCount = nEndRow-nStartRow+1; - BOOL* pUsed = new BOOL[nCount]; + bool* pUsed = new bool[nCount]; for (i=0; i<nCount; i++) pUsed[i] = FALSE; for (nCol=nStartCol; nCol<=nEndCol; nCol++) @@ -2955,7 +2867,6 @@ void ScTable::DoAutoOutline( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SC { if (pArray->Insert( aRef.aStart.Row(), aRef.aEnd.Row(), bSizeChanged )) { -// ApplyPatternArea( nStartCol, nRow, nEndCol, nRow, aBoldPattern ); bFound = TRUE; } else @@ -2986,7 +2897,6 @@ void ScTable::DoAutoOutline( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SC { if (pArray->Insert( aRef.aStart.Col(), aRef.aEnd.Col(), bSizeChanged )) { -// ApplyPatternArea( nCol, nStartRow, nCol, nEndRow, aBoldPattern ); bFound = TRUE; } else diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx index 48035ec5b655..34f7faa3839f 100644 --- a/sc/source/core/data/table3.cxx +++ b/sc/source/core/data/table3.cxx @@ -60,6 +60,7 @@ #include "cellform.hxx" #include "postit.hxx" #include "queryparam.hxx" +#include "segmenttree.hxx" #include <vector> @@ -93,7 +94,7 @@ bool SplitString( const rtl::OUString &sWhole, i18n::LocaleDataItem aLocaleItem = ScGlobal::pLocaleData->getLocaleItem(); // Get prefix element - rtl::OUString sEmpty, sUser = rtl::OUString::createFromAscii( "-" ); + rtl::OUString sEmpty, sUser = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "-" )); ParseResult aPRPre = ScGlobal::pCharClass->parsePredefinedToken( KParseType::IDENTNAME, sWhole, 0, KParseTokens::ANY_LETTER, sUser, KParseTokens::ANY_LETTER, sUser ); @@ -1006,10 +1007,6 @@ BOOL ScTable::DoSubTotals( ScSubTotalParam& rParam ) bBlockVis = !RowFiltered(nRow); } } - else - { -// DBG_ERROR( "nSubTotals==0 bei DoSubTotals" ); - } } // now insert the formulas @@ -1617,6 +1614,8 @@ static void lcl_PrepareQuery( ScDocument* pDoc, ScTable* pTab, ScQueryParam& rPa SCSIZE ScTable::Query(ScQueryParam& rParamOrg, BOOL bKeepSub) { + mpHiddenRows->enableTreeSearch(false); + ScQueryParam aParam( rParamOrg ); ScStrCollection aScStrCollection; StrData* pStrData = NULL; @@ -1634,7 +1633,6 @@ SCSIZE ScTable::Query(ScQueryParam& rParamOrg, BOOL bKeepSub) BOOL* pSpecial = new BOOL[nEntryCount]; lcl_PrepareQuery( pDocument, this, aParam, pSpecial ); - SCROW nEndRow = aParam.bUseDynamicRange ? aParam.nDynamicEndRow : aParam.nRow2; if (!aParam.bInplace) { nOutRow = aParam.nDestRow + nHeader; @@ -1644,7 +1642,12 @@ SCSIZE ScTable::Query(ScQueryParam& rParamOrg, BOOL bKeepSub) } InitializeNoteCaptions(); - for (SCROW j=aParam.nRow1 + nHeader; j<=nEndRow; j++) + + if (aParam.bInplace) + IncRecalcLevel(); // #i116164# once for all entries + + SCROW nRealRow2 = aParam.bUseDynamicRange ? aParam.nDynamicEndRow : aParam.nRow2; + for (SCROW j = aParam.nRow1 + nHeader; j <= nRealRow2; ++j) { BOOL bResult; // Filterergebnis BOOL bValid = ValidQuery(j, aParam, pSpecial); diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx index 42b655532757..b5cb17620747 100644 --- a/sc/source/core/data/table4.cxx +++ b/sc/source/core/data/table4.cxx @@ -232,7 +232,6 @@ void ScTable::FillAnalyse( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, { if (nCount > 1) { - long nCmpInc = 0; double nVal; Date aNullDate = *pDocument->GetFormatTable()->GetNullDate(); Date aDate1 = aNullDate; @@ -243,6 +242,7 @@ void ScTable::FillAnalyse( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, aDate2 += (long)nVal; if ( aDate1 != aDate2 ) { + long nCmpInc = 0; FillDateCmd eType; long nDDiff = aDate2.GetDay() - (long) aDate1.GetDay(); long nMDiff = aDate2.GetMonth() - (long) aDate1.GetMonth(); @@ -419,82 +419,45 @@ void ScTable::FillAnalyse( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, void ScTable::FillFormula(ULONG& /* nFormulaCounter */, BOOL /* bFirst */, ScFormulaCell* pSrcCell, SCCOL nDestCol, SCROW nDestRow, BOOL bLast ) { -/* USHORT nTokArrLen = pSrcCell->GetTokenArrayLen(); - if ( nTokArrLen > 15 ) // mehr als =A1 oder =67 - { - ScRangeName* pRangeName = pDocument->GetRangeName(); - String aName("___SC_"); // Wird dieser String veraendert, - // auch in document2 EraseNonUsed... - // mitaendern!! - aName += pRangeName->GetSharedMaxIndex() + 1; - aName += '_'; - aName += nFormulaCounter; - nFormulaCounter++; - if (bFirst) - { - ScRangeData *pAktRange = new ScRangeData( - pDocument, aName, pSrcCell->GetTokenArray(), nTokArrLen, - pSrcCell->GetCol(), pSrcCell->GetRow(), nTab ,RT_SHARED); - if (!pRangeName->Insert( pAktRange )) - delete pAktRange; - else - bSharedNameInserted = TRUE; - } - USHORT nIndex; - pRangeName->SearchName(aName, nIndex); - if (!pRangeName) - { - DBG_ERROR("ScTable::FillFormula: Falscher Name"); - return; - } - nIndex = ((ScRangeData*) ((*pRangeName)[nIndex]))->GetIndex(); - ScTokenArray aArr; - aArr.AddName(nIndex); - aArr.AddOpCode(ocStop); - ScFormulaCell* pDestCell = new ScFormulaCell - (pDocument, ScAddress( nDestCol, nDestRow, nTab ), aArr ); - aCol[nDestCol].Insert(nDestRow, pDestCell); - } - else -*/ { - pDocument->SetNoListening( TRUE ); // noch falsche Referenzen - ScAddress aAddr( nDestCol, nDestRow, nTab ); - ScFormulaCell* pDestCell = new ScFormulaCell( *pSrcCell, *pDocument, aAddr ); - aCol[nDestCol].Insert(nDestRow, pDestCell); - if ( bLast && pDestCell->GetMatrixFlag() ) + pDocument->SetNoListening( TRUE ); // noch falsche Referenzen + ScAddress aAddr( nDestCol, nDestRow, nTab ); + ScFormulaCell* pDestCell = new ScFormulaCell( *pSrcCell, *pDocument, aAddr ); + aCol[nDestCol].Insert(nDestRow, pDestCell); + + if ( bLast && pDestCell->GetMatrixFlag() ) + { + ScAddress aOrg; + if ( pDestCell->GetMatrixOrigin( aOrg ) ) { - ScAddress aOrg; - if ( pDestCell->GetMatrixOrigin( aOrg ) ) + if ( nDestCol >= aOrg.Col() && nDestRow >= aOrg.Row() ) { - if ( nDestCol >= aOrg.Col() && nDestRow >= aOrg.Row() ) + ScBaseCell* pOrgCell = pDocument->GetCell( aOrg ); + if ( pOrgCell && pOrgCell->GetCellType() == CELLTYPE_FORMULA + && ((ScFormulaCell*)pOrgCell)->GetMatrixFlag() == MM_FORMULA ) { - ScBaseCell* pOrgCell = pDocument->GetCell( aOrg ); - if ( pOrgCell && pOrgCell->GetCellType() == CELLTYPE_FORMULA - && ((ScFormulaCell*)pOrgCell)->GetMatrixFlag() == MM_FORMULA ) - { - ((ScFormulaCell*)pOrgCell)->SetMatColsRows( - nDestCol - aOrg.Col() + 1, - nDestRow - aOrg.Row() + 1 ); - } - else - { - DBG_ERRORFILE( "FillFormula: MatrixOrigin keine Formelzelle mit MM_FORMULA" ); - } + ((ScFormulaCell*)pOrgCell)->SetMatColsRows( + nDestCol - aOrg.Col() + 1, + nDestRow - aOrg.Row() + 1 ); } else { - DBG_ERRORFILE( "FillFormula: MatrixOrigin rechts unten" ); + DBG_ERRORFILE( "FillFormula: MatrixOrigin keine Formelzelle mit MM_FORMULA" ); } } else { - DBG_ERRORFILE( "FillFormula: kein MatrixOrigin" ); + DBG_ERRORFILE( "FillFormula: MatrixOrigin rechts unten" ); } } - pDocument->SetNoListening( FALSE ); - pDestCell->StartListeningTo( pDocument ); + else + { + DBG_ERRORFILE( "FillFormula: kein MatrixOrigin" ); + } } + pDocument->SetNoListening( FALSE ); + pDestCell->StartListeningTo( pDocument ); + } void ScTable::FillAuto( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, @@ -1591,8 +1554,6 @@ void ScTable::AutoFormatArea(SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SC ScAutoFormatData* pData = (*pAutoFormat)[nFormatNo]; if (pData) { -// ScPatternAttr aPattern(pDocument->GetPool()); -// pData->FillToItemSet(nIndex, aPattern.GetItemSet(), *pDocument); ApplyPatternArea(nStartCol, nStartRow, nEndCol, nEndRow, rAttr); } } diff --git a/sc/source/core/data/table5.cxx b/sc/source/core/data/table5.cxx index 04c43a2eaf27..c4a472b99dce 100644 --- a/sc/source/core/data/table5.cxx +++ b/sc/source/core/data/table5.cxx @@ -602,20 +602,26 @@ bool ScTable::ColHidden(SCCOL nCol, SCCOL* pFirstCol, SCCOL* pLastCol) const return aData.mbValue; } -void ScTable::SetRowHidden(SCROW nStartRow, SCROW nEndRow, bool bHidden) +bool ScTable::SetRowHidden(SCROW nStartRow, SCROW nEndRow, bool bHidden) { + bool bChanged = false; if (bHidden) - mpHiddenRows->setTrue(nStartRow, nEndRow); + bChanged = mpHiddenRows->setTrue(nStartRow, nEndRow); else - mpHiddenRows->setFalse(nStartRow, nEndRow); + bChanged = mpHiddenRows->setFalse(nStartRow, nEndRow); + + return bChanged; } -void ScTable::SetColHidden(SCCOL nStartCol, SCCOL nEndCol, bool bHidden) +bool ScTable::SetColHidden(SCCOL nStartCol, SCCOL nEndCol, bool bHidden) { + bool bChanged = false; if (bHidden) - mpHiddenCols->setTrue(nStartCol, nEndCol); + bChanged = mpHiddenCols->setTrue(nStartCol, nEndCol); else - mpHiddenCols->setFalse(nStartCol, nEndCol); + bChanged = mpHiddenCols->setFalse(nStartCol, nEndCol); + + return bChanged; } void ScTable::CopyColHidden(ScTable& rTable, SCCOL nStartCol, SCCOL nEndCol) diff --git a/sc/source/core/data/table6.cxx b/sc/source/core/data/table6.cxx index b71d55aeebb6..a6898a276352 100644 --- a/sc/source/core/data/table6.cxx +++ b/sc/source/core/data/table6.cxx @@ -768,8 +768,9 @@ bool ScTable::SearchAndReplaceEmptyCells( ScRangeList aMarkedRanges, aNewRanges; rMark.FillRangeListWithMarks(&aMarkedRanges, true); - for (ScRangePtr p = aMarkedRanges.First(); p; p = aMarkedRanges.Next()) + for ( size_t i = 0, n = aMarkedRanges.size(); i < n; ++i ) { + ScRange* p = aMarkedRanges[ i ]; if (p->aStart.Col() > nColEnd || p->aStart.Row() > nRowEnd) // This range is outside the data area. Skip it. continue; @@ -795,17 +796,19 @@ bool ScTable::SearchAndReplaceEmptyCells( { if (rSearchItem.GetBackward()) { - for (ScRangePtr p = aRanges.Last(); p; p = aRanges.Prev()) + for ( size_t i = aRanges.size(); i > 0; --i ) { - if (SearchRangeForEmptyCell(*p, rSearchItem, rCol, rRow, rUndoStr, pUndoDoc)) + ScRange* p = aRanges[ i - 1 ]; + if (SearchRangeForEmptyCell( *p, rSearchItem, rCol, rRow, rUndoStr, pUndoDoc)) return true; } } else { - for (ScRangePtr p = aRanges.First(); p; p = aRanges.Next()) + for ( size_t i = 0, nListSize = aRanges.size(); i < nListSize; ++i ) { - if (SearchRangeForEmptyCell(*p, rSearchItem, rCol, rRow, rUndoStr, pUndoDoc)) + ScRange* p = aRanges[ i ]; + if (SearchRangeForEmptyCell( *p, rSearchItem, rCol, rRow, rUndoStr, pUndoDoc )) return true; } } @@ -815,8 +818,11 @@ bool ScTable::SearchAndReplaceEmptyCells( bool bFound = false; ScMarkData aNewMark(rMark); aNewMark.ResetMark(); - for (ScRangePtr p = aRanges.First(); p; p = aRanges.Next()) + for ( size_t i = 0, nListSize = aRanges.size(); i < nListSize; ++i ) + { + ScRange* p = aRanges[ i ]; bFound |= SearchRangeForAllEmptyCells(*p, rSearchItem, aNewMark, rUndoStr, pUndoDoc); + } rMark = aNewMark; return bFound; } diff --git a/sc/source/core/data/tabprotection.cxx b/sc/source/core/data/tabprotection.cxx index c53c74b6fa2d..1448c643a18c 100644 --- a/sc/source/core/data/tabprotection.cxx +++ b/sc/source/core/data/tabprotection.cxx @@ -81,9 +81,9 @@ OUString ScPassHashHelper::getHashURI(ScPasswordHash eHash) switch (eHash) { case PASSHASH_SHA1: - return OUString::createFromAscii(URI_SHA1); + return OUString(RTL_CONSTASCII_USTRINGPARAM(URI_SHA1)); case PASSHASH_XL: - return OUString::createFromAscii(URI_XLS_LEGACY); + return OUString(RTL_CONSTASCII_USTRINGPARAM(URI_XLS_LEGACY)); case PASSHASH_UNSPECIFIED: default: ; @@ -522,5 +522,4 @@ void ScTableProtection::setOption(Option eOption, bool bEnabled) { mpImpl->setOption(eOption, bEnabled); } - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/data/validat.cxx b/sc/source/core/data/validat.cxx index 1891c3a92b23..68fdaeeccd69 100644 --- a/sc/source/core/data/validat.cxx +++ b/sc/source/core/data/validat.cxx @@ -645,7 +645,7 @@ bool ScValidationData::GetSelectionFromFormula( TypedScStrCollection* pStrings, const ScMatrix *pValues = aValidationSrc.GetMatrix(); if (!pValues) { - // The somewhat nasty case of either an error occured, or the + // The somewhat nasty case of either an error occurred, or the // dereferenced value of a single cell reference or an immediate result // is stored as a single value. @@ -660,7 +660,7 @@ bool ScValidationData::GetSelectionFromFormula( TypedScStrCollection* pStrings, * rStrResult += ScGlobal::GetLongErrorString(nErrCode); */ - xMatRef->PutError( nErrCode, 0); + xMatRef->PutError( nErrCode, 0, 0); bOk = false; } else if (aValidationSrc.HasValueData()) @@ -672,7 +672,7 @@ bool ScValidationData::GetSelectionFromFormula( TypedScStrCollection* pStrings, xMatRef->PutString( aStr, 0); } - pValues = xMatRef; + pValues = xMatRef.get(); } // which index matched. We will want it eventually to pre-select that item. @@ -730,15 +730,13 @@ bool ScValidationData::GetSelectionFromFormula( TypedScStrCollection* pStrings, { ScTokenArray aCondTokArr; TypedStrData* pEntry = NULL; - ScMatValType nMatValType; String aValStr; - const ScMatrixValue* pMatVal = pValues->Get( nCol, nRow, nMatValType); + ScMatrixValue nMatVal = pValues->Get( nCol, nRow); // strings and empties - if( NULL == pMatVal || ScMatrix::IsNonValueType( nMatValType ) ) + if( ScMatrix::IsNonValueType( nMatVal.nType ) ) { - if( NULL != pMatVal ) - aValStr = pMatVal->GetString(); + aValStr = nMatVal.GetString(); if( NULL != pStrings ) pEntry = new TypedStrData( aValStr, 0.0, SC_STRTYPE_STANDARD); @@ -748,7 +746,7 @@ bool ScValidationData::GetSelectionFromFormula( TypedScStrCollection* pStrings, } else { - USHORT nErr = pMatVal->GetError(); + USHORT nErr = nMatVal.GetError(); if( 0 != nErr ) { @@ -766,17 +764,17 @@ bool ScValidationData::GetSelectionFromFormula( TypedScStrCollection* pStrings, (SCROW)(nRow+aRange.aStart.Row()), aRange.aStart.Tab() , aValStr); } else - pFormatter->GetInputLineString( pMatVal->fVal, 0, aValStr ); + pFormatter->GetInputLineString( nMatVal.fVal, 0, aValStr ); } if( pCell && rMatch < 0 ) { // I am not sure errors will work here, but a user can no // manually enter an error yet so the point is somewhat moot. - aCondTokArr.AddDouble( pMatVal->fVal ); + aCondTokArr.AddDouble( nMatVal.fVal ); } if( NULL != pStrings ) - pEntry = new TypedStrData( aValStr, pMatVal->fVal, SC_STRTYPE_VALUE); + pEntry = new TypedStrData( aValStr, nMatVal.fVal, SC_STRTYPE_VALUE); } if( rMatch < 0 && NULL != pCell && IsEqualToTokenArray( pCell, rPos, aCondTokArr ) ) diff --git a/sc/source/core/inc/ddelink.hxx b/sc/source/core/inc/ddelink.hxx index 89127e4dfba0..b437f10c1d68 100644 --- a/sc/source/core/inc/ddelink.hxx +++ b/sc/source/core/inc/ddelink.hxx @@ -76,8 +76,8 @@ public: // fuer Interpreter: - const ScMatrix* GetResult() const { return pResult; } - void SetResult( ScMatrix* pRes ) { pResult = pRes; } + const ScMatrix* GetResult() const { return pResult.get(); } + void SetResult( ScMatrixRef pRes ) { pResult = pRes; } // XML and Excel import after NewData() ScMatrixRef GetModifiableResult() { return pResult; } diff --git a/sc/source/core/inc/interpre.hxx b/sc/source/core/inc/interpre.hxx index f356dbeeec71..d323027490df 100644 --- a/sc/source/core/inc/interpre.hxx +++ b/sc/source/core/inc/interpre.hxx @@ -340,7 +340,7 @@ void PushExternalSingleRef(sal_uInt16 nFileId, const String& rTabName, void PushExternalDoubleRef(sal_uInt16 nFileId, const String& rTabName, SCCOL nCol1, SCROW nRow1, SCTAB nTab1, SCCOL nCol2, SCROW nRow2, SCTAB nTab2); -void PushMatrix(ScMatrix* pMat); +void PushMatrix(const ScMatrixRef& pMat); void PushError( USHORT nError ); /// Raw stack type without default replacements. formula::StackVar GetRawStackType(); @@ -400,7 +400,7 @@ double Compare(); NULL means case sensitivity document option is to be used! */ ScMatrixRef CompareMat( ScCompareOptions* pOptions = NULL ); -ScMatrixRef QueryMat( ScMatrix* pMat, ScCompareOptions& rOptions ); +ScMatrixRef QueryMat( const ScMatrixRef& pMat, ScCompareOptions& rOptions ); void ScEqual(); void ScNotEqual(); void ScLess(); @@ -663,27 +663,19 @@ void ScLCM(); //-------------------------- Matrixfunktionen --------------------------------- void ScMatValue(); -void MEMat(ScMatrix* mM, SCSIZE n); -void MFastMult(ScMatrix* pA, ScMatrix* pB, ScMatrix* pR, SCSIZE n, SCSIZE m, SCSIZE l); +void MEMat(const ScMatrixRef& mM, SCSIZE n); void ScMatDet(); void ScMatInv(); void ScMatMult(); void ScMatTrans(); void ScEMat(); void ScMatRef(); -ScMatrixRef MatConcat(ScMatrix* pMat1, ScMatrix* pMat2); +ScMatrixRef MatConcat(const ScMatrixRef& pMat1, const ScMatrixRef& pMat2); void ScSumProduct(); void ScSumX2MY2(); void ScSumX2DY2(); void ScSumXMY2(); void ScGrowth(); -// multiple Regression: Varianzen der Koeffizienten -BOOL RGetVariances( ScMatrix* pV, ScMatrix* pX, SCSIZE nC, SCSIZE nR, - BOOL bSwapColRow, BOOL bZeroConstant ); -void Calculate(ScMatrixRef& pResMat,ScMatrixRef& pE,ScMatrixRef& pQ,ScMatrixRef& pV,ScMatrixRef& pMatX,BOOL bConstant,SCSIZE N,SCSIZE M,BYTE nCase); -ScMatrixRef Calculate2(const BOOL bConstant,const SCSIZE M ,const SCSIZE N,ScMatrixRef& pMatX,ScMatrixRef& pMatY,BYTE nCase); -bool Calculate3(const SCSIZE M ,ScMatrixRef& pQ); -bool Calculate4(BOOL _bExp,ScMatrixRef& pResMat,ScMatrixRef& pQ,BOOL bConstant,SCSIZE N,SCSIZE M); bool CalculateSkew(double& fSum,double& fCount,double& vSum,std::vector<double>& values); void CalculateSlopeIntercept(BOOL bSlope); void CalculateSmallLarge(BOOL bSmall); @@ -695,12 +687,11 @@ bool CalculateTest( BOOL _bTemplin void CalculateLookup(BOOL HLookup); bool FillEntry(ScQueryEntry& rEntry); void CalculateAddSub(BOOL _bSub); -void CalculateTrendGrowth(BOOL _bGrowth); -void CalulateRGPRKP(BOOL _bRKP); +void CalculateTrendGrowth(bool _bGrowth); +void CalulateRGPRKP(bool _bRKP); void CalculateSumX2MY2SumX2DY2(BOOL _bSumX2DY2); void CalculateMatrixValue(const ScMatrix* pMat,SCSIZE nC,SCSIZE nR); -bool CheckMatrix(BOOL _bLOG,BOOL _bTrendGrowth,BYTE& nCase,SCSIZE& nCX,SCSIZE& nCY,SCSIZE& nRX,SCSIZE& nRY,SCSIZE& M,SCSIZE& N,ScMatrixRef& pMatX,ScMatrixRef& pMatY); - +bool CheckMatrix(bool _bLOG,BYTE& nCase,SCSIZE& nCX,SCSIZE& nCY,SCSIZE& nRX,SCSIZE& nRY,SCSIZE& M,SCSIZE& N,ScMatrixRef& pMatX,ScMatrixRef& pMatY); void ScRGP(); void ScRKP(); void ScForecast(); @@ -920,7 +911,6 @@ inline void ScInterpreter::TreatDoubleError( double& rVal ) } -// static inline double ScInterpreter::div( const double& fNumerator, const double& fDenominator ) { return (fDenominator != 0.0) ? (fNumerator / fDenominator) : diff --git a/sc/source/core/inc/jumpmatrix.hxx b/sc/source/core/inc/jumpmatrix.hxx index d5e3703227fe..3392c941563b 100644 --- a/sc/source/core/inc/jumpmatrix.hxx +++ b/sc/source/core/inc/jumpmatrix.hxx @@ -162,7 +162,7 @@ public: void SetJumpParameters( ScTokenVec* p ) { pParams = p; } const ScTokenVec* GetJumpParameters() const { return pParams; } - ScMatrix* GetResultMatrix() const { return pMat; } + ScMatrix* GetResultMatrix() const { return pMat.get(); } void GetPos( SCSIZE& rCol, SCSIZE& rRow ) const { rCol = nCurCol; @@ -195,7 +195,7 @@ public: { if ( nNewCols > nResMatCols || nNewRows > nResMatRows ) { - pMat = pMat->CloneAndExtend( nNewCols, nNewRows ); + pMat = pMat->CloneAndExtend( nNewCols, nNewRows, pMat->GetDensityType() ); if ( nResMatCols < nNewCols ) { pMat->FillDouble( CreateDoubleError( diff --git a/sc/source/core/src/compiler.src b/sc/source/core/src/compiler.src index a45c2b6aa458..a3740562b850 100644 --- a/sc/source/core/src/compiler.src +++ b/sc/source/core/src/compiler.src @@ -24,11 +24,10 @@ * for a copy of the LGPLv3 License. * ************************************************************************/ + #include "sc.hrc" // Definition RID_XXX #include <formula/compiler.hrc> // Definition SC_OPCODE_XXX (interne OpCodes) - - Resource RID_FUNCTION_CATEGORIES { String 1 @@ -76,4 +75,3 @@ Resource RID_FUNCTION_CATEGORIES Text[ en-US ] = "Add-in" ; }; }; - diff --git a/sc/source/core/tool/addincfg.cxx b/sc/source/core/tool/addincfg.cxx index 92017aad9f82..b7b3adc22cf4 100644 --- a/sc/source/core/tool/addincfg.cxx +++ b/sc/source/core/tool/addincfg.cxx @@ -48,7 +48,7 @@ using namespace com::sun::star; #define CFGPATH_ADDINS "Office.CalcAddIns/AddInInfo" ScAddInCfg::ScAddInCfg() : - ConfigItem( rtl::OUString::createFromAscii( CFGPATH_ADDINS ) ) + ConfigItem( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_ADDINS )) ) { uno::Sequence<rtl::OUString> aNames(1); // one entry: empty string EnableNotification( aNames ); diff --git a/sc/source/core/tool/addincol.cxx b/sc/source/core/tool/addincol.cxx index f7e39adfd72a..9a6d416552dc 100644 --- a/sc/source/core/tool/addincol.cxx +++ b/sc/source/core/tool/addincol.cxx @@ -294,7 +294,7 @@ uno::Reference<uno::XComponentContext> getContext(uno::Reference<lang::XMultiSer try { uno::Reference<beans::XPropertySet> xPropset(xMSF, uno::UNO_QUERY); xPropset->getPropertyValue( - ::rtl::OUString::createFromAscii("DefaultContext")) >>= xCtx; + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext"))) >>= xCtx; } catch ( uno::Exception & ) { } @@ -311,14 +311,14 @@ void ScUnoAddInCollection::Initialize() { uno::Reference<container::XEnumeration> xEnum = xEnAc->createContentEnumeration( - rtl::OUString::createFromAscii(SCADDINSUPPLIER_SERVICE) ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SCADDINSUPPLIER_SERVICE)) ); if ( xEnum.is() ) { // loop through all AddIns while ( xEnum->hasMoreElements() ) { uno::Any aAddInAny = xEnum->nextElement(); -//? if ( aAddInAny.getReflection()->getTypeClass() == uno::TypeClass_INTERFACE ) + { uno::Reference<uno::XInterface> xIntFac; aAddInAny >>= xIntFac; @@ -411,7 +411,7 @@ void ScUnoAddInCollection::ReadConfiguration() ScAddInCfg& rAddInConfig = SC_MOD()->GetAddInCfg(); // additional, temporary config item for the compatibility names - ScLinkConfigItem aAllLocalesConfig( rtl::OUString::createFromAscii( CFGPATH_ADDINS ), CONFIG_MODE_ALL_LOCALES ); + ScLinkConfigItem aAllLocalesConfig( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_ADDINS )), CONFIG_MODE_ALL_LOCALES ); // CommitLink is not used (only reading values) const rtl::OUString sSlash('/'); @@ -428,7 +428,7 @@ void ScUnoAddInCollection::ReadConfiguration() rtl::OUString aFunctionsPath = aServiceName; aFunctionsPath += sSlash; - aFunctionsPath += rtl::OUString::createFromAscii( CFGSTR_ADDINFUNCTIONS ); + aFunctionsPath += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( CFGSTR_ADDINFUNCTIONS) ); uno::Sequence<rtl::OUString> aFunctionNames = rAddInConfig.GetNodeNames( aFunctionsPath ); sal_Int32 nNewCount = aFunctionNames.getLength(); @@ -486,11 +486,11 @@ void ScUnoAddInCollection::ReadConfiguration() uno::Sequence<rtl::OUString> aFuncPropNames(CFG_FUNCPROP_COUNT); rtl::OUString* pNameArray = aFuncPropNames.getArray(); pNameArray[CFG_FUNCPROP_DISPLAYNAME] = aFuncPropPath; - pNameArray[CFG_FUNCPROP_DISPLAYNAME] += rtl::OUString::createFromAscii( CFGSTR_DISPLAYNAME ); + pNameArray[CFG_FUNCPROP_DISPLAYNAME] += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( CFGSTR_DISPLAYNAME) ); pNameArray[CFG_FUNCPROP_DESCRIPTION] = aFuncPropPath; - pNameArray[CFG_FUNCPROP_DESCRIPTION] += rtl::OUString::createFromAscii( CFGSTR_DESCRIPTION ); + pNameArray[CFG_FUNCPROP_DESCRIPTION] += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( CFGSTR_DESCRIPTION )); pNameArray[CFG_FUNCPROP_CATEGORY] = aFuncPropPath; - pNameArray[CFG_FUNCPROP_CATEGORY] += rtl::OUString::createFromAscii( CFGSTR_CATEGORY ); + pNameArray[CFG_FUNCPROP_CATEGORY] += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( CFGSTR_CATEGORY) ); uno::Sequence<uno::Any> aFuncProperties = rAddInConfig.GetProperties( aFuncPropNames ); if ( aFuncProperties.getLength() == CFG_FUNCPROP_COUNT ) @@ -508,7 +508,7 @@ void ScUnoAddInCollection::ReadConfiguration() uno::Sequence<sheet::LocalizedName> aCompNames; rtl::OUString aCompPath = aFuncPropPath; - aCompPath += rtl::OUString::createFromAscii( CFGSTR_COMPATIBILITYNAME ); + aCompPath += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( CFGSTR_COMPATIBILITYNAME )); uno::Sequence<rtl::OUString> aCompPropNames( &aCompPath, 1 ); uno::Sequence<uno::Any> aCompProperties = aAllLocalesConfig.GetProperties( aCompPropNames ); @@ -553,7 +553,7 @@ void ScUnoAddInCollection::ReadConfiguration() long nCallerPos = SC_CALLERPOS_NONE; rtl::OUString aArgumentsPath = aFuncPropPath; - aArgumentsPath += rtl::OUString::createFromAscii( CFGSTR_PARAMETERS ); + aArgumentsPath += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( CFGSTR_PARAMETERS) ); uno::Sequence<rtl::OUString> aArgumentNames = rAddInConfig.GetNodeNames( aArgumentsPath ); sal_Int32 nArgumentCount = aArgumentNames.getLength(); @@ -574,9 +574,9 @@ void ScUnoAddInCollection::ReadConfiguration() aOneArgPath += sSlash; pPropNameArray[nIndex] = aOneArgPath; - pPropNameArray[nIndex++] += rtl::OUString::createFromAscii( CFGSTR_DISPLAYNAME ); + pPropNameArray[nIndex++] += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( CFGSTR_DISPLAYNAME )); pPropNameArray[nIndex] = aOneArgPath; - pPropNameArray[nIndex++] += rtl::OUString::createFromAscii( CFGSTR_DESCRIPTION ); + pPropNameArray[nIndex++] += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( CFGSTR_DESCRIPTION )); } uno::Sequence<uno::Any> aArgProperties = rAddInConfig.GetProperties( aArgPropNames ); @@ -715,9 +715,6 @@ BOOL lcl_ValidReturnType( const uno::Reference<reflection::XIdlClass>& xClass ) switch (xClass->getTypeClass()) { - // case uno::TypeClass_VOID: - // ??? - case uno::TypeClass_ANY: // variable type case uno::TypeClass_ENUM: //! ??? case uno::TypeClass_BOOLEAN: @@ -826,8 +823,8 @@ void ScUnoAddInCollection::ReadFromAddIn( const uno::Reference<uno::XInterface>& if ( xManager.is() ) { uno::Reference<beans::XIntrospection> xIntro( - xManager->createInstance(rtl::OUString::createFromAscii( - "com.sun.star.beans.Introspection" )), + xManager->createInstance(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.beans.Introspection" ))), uno::UNO_QUERY ); if ( xIntro.is() ) { @@ -946,7 +943,7 @@ void ScUnoAddInCollection::ReadFromAddIn( const uno::Reference<uno::XInterface>& } catch(uno::Exception&) { - aLocalU = rtl::OUString::createFromAscii( "###" ); + aLocalU = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "###" )); } String aLocalName = String( aLocalU ); @@ -958,7 +955,7 @@ void ScUnoAddInCollection::ReadFromAddIn( const uno::Reference<uno::XInterface>& } catch(uno::Exception&) { - aDescU = rtl::OUString::createFromAscii( "###" ); + aDescU = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "###" )); } String aDescription = String( aDescU ); @@ -983,7 +980,7 @@ void ScUnoAddInCollection::ReadFromAddIn( const uno::Reference<uno::XInterface>& } catch(uno::Exception&) { - aArgName = rtl::OUString::createFromAscii( "###" ); + aArgName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "###" )); } rtl::OUString aArgDesc; try @@ -993,7 +990,7 @@ void ScUnoAddInCollection::ReadFromAddIn( const uno::Reference<uno::XInterface>& } catch(uno::Exception&) { - aArgName = rtl::OUString::createFromAscii( "###" ); + aArgName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "###" )); } BOOL bOptional = @@ -1048,7 +1045,7 @@ void ScUnoAddInCollection::ReadFromAddIn( const uno::Reference<uno::XInterface>& void lcl_UpdateFunctionList( ScFunctionList& rFunctionList, const ScUnoAddInFuncData& rFuncData ) { - String aCompare = rFuncData.GetUpperLocal(); // as used in FillFunctionDescFromData + ::rtl::OUString aCompare = rFuncData.GetUpperLocal(); // as used in FillFunctionDescFromData ULONG nCount = rFunctionList.GetCount(); for (ULONG nPos=0; nPos<nCount; nPos++) @@ -1097,8 +1094,8 @@ void ScUnoAddInCollection::UpdateFromAddIn( const uno::Reference<uno::XInterface if ( xManager.is() ) { uno::Reference<beans::XIntrospection> xIntro( - xManager->createInstance(rtl::OUString::createFromAscii( - "com.sun.star.beans.Introspection" )), + xManager->createInstance(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.beans.Introspection" ))), uno::UNO_QUERY ); if ( xIntro.is() ) { @@ -1312,7 +1309,6 @@ BOOL ScUnoAddInCollection::FillFunctionDesc( long nFunc, ScFuncDesc& rDesc ) return FillFunctionDescFromData( rFuncData, rDesc ); } -// static BOOL ScUnoAddInCollection::FillFunctionDescFromData( const ScUnoAddInFuncData& rFuncData, ScFuncDesc& rDesc ) { rDesc.Clear(); @@ -1328,14 +1324,14 @@ BOOL ScUnoAddInCollection::FillFunctionDescFromData( const ScUnoAddInFuncData& r // nFIndex is set from outside - rDesc.pFuncName = new String( rFuncData.GetUpperLocal() ); //! upper? + rDesc.pFuncName = new ::rtl::OUString( rFuncData.GetUpperLocal() ); //! upper? rDesc.nCategory = rFuncData.GetCategory(); rDesc.nHelpId = rFuncData.GetHelpId(); String aDesc = rFuncData.GetDescription(); if (!aDesc.Len()) aDesc = rFuncData.GetLocalName(); // use name if no description is available - rDesc.pFuncDesc = new String( aDesc ); + rDesc.pFuncDesc = new ::rtl::OUString( aDesc ); // AddInArgumentType_CALLER is already left out in FuncData @@ -1345,18 +1341,18 @@ BOOL ScUnoAddInCollection::FillFunctionDescFromData( const ScUnoAddInFuncData& r BOOL bMultiple = FALSE; const ScAddInArgDesc* pArgs = rFuncData.GetArguments(); - rDesc.ppDefArgNames = new String*[nArgCount]; - rDesc.ppDefArgDescs = new String*[nArgCount]; + rDesc.ppDefArgNames = new ::rtl::OUString*[nArgCount]; + rDesc.ppDefArgDescs = new ::rtl::OUString*[nArgCount]; rDesc.pDefArgFlags = new ScFuncDesc::ParameterFlags[nArgCount]; for ( long nArg=0; nArg<nArgCount; nArg++ ) { - rDesc.ppDefArgNames[nArg] = new String( pArgs[nArg].aName ); - rDesc.ppDefArgDescs[nArg] = new String( pArgs[nArg].aDescription ); + rDesc.ppDefArgNames[nArg] = new ::rtl::OUString( pArgs[nArg].aName ); + rDesc.ppDefArgDescs[nArg] = new ::rtl::OUString( pArgs[nArg].aDescription ); rDesc.pDefArgFlags[nArg].bOptional = pArgs[nArg].bOptional; rDesc.pDefArgFlags[nArg].bSuppress = false; // no empty names... - if ( rDesc.ppDefArgNames[nArg]->Len() == 0 ) + if ( rDesc.ppDefArgNames[nArg]->getLength() == 0 ) { String aDefName( RTL_CONSTASCII_USTRINGPARAM("arg") ); aDefName += String::CreateFromInt32( nArg+1 ); @@ -1668,17 +1664,16 @@ void ScUnoAddInCall::SetResult( const uno::Any& rNewRes ) xMatrix = new ScMatrix( static_cast<SCSIZE>(nMaxColCount), static_cast<SCSIZE>(nRowCount) ); - ScMatrix* pMatrix = xMatrix; for (nRow=0; nRow<nRowCount; nRow++) { long nColCount = pRowArr[nRow].getLength(); const INT32* pColArr = pRowArr[nRow].getConstArray(); for (nCol=0; nCol<nColCount; nCol++) - pMatrix->PutDouble( pColArr[nCol], + xMatrix->PutDouble( pColArr[nCol], static_cast<SCSIZE>(nCol), static_cast<SCSIZE>(nRow) ); for (nCol=nColCount; nCol<nMaxColCount; nCol++) - pMatrix->PutDouble( 0.0, + xMatrix->PutDouble( 0.0, static_cast<SCSIZE>(nCol), static_cast<SCSIZE>(nRow) ); } @@ -1711,17 +1706,16 @@ void ScUnoAddInCall::SetResult( const uno::Any& rNewRes ) xMatrix = new ScMatrix( static_cast<SCSIZE>(nMaxColCount), static_cast<SCSIZE>(nRowCount) ); - ScMatrix* pMatrix = xMatrix; for (nRow=0; nRow<nRowCount; nRow++) { long nColCount = pRowArr[nRow].getLength(); const double* pColArr = pRowArr[nRow].getConstArray(); for (nCol=0; nCol<nColCount; nCol++) - pMatrix->PutDouble( pColArr[nCol], + xMatrix->PutDouble( pColArr[nCol], static_cast<SCSIZE>(nCol), static_cast<SCSIZE>(nRow) ); for (nCol=nColCount; nCol<nMaxColCount; nCol++) - pMatrix->PutDouble( 0.0, + xMatrix->PutDouble( 0.0, static_cast<SCSIZE>(nCol), static_cast<SCSIZE>(nRow) ); } @@ -1754,17 +1748,16 @@ void ScUnoAddInCall::SetResult( const uno::Any& rNewRes ) xMatrix = new ScMatrix( static_cast<SCSIZE>(nMaxColCount), static_cast<SCSIZE>(nRowCount) ); - ScMatrix* pMatrix = xMatrix; for (nRow=0; nRow<nRowCount; nRow++) { long nColCount = pRowArr[nRow].getLength(); const rtl::OUString* pColArr = pRowArr[nRow].getConstArray(); for (nCol=0; nCol<nColCount; nCol++) - pMatrix->PutString( String( pColArr[nCol] ), + xMatrix->PutString( String( pColArr[nCol] ), static_cast<SCSIZE>(nCol), static_cast<SCSIZE>(nRow) ); for (nCol=nColCount; nCol<nMaxColCount; nCol++) - pMatrix->PutString( EMPTY_STRING, + xMatrix->PutString( EMPTY_STRING, static_cast<SCSIZE>(nCol), static_cast<SCSIZE>(nRow) ); } @@ -1786,5 +1779,4 @@ void ScUnoAddInCall::SetResult( const uno::Any& rNewRes ) //------------------------------------------------------------------------ - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/tool/addinlis.cxx b/sc/source/core/tool/addinlis.cxx index 4133e1f4dd9e..cb35b625baf2 100644 --- a/sc/source/core/tool/addinlis.cxx +++ b/sc/source/core/tool/addinlis.cxx @@ -46,8 +46,6 @@ using namespace com::sun::star; //------------------------------------------------------------------------ -//SMART_UNO_IMPLEMENTATION( ScAddInListener, UsrObject ); - SC_SIMPLE_SERVICE_INFO( ScAddInListener, "ScAddInListener", "stardiv.one.sheet.AddInListener" ) //------------------------------------------------------------------------ @@ -56,7 +54,6 @@ List ScAddInListener::aAllListeners; //------------------------------------------------------------------------ -// static ScAddInListener* ScAddInListener::CreateListener( uno::Reference<sheet::XVolatileResult> xVR, ScDocument* pDoc ) { @@ -83,7 +80,6 @@ ScAddInListener::~ScAddInListener() delete pDocs; } -// static ScAddInListener* ScAddInListener::Get( uno::Reference<sheet::XVolatileResult> xVR ) { sheet::XVolatileResult* pComp = xVR.get(); @@ -99,7 +95,6 @@ ScAddInListener* ScAddInListener::Get( uno::Reference<sheet::XVolatileResult> xV } //! move to some container object? -// static void ScAddInListener::RemoveDocument( ScDocument* pDocumentP ) { ULONG nPos = aAllListeners.Count(); diff --git a/sc/source/core/tool/address.cxx b/sc/source/core/tool/address.cxx index f09812526a0c..9f6b4033edc5 100644 --- a/sc/source/core/tool/address.cxx +++ b/sc/source/core/tool/address.cxx @@ -903,6 +903,21 @@ lcl_ScRange_Parse_XL_A1( ScRange& r, p = tmp2; p = lcl_eatWhiteSpace( p+1 ); tmp1 = lcl_a1_get_col( p, &r.aEnd, &nFlags2 ); + if( !tmp1 && !aEndTabName.Len() ) // Probably the aEndTabName was specified after the first range + { + p = lcl_XL_ParseSheetRef( p, aEndTabName, false, NULL ); + if( p ) + { + SCTAB nTab = 0; + if( aEndTabName.Len() && pDoc->GetTable( aEndTabName, nTab ) ) + { + r.aEnd.SetTab( nTab ); + nFlags |= SCA_VALID_TAB2 | SCA_TAB2_3D | SCA_TAB2_ABSOLUTE; + } + p = lcl_eatWhiteSpace( p+1 ); + tmp1 = lcl_a1_get_col( p, &r.aEnd, &nFlags2 ); + } + } if( !tmp1 ) // strange, but valid singleton return nFlags; @@ -1624,7 +1639,6 @@ void ScAddress::Format( String& r, USHORT nFlags, ScDocument* pDoc, r = ScGlobal::GetRscString( STR_NOREF_STR ); return; } -// if( nFlags & ( SCA_TAB_ABSOLUTE | SCA_TAB_3D ) ) if( nFlags & SCA_TAB_3D ) { String aTabName, aDocName; diff --git a/sc/source/core/tool/appoptio.cxx b/sc/source/core/tool/appoptio.cxx index be483c8bf574..ed667ea97d20 100644 --- a/sc/source/core/tool/appoptio.cxx +++ b/sc/source/core/tool/appoptio.cxx @@ -309,7 +309,7 @@ Sequence<OUString> ScAppCfg::GetLayoutPropertyNames() // adjust for metric system if (ScOptionsUtil::IsMetricSystem()) - pNames[SCLAYOUTOPT_MEASURE] = OUString::createFromAscii( "Other/MeasureUnit/Metric" ); + pNames[SCLAYOUTOPT_MEASURE] = OUString(RTL_CONSTASCII_USTRINGPARAM( "Other/MeasureUnit/Metric") ); return aNames; } @@ -393,12 +393,12 @@ Sequence<OUString> ScAppCfg::GetMiscPropertyNames() ScAppCfg::ScAppCfg() : - aLayoutItem( OUString::createFromAscii( CFGPATH_LAYOUT ) ), - aInputItem( OUString::createFromAscii( CFGPATH_INPUT ) ), - aRevisionItem( OUString::createFromAscii( CFGPATH_REVISION ) ), - aContentItem( OUString::createFromAscii( CFGPATH_CONTENT ) ), - aSortListItem( OUString::createFromAscii( CFGPATH_SORTLIST ) ), - aMiscItem( OUString::createFromAscii( CFGPATH_MISC ) ) + aLayoutItem( OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_LAYOUT )) ), + aInputItem( OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_INPUT )) ), + aRevisionItem( OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_REVISION )) ), + aContentItem( OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_CONTENT )) ), + aSortListItem( OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_SORTLIST )) ), + aMiscItem( OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_MISC )) ) { sal_Int32 nIntVal = 0; diff --git a/sc/source/core/tool/autoform.cxx b/sc/source/core/tool/autoform.cxx index bf89efebeaa5..97f6a157ed80 100644 --- a/sc/source/core/tool/autoform.cxx +++ b/sc/source/core/tool/autoform.cxx @@ -56,10 +56,7 @@ const sal_Char *linker_dummy = ""; -// Standard-Name ist jetzt STR_STYLENAME_STANDARD (wie Vorlagen) -//static const sal_Char __FAR_DATA cStandardName[] = "Standard"; - -static const sal_Char __FAR_DATA sAutoTblFmtName[] = "autotbl.fmt"; +static const sal_Char sAutoTblFmtName[] = "autotbl.fmt"; // bis SO5PF const USHORT AUTOFORMAT_ID_X = 9501; @@ -1038,8 +1035,6 @@ BOOL ScAutoFormat::Load() BYTE nChrSet, nCnt; long nPos = rStream.Tell(); rStream >> nCnt >> nChrSet; -// if( 4 <= nCnt ) -// rStream >> nFileVers; if( rStream.Tell() != ULONG(nPos + nCnt) ) { DBG_ERRORFILE( "Der Header enthaelt mehr/neuere Daten" ); @@ -1136,9 +1131,6 @@ BOOL ScAutoFormat::Save() << (BYTE)2 // Anzahl von Zeichen des Headers incl. diesem << (BYTE)::GetSOStoreTextEncoding( gsl_getSystemTextEncoding(), sal::static_int_cast<USHORT>(rStream.GetVersion()) ); -// << (BYTE)4 // Anzahl von Zeichen des Headers incl. diesem -// << (BYTE)::GetStoreCharSet(::GetSystemCharSet()) -// << (UNIT16)SOFFICE_FILEFORMAT_NOW; ScAfVersions::Write(rStream); // Item-Versionen bRet = (rStream.GetError() == 0); diff --git a/sc/source/core/tool/callform.cxx b/sc/source/core/tool/callform.cxx index 0c3c7e8b20b3..fddf91a4f7e1 100644 --- a/sc/source/core/tool/callform.cxx +++ b/sc/source/core/tool/callform.cxx @@ -106,7 +106,6 @@ typedef void (CALLTYPE* FARPROC) ( void ); FuncData::FuncData(const String& rIName) : pModuleData (NULL), aInternalName (rIName), -// aFuncName (""), nNumber (0), nParamCount (0), eAsyncType (NONE) @@ -434,15 +433,12 @@ BOOL FuncData::Unadvice( double nHandle ) const String& FuncData::GetModuleName() const { - // DBG_ASSERT( pModuleData, "Keine Arme, keine Kekse" ): return pModuleData->GetName(); } -//------------------------------------------------------------------------ - -BOOL FuncData::GetParamDesc( String& aName, String& aDesc, USHORT nParam ) +bool FuncData::getParamDesc( ::rtl::OUString& aName, ::rtl::OUString& aDesc, sal_uInt16 nParam ) { - BOOL bRet = FALSE; + bool bRet = false; if ( nParam <= nParamCount ) { osl::Module* pLib = pModuleData->GetInstance(); @@ -452,20 +448,19 @@ BOOL FuncData::GetParamDesc( String& aName, String& aDesc, USHORT nParam ) sal_Char pcName[256]; sal_Char pcDesc[256]; *pcName = *pcDesc = 0; - USHORT nFuncNo = nNumber; // nicht per Reference versauen lassen.. + sal_uInt16 nFuncNo = nNumber; // nicht per Reference versauen lassen.. ((::GetParamDesc)fProc)( nFuncNo, nParam, pcName, pcDesc ); - aName = String( pcName, osl_getThreadTextEncoding() ); - aDesc = String( pcDesc, osl_getThreadTextEncoding() ); - bRet = TRUE; + aName = ::rtl::OUString( pcName, 256, osl_getThreadTextEncoding() ); + aDesc = ::rtl::OUString( pcDesc, 256, osl_getThreadTextEncoding() ); + bRet = true; } } if ( !bRet ) { - aName.Erase(); - aDesc.Erase(); + aName = ::rtl::OUString(); + aDesc = ::rtl::OUString(); } return bRet; } - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/tool/cellkeywords.inl b/sc/source/core/tool/cellkeywords.inl index 9fb58c02797b..5060b366e554 100644 --- a/sc/source/core/tool/cellkeywords.inl +++ b/sc/source/core/tool/cellkeywords.inl @@ -3,7 +3,7 @@ // --------------------------------------------------------------------------- // French language locale (automatically generated) // --------------------------------------------------------------------------- -static const Locale aFr(OUString::createFromAscii("fr"), OUString(), OUString()); +static const Locale aFr(OUString(RTL_CONSTASCII_USTRINGPARAM("fr")), OUString(), OUString()); // pre instantiations of localized function names static const sal_Unicode cell_address_fr[] = { @@ -58,7 +58,7 @@ addToMap(pFr, aFr); // --------------------------------------------------------------------------- // Hungarian language locale (automatically generated) // --------------------------------------------------------------------------- -static const Locale aHu(OUString::createFromAscii("hu"), OUString(), OUString()); +static const Locale aHu(OUString(RTL_CONSTASCII_USTRINGPARAM("hu")), OUString(), OUString()); // pre instantiations of localized function names static const sal_Unicode cell_address_hu[] = { @@ -128,7 +128,7 @@ addToMap(pHu, aHu); // --------------------------------------------------------------------------- // German language locale (automatically generated) // --------------------------------------------------------------------------- -static const Locale aDe(OUString::createFromAscii("de"), OUString(), OUString()); +static const Locale aDe(OUString(RTL_CONSTASCII_USTRINGPARAM("de")), OUString(), OUString()); // pre instantiations of localized function names static const sal_Unicode cell_row_de[] = { diff --git a/sc/source/core/tool/chartarr.cxx b/sc/source/core/tool/chartarr.cxx index 691e05d6d0e1..36dc50befa40 100644 --- a/sc/source/core/tool/chartarr.cxx +++ b/sc/source/core/tool/chartarr.cxx @@ -129,12 +129,12 @@ BOOL ScChartArray::operator==(const ScChartArray& rCmp) const ScMemChart* ScChartArray::CreateMemChart() { ScRangeListRef aRangeListRef(GetRangeList()); - ULONG nCount = aRangeListRef->Count(); + size_t nCount = aRangeListRef->size(); if ( nCount > 1 ) return CreateMemChartMulti(); else if ( nCount == 1 ) { - ScRange* pR = aRangeListRef->First(); + ScRange* pR = aRangeListRef->front(); if ( pR->aStart.Tab() != pR->aEnd.Tab() ) return CreateMemChartMulti(); else @@ -163,7 +163,7 @@ ScMemChart* ScChartArray::CreateMemChartSingle() SCROW nRow2; SCTAB nTab2; ScRangeListRef aRangeListRef(GetRangeList()); - aRangeListRef->First()->GetVars( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2 ); + aRangeListRef->front()->GetVars( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2 ); SCCOL nStrCol = nCol1; // fuer Beschriftung merken SCROW nStrRow = nRow1; @@ -248,8 +248,6 @@ ScMemChart* ScChartArray::CreateMemChartSingle() static_cast<short>(nColCount), static_cast<short>(nRowCount) ); if (pMemChart) { -// SvNumberFormatter* pFormatter = pDocument->GetFormatTable(); -// pMemChart->SetNumberFormatter( pFormatter ); if ( bValidData ) { BOOL bCalcAsShown = pDocument->GetDocOptions().IsCalcAsShown(); @@ -308,16 +306,11 @@ ScMemChart* ScChartArray::CreateMemChartSingle() { aString = ScGlobal::GetRscString(STR_COLUMN); aString += ' '; -// aString += String::CreateFromInt32( pCols[nCol]+1 ); ScAddress aPos( aCols[ nCol ], 0, 0 ); aPos.Format( aColStr, SCA_VALID_COL, NULL ); aString += aColStr; } pMemChart->SetColText( static_cast<short>(nCol), aString); - -// ULONG nNumberAttr = (nTotalRows ? pDocument->GetNumberFormat( -// ScAddress( pCols[nCol], nRow1, nTab1)) : 0); -// pMemChart->SetNumFormatIdCol( static_cast<long>(nCol), nNumberAttr ); } // @@ -339,37 +332,7 @@ ScMemChart* ScChartArray::CreateMemChartSingle() aString += String::CreateFromInt32( aRows[nRow]+1 ); } pMemChart->SetRowText( static_cast<short>(nRow), aString); - -// ULONG nNumberAttr = (nTotalCols ? pDocument->GetNumberFormat( -// ScAddress( nCol1, pRows[nRow], nTab1)) : 0); -// pMemChart->SetNumFormatIdRow( static_cast<long>(nRow), nNumberAttr ); } - - // - // Titel - // - -// pMemChart->SetMainTitle(ScGlobal::GetRscString(STR_CHART_MAINTITLE)); -// pMemChart->SetSubTitle(ScGlobal::GetRscString(STR_CHART_SUBTITLE)); -// pMemChart->SetXAxisTitle(ScGlobal::GetRscString(STR_CHART_XTITLE)); -// pMemChart->SetYAxisTitle(ScGlobal::GetRscString(STR_CHART_YTITLE)); -// pMemChart->SetZAxisTitle(ScGlobal::GetRscString(STR_CHART_ZTITLE)); - - // - // Zahlen-Typ - // - -// ULONG nNumberAttr = (nTotalCols && nTotalRows ? -// pDocument->GetNumberFormat( ScAddress( nCol1, nRow1, nTab1)) : -// 0); -// if (pFormatter) -// pMemChart->SetDataType(pFormatter->GetType( nNumberAttr )); - - // - // Parameter-Strings - // - -// SetExtraStrings( *pMemChart ); } return pMemChart; @@ -380,9 +343,6 @@ ScMemChart* ScChartArray::CreateMemChartMulti() SCSIZE nColCount = GetPositionMap()->GetColCount(); SCSIZE nRowCount = GetPositionMap()->GetRowCount(); - SCSIZE nCol = 0; - SCSIZE nRow = 0; - // May happen at least with more than 32k rows. if (nColCount > SHRT_MAX || nRowCount > SHRT_MAX) { @@ -410,7 +370,8 @@ ScMemChart* ScChartArray::CreateMemChartMulti() static_cast<short>(nColCount), static_cast<short>(nRowCount) ); if (pMemChart) { -// pMemChart->SetNumberFormatter( pDocument->GetFormatTable() ); + SCSIZE nCol = 0; + SCSIZE nRow = 0; BOOL bCalcAsShown = pDocument->GetDocOptions().IsCalcAsShown(); ULONG nIndex = 0; if (bValidData) @@ -505,16 +466,9 @@ ScMemChart* ScChartArray::CreateMemChartMulti() nPosCol++; ScAddress aPos( nPosCol - 1, 0, 0 ); aPos.Format( aColStr, SCA_VALID_COL, NULL ); -// aString += String::CreateFromInt32( nPosCol ); aString += aColStr; } pMemChart->SetColText( static_cast<short>(nCol), aString); - -// ULONG nNumberAttr = 0; -// pPos = GetPositionMap()->GetPosition( nCol, 0 ); -// if ( pPos ) -// nNumberAttr = pDocument->GetNumberFormat( *pPos ); -// pMemChart->SetNumFormatIdCol( static_cast<long>(nCol), nNumberAttr ); } // @@ -542,47 +496,7 @@ ScMemChart* ScChartArray::CreateMemChartMulti() aString += String::CreateFromInt32( nPosRow ); } pMemChart->SetRowText( static_cast<short>(nRow), aString); - -// ULONG nNumberAttr = 0; -// pPos = GetPositionMap()->GetPosition( 0, nRow ); -// if ( pPos ) -// nNumberAttr = pDocument->GetNumberFormat( *pPos ); -// pMemChart->SetNumFormatIdRow( static_cast<long>(nRow), nNumberAttr ); } - - // - // Titel - // - -// pMemChart->SetMainTitle(ScGlobal::GetRscString(STR_CHART_MAINTITLE)); -// pMemChart->SetSubTitle(ScGlobal::GetRscString(STR_CHART_SUBTITLE)); -// pMemChart->SetXAxisTitle(ScGlobal::GetRscString(STR_CHART_XTITLE)); -// pMemChart->SetYAxisTitle(ScGlobal::GetRscString(STR_CHART_YTITLE)); -// pMemChart->SetZAxisTitle(ScGlobal::GetRscString(STR_CHART_ZTITLE)); - - // - // Zahlen-Typ - // - -// SvNumberFormatter* pFormatter = pDocument->GetFormatTable(); -// if (pFormatter) -// { -// ULONG nIndex = 0; -// ULONG nCount = GetPositionMap()->GetCount(); -// const ScAddress* pPos; -// do -// { -// pPos = GetPositionMap()->GetPosition( nIndex ); -// } while ( !pPos && ++nIndex < nCount ); -// ULONG nFormat = ( pPos ? pDocument->GetNumberFormat( *pPos ) : 0 ); -// pMemChart->SetDataType( pFormatter->GetType( nFormat ) ); -// } - - // - // Parameter-Strings - // - -// SetExtraStrings( *pMemChart ); } return pMemChart; diff --git a/sc/source/core/tool/charthelper.cxx b/sc/source/core/tool/charthelper.cxx index 19b9e4099be3..a75dd176bd86 100644 --- a/sc/source/core/tool/charthelper.cxx +++ b/sc/source/core/tool/charthelper.cxx @@ -97,27 +97,26 @@ BOOL lcl_AdjustRanges( ScRangeList& rRanges, SCTAB nSourceTab, SCTAB nDestTab, S { //! if multiple sheets are copied, update references into the other copied sheets? - BOOL bChanged = FALSE; + bool bChanged = false; - ULONG nCount = rRanges.Count(); - for (ULONG i=0; i<nCount; i++) + for ( size_t i=0, nCount = rRanges.size(); i < nCount; i++ ) { - ScRange* pRange = rRanges.GetObject(i); + ScRange* pRange = rRanges[ i ]; if ( pRange->aStart.Tab() == nSourceTab && pRange->aEnd.Tab() == nSourceTab ) { pRange->aStart.SetTab( nDestTab ); pRange->aEnd.SetTab( nDestTab ); - bChanged = TRUE; + bChanged = true; } if ( pRange->aStart.Tab() >= nTabCount ) { pRange->aStart.SetTab( nTabCount > 0 ? ( nTabCount - 1 ) : 0 ); - bChanged = TRUE; + bChanged = true; } if ( pRange->aEnd.Tab() >= nTabCount ) { pRange->aEnd.SetTab( nTabCount > 0 ? ( nTabCount - 1 ) : 0 ); - bChanged = TRUE; + bChanged = true; } } @@ -127,20 +126,11 @@ BOOL lcl_AdjustRanges( ScRangeList& rRanges, SCTAB nSourceTab, SCTAB nDestTab, S }//end anonymous namespace // === ScChartHelper ====================================== - -//static -USHORT ScChartHelper::DoUpdateCharts( const ScAddress& rPos, ScDocument* pDoc ) -{ - return lcl_DoUpdateCharts( rPos, pDoc, FALSE ); -} - -//static USHORT ScChartHelper::DoUpdateAllCharts( ScDocument* pDoc ) { return lcl_DoUpdateCharts( ScAddress(), pDoc, TRUE ); } -//static void ScChartHelper::AdjustRangesOfChartsOnDestinationPage( ScDocument* pSrcDoc, ScDocument* pDestDoc, const SCTAB nSrcTab, const SCTAB nDestTab ) { if( !pSrcDoc || !pDestDoc ) @@ -181,7 +171,6 @@ void ScChartHelper::AdjustRangesOfChartsOnDestinationPage( ScDocument* pSrcDoc, } } -//static uno::Reference< chart2::XChartDocument > ScChartHelper::GetChartFromSdrObject( SdrObject* pObject ) { uno::Reference< chart2::XChartDocument > xReturn; @@ -244,7 +233,7 @@ void ScChartHelper::SetChartRanges( const uno::Reference< chart2::XChartDocument try { - rtl::OUString aPropertyNameRole( ::rtl::OUString::createFromAscii("Role") ); + rtl::OUString aPropertyNameRole( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Role")) ); uno::Sequence< uno::Reference< chart2::data::XLabeledDataSequence > > aLabeledDataSequences( xDataSource->getDataSequences() ); sal_Int32 nRange=0; diff --git a/sc/source/core/tool/chartlis.cxx b/sc/source/core/tool/chartlis.cxx index 15489babda4f..64e3ae285407 100644 --- a/sc/source/core/tool/chartlis.cxx +++ b/sc/source/core/tool/chartlis.cxx @@ -46,9 +46,6 @@ using ::std::auto_ptr; using ::std::unary_function; using ::std::for_each; -//2do: DocOption TimeOut? -//#define SC_CHARTTIMEOUT 1000 // eine Sekunde keine Aenderung/KeyEvent - // Update chart listeners quickly, to get a similar behavior to loaded charts // which register UNO listeners. #define SC_CHARTTIMEOUT 10 @@ -129,7 +126,7 @@ ScChartListener::ScChartListener( const String& rName, ScDocument* pDocP, StrData( rName ), SvtListener(), mpExtRefListener(NULL), - mpTokens(new vector<ScSharedTokenRef>), + mpTokens(new vector<ScTokenRef>), pUnoData( NULL ), pDoc( pDocP ), bUsed( FALSE ), @@ -144,7 +141,7 @@ ScChartListener::ScChartListener( const String& rName, ScDocument* pDocP, StrData( rName ), SvtListener(), mpExtRefListener(NULL), - mpTokens(new vector<ScSharedTokenRef>), + mpTokens(new vector<ScTokenRef>), pUnoData( NULL ), pDoc( pDocP ), bUsed( FALSE ), @@ -154,7 +151,7 @@ ScChartListener::ScChartListener( const String& rName, ScDocument* pDocP, ScRefTokenHelper::getTokensFromRangeList(*mpTokens, *rRangeList); } -ScChartListener::ScChartListener( const String& rName, ScDocument* pDocP, vector<ScSharedTokenRef>* pTokens ) : +ScChartListener::ScChartListener( const String& rName, ScDocument* pDocP, vector<ScTokenRef>* pTokens ) : StrData( rName ), SvtListener(), mpExtRefListener(NULL), @@ -171,7 +168,7 @@ ScChartListener::ScChartListener( const ScChartListener& r ) : StrData( r ), SvtListener(), mpExtRefListener(NULL), - mpTokens(new vector<ScSharedTokenRef>(*r.mpTokens)), + mpTokens(new vector<ScTokenRef>(*r.mpTokens)), pUnoData( NULL ), pDoc( r.pDoc ), bUsed( FALSE ), @@ -224,7 +221,6 @@ void ScChartListener::SetUno( const uno::Reference< chart::XChartDataChangeEventListener >& rListener, const uno::Reference< chart::XChartData >& rSource ) { -// DBG_ASSERT( rListener.is() && rSource.is(), "Nullpointer bei SetUno" ); delete pUnoData; pUnoData = new ScChartUnoData( rListener, rSource ); } @@ -284,27 +280,27 @@ ScRangeListRef ScChartListener::GetRangeList() const void ScChartListener::SetRangeList( const ScRangeListRef& rNew ) { - vector<ScSharedTokenRef> aTokens; + vector<ScTokenRef> aTokens; ScRefTokenHelper::getTokensFromRangeList(aTokens, *rNew); mpTokens->swap(aTokens); } void ScChartListener::SetRangeList( const ScRange& rRange ) { - ScSharedTokenRef pToken; + ScTokenRef pToken; ScRefTokenHelper::getTokenFromRange(pToken, rRange); mpTokens->push_back(pToken); } namespace { -class StartEndListening : public unary_function<ScSharedTokenRef, void> +class StartEndListening : public unary_function<ScTokenRef, void> { public: StartEndListening(ScDocument* pDoc, ScChartListener& rParent, bool bStart) : mpDoc(pDoc), mrParent(rParent), mbStart(bStart) {} - void operator() (const ScSharedTokenRef& pToken) + void operator() (const ScTokenRef& pToken) { if (!ScRefTokenHelper::isRef(pToken)) return; @@ -336,7 +332,6 @@ public: endListening(aRange); } } - private: void startListening(const ScRange& rRange) { @@ -353,7 +348,6 @@ private: else mpDoc->EndListeningArea(rRange, &mrParent); } - private: ScDocument* mpDoc; ScChartListener& mrParent; @@ -404,7 +398,7 @@ void ScChartListener::UpdateScheduledSeriesRanges() void ScChartListener::UpdateChartIntersecting( const ScRange& rRange ) { - ScSharedTokenRef pToken; + ScTokenRef pToken; ScRefTokenHelper::getTokenFromRange(pToken, rRange); if (ScRefTokenHelper::intersects(*mpTokens, pToken)) diff --git a/sc/source/core/tool/chartpos.cxx b/sc/source/core/tool/chartpos.cxx index f8630df4a836..06d508308981 100644 --- a/sc/source/core/tool/chartpos.cxx +++ b/sc/source/core/tool/chartpos.cxx @@ -105,11 +105,12 @@ void ScChartPositioner::GlueState() if ( eGlue != SC_CHARTGLUE_NA ) return; bDummyUpperLeft = FALSE; - ScRangePtr pR; - if ( aRangeListRef->Count() <= 1 ) + ScRange* pR; + if ( aRangeListRef->size() <= 1 ) { - if ( (pR = aRangeListRef->First())!=NULL ) + if ( !aRangeListRef->empty() ) { + pR = aRangeListRef->front(); if ( pR->aStart.Tab() == pR->aEnd.Tab() ) eGlue = SC_CHARTGLUE_NONE; else @@ -125,31 +126,26 @@ void ScChartPositioner::GlueState() } return; } -// ULONG nOldPos = aRangeListRef->GetCurPos(); - pR = aRangeListRef->First(); + pR = aRangeListRef->front(); nStartCol = pR->aStart.Col(); nStartRow = pR->aStart.Row(); SCCOL nMaxCols, nEndCol; SCROW nMaxRows, nEndRow; nMaxCols = nEndCol = 0; nMaxRows = nEndRow = 0; - do + for ( size_t i = 1, nRanges = aRangeListRef->size(); i <= nRanges; ++i ) // <= so 1 extra pass after last item { // umspannenden Bereich etc. feststellen SCCOLROW nTmp, n1, n2; - if ( (n1 = pR->aStart.Col()) < nStartCol ) - nStartCol = static_cast<SCCOL>(n1); - if ( (n2 = pR->aEnd.Col()) > nEndCol ) - nEndCol = static_cast<SCCOL>(n2); - if ( (nTmp = n2 - n1 + 1) > nMaxCols ) - nMaxCols = static_cast<SCCOL>(nTmp); - if ( (n1 = pR->aStart.Row()) < nStartRow ) - nStartRow = static_cast<SCROW>(n1); - if ( (n2 = pR->aEnd.Row()) > nEndRow ) - nEndRow = static_cast<SCROW>(n2); - if ( (nTmp = n2 - n1 + 1) > nMaxRows ) - nMaxRows = static_cast<SCROW>(nTmp); - } while ( (pR = aRangeListRef->Next())!=NULL ); + if ( (n1 = pR->aStart.Col()) < nStartCol ) nStartCol = static_cast<SCCOL>(n1 ); + if ( (n2 = pR->aEnd.Col() ) > nEndCol ) nEndCol = static_cast<SCCOL>(n2 ); + if ( (nTmp = n2 - n1 + 1 ) > nMaxCols ) nMaxCols = static_cast<SCCOL>(nTmp); + if ( (n1 = pR->aStart.Row()) < nStartRow ) nStartRow = static_cast<SCROW>(n1 ); + if ( (n2 = pR->aEnd.Row() ) > nEndRow ) nEndRow = static_cast<SCROW>(n2 ); + if ( (nTmp = n2 - n1 + 1 ) > nMaxRows ) nMaxRows = static_cast<SCROW>(nTmp); + if ( i < nRanges ) // in last pass; i = nRanges so don't use at() + pR = (*aRangeListRef)[i]; + } SCCOL nC = nEndCol - nStartCol + 1; if ( nC == 1 ) { @@ -198,8 +194,9 @@ void ScChartPositioner::GlueState() SCCOL nCol, nCol1, nCol2; SCROW nRow, nRow1, nRow2; - for ( pR = aRangeListRef->First(); pR; pR = aRangeListRef->Next() ) + for ( size_t i = 0, nRanges = aRangeListRef->size(); i < nRanges; ++i ) { // Selektionen 2D als belegt markieren + pR = (*aRangeListRef)[i]; nCol1 = pR->aStart.Col() - nStartCol; nCol2 = pR->aEnd.Col() - nStartCol; nRow1 = pR->aStart.Row() - nStartRow; @@ -302,9 +299,9 @@ void ScChartPositioner::CheckColRowHeaders() BOOL bColStrings = TRUE; BOOL bRowStrings = TRUE; GlueState(); - if ( aRangeListRef->Count() == 1 ) + if ( aRangeListRef->size() == 1 ) { - aRangeListRef->First()->GetVars( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2 ); + aRangeListRef->front()->GetVars( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2 ); if ( nCol1 > nCol2 || nRow1 > nRow2 ) bColStrings = bRowStrings = FALSE; else @@ -324,10 +321,12 @@ void ScChartPositioner::CheckColRowHeaders() else { BOOL bVert = (eGlue == SC_CHARTGLUE_NONE || eGlue == SC_CHARTGLUE_ROWS); - for ( ScRangePtr pR = aRangeListRef->First(); - pR && (bColStrings || bRowStrings); - pR = aRangeListRef->Next() ) + for ( size_t i = 0, nRanges = aRangeListRef->size(); + (i < nRanges) && (bColStrings || bRowStrings); + ++i + ) { + ScRange* pR = (*aRangeListRef)[i]; pR->GetVars( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2 ); BOOL bTopRow = (nRow1 == nStartRow); if ( bRowStrings && (bVert || nCol1 == nStartCol) ) @@ -393,12 +392,12 @@ void ScChartPositioner::CreatePositionMap() Table* pCols = new Table; Table* pNewRowTable = new Table; ScAddress* pNewAddress = new ScAddress; - ScRangePtr pR; Table* pCol; ScAddress* pPos; SCROW nNoGlueRow = 0; - for ( pR = aRangeListRef->First(); pR; pR = aRangeListRef->Next() ) + for ( size_t i = 0, nRanges = aRangeListRef->size(); i < nRanges; ++i ) { + ScRange* pR = (*aRangeListRef)[i]; pR->GetVars( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2 ); for ( nTab = nTab1; nTab <= nTab2; nTab++ ) { @@ -462,7 +461,6 @@ void ScChartPositioner::CreatePositionMap() if ( nColCount==0 || nRowCount==0 ) { // einen Eintrag ohne Daten erzeugen - pR = aRangeListRef->First(); if ( pCols->Count() > 0 ) pCol = (Table*) pCols->First(); else diff --git a/sc/source/core/tool/chgtrack.cxx b/sc/source/core/tool/chgtrack.cxx index 7ff7e4c17b49..a0cc38007615 100644 --- a/sc/source/core/tool/chgtrack.cxx +++ b/sc/source/core/tool/chgtrack.cxx @@ -1744,7 +1744,6 @@ BOOL ScChangeActionContent::Select( ScDocument* pDoc, ScChangeTrack* pTrack, } -// static void ScChangeActionContent::GetStringOfCell( String& rStr, const ScBaseCell* pCell, const ScDocument* pDoc, const ScAddress& rPos ) { @@ -1760,7 +1759,6 @@ void ScChangeActionContent::GetStringOfCell( String& rStr, } -// static void ScChangeActionContent::GetStringOfCell( String& rStr, const ScBaseCell* pCell, const ScDocument* pDoc, ULONG nFormat ) { @@ -1793,7 +1791,6 @@ void ScChangeActionContent::GetStringOfCell( String& rStr, } -// static ScChangeActionContentCellType ScChangeActionContent::GetContentCellType( const ScBaseCell* pCell ) { if ( pCell ) @@ -1829,14 +1826,12 @@ ScChangeActionContentCellType ScChangeActionContent::GetContentCellType( const S } -// static BOOL ScChangeActionContent::NeedsNumberFormat( const ScBaseCell* pCell ) { return pCell && pCell->GetCellType() == CELLTYPE_VALUE; } -// static void ScChangeActionContent::SetValue( String& rStr, ScBaseCell*& pCell, const ScAddress& rPos, const ScBaseCell* pOrgCell, const ScDocument* pFromDoc, ScDocument* pToDoc ) @@ -1845,8 +1840,6 @@ void ScChangeActionContent::SetValue( String& rStr, ScBaseCell*& pCell, SetValue( rStr, pCell, nFormat, pOrgCell, pFromDoc, pToDoc ); } - -// static void ScChangeActionContent::SetValue( String& rStr, ScBaseCell*& pCell, ULONG nFormat, const ScBaseCell* pOrgCell, const ScDocument* pFromDoc, ScDocument* pToDoc ) @@ -1880,7 +1873,6 @@ void ScChangeActionContent::SetValue( String& rStr, ScBaseCell*& pCell, } -// static void ScChangeActionContent::SetCell( String& rStr, ScBaseCell* pCell, ULONG nFormat, const ScDocument* pDoc ) { @@ -2212,7 +2204,6 @@ const SCROW ScChangeTrack::nContentRowsPerSlot = InitContentRowsPerSlot(); const SCSIZE ScChangeTrack::nContentSlots = (MAXROWCOUNT) / InitContentRowsPerSlot() + 2; -// static SCROW ScChangeTrack::InitContentRowsPerSlot() { const SCSIZE nMaxSlots = 0xffe0 / sizeof( ScChangeActionContent* ) - 2; @@ -2338,7 +2329,7 @@ void ScChangeTrack::Clear() } -void __EXPORT ScChangeTrack::ConfigurationChanged( utl::ConfigurationBroadcaster*, sal_uInt32 ) +void ScChangeTrack::ConfigurationChanged( utl::ConfigurationBroadcaster*, sal_uInt32 ) { if ( !pDoc->IsInDtorClear() ) { @@ -2726,7 +2717,6 @@ void ScChangeTrack::AppendMove( const ScRange& rFromRange, } -// static BOOL ScChangeTrack::IsMatrixFormulaRangeDifferent( const ScBaseCell* pOldCell, const ScBaseCell* pNewCell ) { @@ -2743,24 +2733,6 @@ BOOL ScChangeTrack::IsMatrixFormulaRangeDifferent( const ScBaseCell* pOldCell, return nC1 != nC2 || nR1 != nR2; } - -void ScChangeTrack::AppendContent( const ScAddress& rPos, - const String& rNewValue, ScBaseCell* pOldCell ) -{ - String aOldValue; - ScChangeActionContent::GetStringOfCell( aOldValue, pOldCell, pDoc, rPos ); - if ( aOldValue != rNewValue || - IsMatrixFormulaRangeDifferent( pOldCell, NULL ) ) - { // nur wirkliche Aenderung tracken - ScRange aRange( rPos ); - ScChangeActionContent* pAct = new ScChangeActionContent( aRange ); - pAct->SetOldValue( pOldCell, pDoc, pDoc ); - pAct->SetNewValue( rNewValue, pDoc ); - Append( pAct ); - } -} - - void ScChangeTrack::AppendContent( const ScAddress& rPos, const ScBaseCell* pOldCell, ULONG nOldFormat, ScDocument* pRefDoc ) { @@ -3356,7 +3328,6 @@ void ScChangeTrack::Undo( ULONG nStartAction, ULONG nEndAction, bool bMerge ) } -// static BOOL ScChangeTrack::MergeIgnore( const ScChangeAction& rAction, ULONG nFirstMerge ) { if ( rAction.IsRejected() ) diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx index 15723af8e185..3553cef124c4 100644 --- a/sc/source/core/tool/compiler.cxx +++ b/sc/source/core/tool/compiler.cxx @@ -288,7 +288,6 @@ void dbg_call_generateMappingDiff() } #endif // erGENERATEMAPPINGDIFF -// static void ScCompiler::DeInit() { if (pCharClassEnglish) @@ -325,7 +324,6 @@ bool ScCompiler::IsEnglishSymbol( const String& rName ) return false; // no valid function name } -// static void ScCompiler::InitCharClassEnglish() { ::com::sun::star::lang::Locale aLocale( @@ -371,11 +369,6 @@ void ScCompiler::SetGrammar( const FormulaGrammar::Grammar eGrammar ) } } -void ScCompiler::SetEncodeUrlMode( EncodeUrlMode eMode ) -{ - meEncodeUrlMode = eMode; -} - ScCompiler::EncodeUrlMode ScCompiler::GetEncodeUrlMode() const { return meEncodeUrlMode; @@ -917,9 +910,6 @@ struct ConventionOOO_A1 : public Convention_A1 ScComplexRefData aRef( rRef ); // In case absolute/relative positions weren't separately available: // transform relative to absolute! - // AdjustReference( aRef.Ref1 ); - // if( !bSingleRef ) - // AdjustReference( aRef.Ref2 ); aRef.Ref1.CalcAbsIfRel( rComp.GetPos() ); if( !bSingleRef ) aRef.Ref2.CalcAbsIfRel( rComp.GetPos() ); @@ -2501,6 +2491,7 @@ Label_MaskStateMachine: nLen = MAXSTRLEN-1; } lcl_UnicodeStrNCpy( cSymbol, aSymbol.GetBuffer(), nLen ); + pSym = &cSymbol[nLen]; } else { @@ -3085,8 +3076,9 @@ BOOL ScCompiler::IsColRowName( const String& rName ) pRL = pDoc->GetColNameRanges(); else pRL = pDoc->GetRowNameRanges(); - for ( ScRangePair* pR = pRL->First(); pR && !bInList; pR = pRL->Next() ) + for ( size_t iPair = 0, nPairs = pRL->size(); iPair < nPairs && !bInList; ++iPair ) { + ScRangePair* pR = (*pRL)[iPair]; const ScRange& rNameRange = pR->GetRange(0); if ( jThisTab && !(rNameRange.aStart.Tab() <= nThisTab && nThisTab <= rNameRange.aEnd.Tab()) ) @@ -3159,10 +3151,10 @@ BOOL ScCompiler::IsColRowName( const String& rName ) ScAutoNameCache* pNameCache = pDoc->GetAutoNameCache(); if ( pNameCache ) { - // #b6355215# use GetNameOccurences to collect all positions of aName on the sheet + // #b6355215# use GetNameOccurrences to collect all positions of aName on the sheet // (only once), similar to the outer part of the loop in the "else" branch. - const ScAutoNameAddresses& rAddresses = pNameCache->GetNameOccurences( aName, aPos.Tab() ); + const ScAutoNameAddresses& rAddresses = pNameCache->GetNameOccurrences( aName, aPos.Tab() ); // Loop through the found positions, similar to the inner part of the loop in the "else" branch. // The order of addresses in the vector is the same as from ScCellIterator. @@ -4190,7 +4182,6 @@ void ScCompiler::MoveRelWrap( SCCOL nMaxCol, SCROW nMaxRow ) } } -// static // Wrap-adjust relative references of a RangeName to current position, // don't call for other token arrays! void ScCompiler::MoveRelWrap( ScTokenArray& rArr, ScDocument* pDoc, const ScAddress& rPos, @@ -5107,18 +5098,15 @@ void ScCompiler::CreateStringFromMatrix( rtl::OUStringBuffer& rBuffer, if( pMatrix->IsValue( nC, nR ) ) { - ScMatValType nType; - const ScMatrixValue* pVal = pMatrix->Get( nC, nR, nType); - - if( nType == SC_MATVAL_BOOLEAN ) - AppendBoolean( rBuffer, pVal->GetBoolean() ); + if (pMatrix->IsBoolean(nC, nR)) + AppendBoolean(rBuffer, pMatrix->GetDouble(nC, nR) != 0.0); else { - USHORT nErr = pVal->GetError(); - if( nErr ) - rBuffer.append( ScGlobal::GetErrorString( nErr ) ); + USHORT nErr = pMatrix->GetError(nC, nR); + if (nErr) + rBuffer.append(ScGlobal::GetErrorString(nErr)); else - AppendDouble( rBuffer, pVal->fVal ); + AppendDouble(rBuffer, pMatrix->GetDouble(nC, nR)); } } else if( pMatrix->IsEmpty( nC, nR ) ) @@ -5262,7 +5250,7 @@ void ScCompiler::fillAddInToken(::std::vector< ::com::sun::star::sheet::FormulaO // ----------------------------------------------------------------------------- BOOL ScCompiler::HandleSingleRef() { - ScSingleRefData& rRef = static_cast<ScToken*>((FormulaToken*)pToken)->GetSingleRef(); + ScSingleRefData& rRef = static_cast<ScToken*>(pToken.get())->GetSingleRef(); rRef.CalcAbsIfRel( aPos ); if ( !rRef.Valid() ) { @@ -5281,8 +5269,9 @@ BOOL ScCompiler::HandleSingleRef() ScRangePairList* pRL = (bColName ? pDoc->GetColNameRanges() : pDoc->GetRowNameRanges()); ScRange aRange; - for ( ScRangePair* pR = pRL->First(); pR; pR = pRL->Next() ) + for ( size_t i = 0, nPairs = pRL->size(); i < nPairs; ++i ) { + ScRangePair* pR = (*pRL)[i]; if ( pR->GetRange(0).In( aLook ) ) { bInList = bValidName = TRUE; @@ -5327,8 +5316,9 @@ BOOL ScCompiler::HandleSingleRef() nMaxRow = nMyRow - 1; } } - for ( ScRangePair* pR = pRL->First(); pR; pR = pRL->Next() ) + for ( size_t i = 0, nPairs = pRL->size(); i < nPairs; ++i ) { // next defined ColNameRange below limits row + ScRangePair* pR = (*pRL)[i]; const ScRange& rRange = pR->GetRange(1); if ( rRange.aStart.Col() <= nCol && nCol <= rRange.aEnd.Col() ) { // identical column range @@ -5359,8 +5349,9 @@ BOOL ScCompiler::HandleSingleRef() nMaxCol = nMyCol - 1; } } - for ( ScRangePair* pR = pRL->First(); pR; pR = pRL->Next() ) + for ( size_t i = 0, nPairs = pRL->size(); i < nPairs; ++i ) { // next defined RowNameRange to the right limits column + ScRangePair* pR = (*pRL)[i]; const ScRange& rRange = pR->GetRange(1); if ( rRange.aStart.Row() <= nRow && nRow <= rRange.aEnd.Row() ) { // identical row range @@ -5494,10 +5485,6 @@ BOOL ScCompiler::HandleDbData() return TRUE; } -String GetScCompilerNativeSymbol( OpCode eOp ) -{ - return ScCompiler::GetNativeSymbol( eOp ); -} // ----------------------------------------------------------------------------- FormulaTokenRef ScCompiler::ExtendRangeReference( FormulaToken & rTok1, FormulaToken & rTok2, bool bReuseDoubleRef ) { diff --git a/sc/source/core/tool/consoli.cxx b/sc/source/core/tool/consoli.cxx index 006d1746501b..554560b1e87d 100644 --- a/sc/source/core/tool/consoli.cxx +++ b/sc/source/core/tool/consoli.cxx @@ -50,22 +50,6 @@ // STATIC DATA ----------------------------------------------------------- -/* Strings bei Gelegenheit ganz raus... -static USHORT nFuncRes[] = { // Reihenfolge wie bei enum ScSubTotalFunc - 0, // none - STR_PIVOTFUNC_AVG, - STR_PIVOTFUNC_COUNT, - STR_PIVOTFUNC_COUNT2, - STR_PIVOTFUNC_MAX, - STR_PIVOTFUNC_MIN, - STR_PIVOTFUNC_PROD, - STR_PIVOTFUNC_STDDEV, - STR_PIVOTFUNC_STDDEV2, - STR_PIVOTFUNC_SUM, - STR_PIVOTFUNC_VAR, - STR_PIVOTFUNC_VAR2 }; -*/ - static OpCode eOpCodeTable[] = { // Reihenfolge wie bei enum ScSubTotalFunc ocBad, // none ocAverage, @@ -185,8 +169,6 @@ void ScConsData::DeleteData() ppRefs = NULL; } -// DELETEARR( ppData1, nColCount ); -// DELETEARR( ppData2, nColCount ); DELETEARR( ppCount, nColCount ); DELETEARR( ppSum, nColCount ); DELETEARR( ppSumSqr,nColCount ); diff --git a/sc/source/core/tool/ddelink.cxx b/sc/source/core/tool/ddelink.cxx index 00b97d430f0c..88cb72fcee9c 100644 --- a/sc/source/core/tool/ddelink.cxx +++ b/sc/source/core/tool/ddelink.cxx @@ -68,7 +68,7 @@ ScDdeLink::ScDdeLink( ScDocument* pD, const String& rA, const String& rT, const { } -__EXPORT ScDdeLink::~ScDdeLink() +ScDdeLink::~ScDdeLink() { // Verbindung aufheben @@ -105,7 +105,7 @@ ScDdeLink::ScDdeLink( ScDocument* pD, SvStream& rStream, ScMultipleReadHeader& r BOOL bHasValue; rStream >> bHasValue; if ( bHasValue ) - pResult = new ScMatrix( rStream ); + pResult = new ScMatrix(0, 0); if (rHdr.BytesLeft()) // neu in 388b und der 364w (RealTime-Client) Version rStream >> nMode; @@ -126,8 +126,6 @@ void ScDdeLink::Store( SvStream& rStream, ScMultipleWriteHeader& rHdr ) const BOOL bHasValue = ( pResult != NULL ); rStream << bHasValue; - if (bHasValue) - pResult->Store( rStream ); if( rStream.GetVersion() > SOFFICE_FILEFORMAT_40 ) // nicht bei 4.0 Export rStream << nMode; // seit 388b @@ -138,7 +136,7 @@ void ScDdeLink::Store( SvStream& rStream, ScMultipleWriteHeader& rHdr ) const rHdr.EndEntry(); } -void __EXPORT ScDdeLink::DataChanged( const String& rMimeType, +void ScDdeLink::DataChanged( const String& rMimeType, const ::com::sun::star::uno::Any & rValue ) { // wir koennen nur Strings... @@ -168,7 +166,7 @@ void __EXPORT ScDdeLink::DataChanged( const String& rMimeType, if (!nRows || !nCols) // keine Daten { - pResult.Clear(); + pResult.reset(); } else // Daten aufteilen { @@ -202,6 +200,9 @@ void __EXPORT ScDdeLink::DataChanged( const String& rMimeType, double fVal; if ( nMode != SC_DDE_TEXT && pFormatter->IsNumberFormat( aEntry, nIndex, fVal ) ) pResult->PutDouble( fVal, nC, nR ); + else if (aEntry.Len() == 0) + // empty cell + pResult->PutEmpty(nC, nR); else pResult->PutString( aEntry, nC, nR ); } @@ -232,7 +233,7 @@ void __EXPORT ScDdeLink::DataChanged( const String& rMimeType, void ScDdeLink::ResetValue() { - pResult.Clear(); + pResult.reset(); // Es hat sich was getan... // Tracking, FID_DATACHANGED etc. passiert von aussen @@ -241,7 +242,7 @@ void ScDdeLink::ResetValue() Broadcast( ScHint( SC_HINT_DATACHANGED, ScAddress(), NULL ) ); } -void __EXPORT ScDdeLink::ListenersGone() +void ScDdeLink::ListenersGone() { BOOL bWas = bIsInUpdate; bIsInUpdate = TRUE; // Remove() kann Reschedule ausloesen??!? @@ -268,7 +269,6 @@ void ScDdeLink::TryUpdate() else { bIsInUpdate = TRUE; - //Application::Reschedule(); //! OS/2-Simulation pDoc->IncInDdeLinkUpdate(); Update(); pDoc->DecInDdeLinkUpdate(); diff --git a/sc/source/core/tool/detfunc.cxx b/sc/source/core/tool/detfunc.cxx index 3916e2e27de3..a70c56fea2db 100644 --- a/sc/source/core/tool/detfunc.cxx +++ b/sc/source/core/tool/detfunc.cxx @@ -461,7 +461,7 @@ BOOL ScDetectiveFunc::HasArrow( const ScAddress& rStart, return bFound; } -BOOL ScDetectiveFunc::IsNonAlienArrow( SdrObject* pObject ) // static +BOOL ScDetectiveFunc::IsNonAlienArrow( SdrObject* pObject ) { if ( pObject->GetLayer()==SC_LAYER_INTERN && pObject->IsPolyObj() && pObject->GetPointCount()==2 ) @@ -502,7 +502,6 @@ BOOL ScDetectiveFunc::InsertArrow( SCCOL nCol, SCROW nRow, pBox->SetMergedItemSetAndBroadcast(rData.GetBoxSet()); - ScDrawLayer::SetAnchor( pBox, SCA_CELL ); pBox->SetLayer( SC_LAYER_INTERN ); pPage->InsertObject( pBox ); pModel->AddCalcUndo( new SdrUndoInsertObj( *pBox ) ); @@ -544,7 +543,6 @@ BOOL ScDetectiveFunc::InsertArrow( SCCOL nCol, SCROW nRow, pArrow->NbcSetLogicRect(Rectangle(aStartPos,aEndPos)); //! noetig ??? pArrow->SetMergedItemSetAndBroadcast(rAttrSet); - ScDrawLayer::SetAnchor( pArrow, SCA_CELL ); pArrow->SetLayer( SC_LAYER_INTERN ); pPage->InsertObject( pArrow ); pModel->AddCalcUndo( new SdrUndoInsertObj( *pArrow ) ); @@ -576,7 +574,6 @@ BOOL ScDetectiveFunc::InsertToOtherTab( SCCOL nStartCol, SCROW nStartRow, pBox->SetMergedItemSetAndBroadcast(rData.GetBoxSet()); - ScDrawLayer::SetAnchor( pBox, SCA_CELL ); pBox->SetLayer( SC_LAYER_INTERN ); pPage->InsertObject( pBox ); pModel->AddCalcUndo( new SdrUndoInsertObj( *pBox ) ); @@ -611,7 +608,6 @@ BOOL ScDetectiveFunc::InsertToOtherTab( SCCOL nStartCol, SCROW nStartRow, pArrow->SetMergedItemSetAndBroadcast(rAttrSet); - ScDrawLayer::SetAnchor( pArrow, SCA_CELL ); pArrow->SetLayer( SC_LAYER_INTERN ); pPage->InsertObject( pArrow ); pModel->AddCalcUndo( new SdrUndoInsertObj( *pArrow ) ); @@ -680,7 +676,6 @@ void ScDetectiveFunc::DrawCircle( SCCOL nCol, SCROW nRow, ScDetectiveData& rData pCircle->SetMergedItemSetAndBroadcast(rAttrSet); - ScDrawLayer::SetAnchor( pCircle, SCA_CELL ); pCircle->SetLayer( SC_LAYER_INTERN ); pPage->InsertObject( pCircle ); pModel->AddCalcUndo( new SdrUndoInsertObj( *pCircle ) ); @@ -702,10 +697,10 @@ void ScDetectiveFunc::DeleteArrowsAt( SCCOL nCol, SCROW nRow, BOOL bDestPnt ) pPage->RecalcObjOrdNums(); - long nDelCount = 0; - ULONG nObjCount = pPage->GetObjCount(); + ULONG nObjCount = pPage->GetObjCount(); if (nObjCount) { + long nDelCount = 0; SdrObject** ppObj = new SdrObject*[nObjCount]; SdrObjListIter aIter( *pPage, IM_FLAT ); @@ -755,17 +750,6 @@ inline BOOL RectIsPoints( const Rectangle& rRect, const Point& rStart, const Poi void ScDetectiveFunc::DeleteBox( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 ) { -/* String aStr; - aStr += nCol1; - aStr += '/'; - aStr += nRow1; - aStr += '/'; - aStr += nCol2; - aStr += '/'; - aStr += nRow2; - InfoBox(0,aStr).Execute(); -*/ - Rectangle aCornerRect = GetDrawRect( nCol1, nRow1, nCol2, nRow2 ); Point aStartCorner = aCornerRect.TopLeft(); Point aEndCorner = aCornerRect.BottomRight(); @@ -777,10 +761,10 @@ void ScDetectiveFunc::DeleteBox( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nR pPage->RecalcObjOrdNums(); - long nDelCount = 0; - ULONG nObjCount = pPage->GetObjCount(); + ULONG nObjCount = pPage->GetObjCount(); if (nObjCount) { + long nDelCount = 0; SdrObject** ppObj = new SdrObject*[nObjCount]; SdrObjListIter aIter( *pPage, IM_FLAT ); @@ -1061,7 +1045,6 @@ USHORT ScDetectiveFunc::InsertSuccLevel( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, // ueber ganzes Dokument USHORT nResult = DET_INS_EMPTY; -// ScCellIterator aCellIter( pDoc, 0,0, nTab, MAXCOL,MAXROW, nTab ); ScCellIterator aCellIter( pDoc, 0,0,0, MAXCOL,MAXROW,MAXTAB ); // alle Tabellen ScBaseCell* pCell = aCellIter.GetFirst(); while (pCell) @@ -1428,7 +1411,7 @@ BOOL ScDetectiveFunc::MarkInvalid(BOOL& rOverflow) } void ScDetectiveFunc::GetAllPreds(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, - vector<ScSharedTokenRef>& rRefTokens) + vector<ScTokenRef>& rRefTokens) { ScCellIterator aCellIter(pDoc, nCol1, nRow1, nTab, nCol2, nRow2, nTab); for (ScBaseCell* pCell = aCellIter.GetFirst(); pCell; pCell = aCellIter.GetNext()) @@ -1440,16 +1423,16 @@ void ScDetectiveFunc::GetAllPreds(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW n ScDetectiveRefIter aRefIter(pFCell); for (ScToken* p = aRefIter.GetNextRefToken(); p; p = aRefIter.GetNextRefToken()) { - ScSharedTokenRef pRef(static_cast<ScToken*>(p->Clone())); + ScTokenRef pRef(static_cast<ScToken*>(p->Clone())); ScRefTokenHelper::join(rRefTokens, pRef); } } } void ScDetectiveFunc::GetAllSuccs(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, - vector<ScSharedTokenRef>& rRefTokens) + vector<ScTokenRef>& rRefTokens) { - vector<ScSharedTokenRef> aSrcRange; + vector<ScTokenRef> aSrcRange; aSrcRange.push_back( ScRefTokenHelper::createRefToken(ScRange(nCol1, nRow1, nTab, nCol2, nRow2, nTab))); @@ -1463,7 +1446,7 @@ void ScDetectiveFunc::GetAllSuccs(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW n ScDetectiveRefIter aRefIter(pFCell); for (ScToken* p = aRefIter.GetNextRefToken(); p; p = aRefIter.GetNextRefToken()) { - ScSharedTokenRef pRef(static_cast<ScToken*>(p->Clone())); + ScTokenRef pRef(static_cast<ScToken*>(p->Clone())); if (ScRefTokenHelper::intersects(aSrcRange, pRef)) { pRef = ScRefTokenHelper::createRefToken(aCellIter.GetPos()); @@ -1585,12 +1568,10 @@ void ScDetectiveFunc::UpdateAllArrowColors() if ( bArrow || bError ) { ColorData nColorData = ( bError ? GetErrorColor() : GetArrowColor() ); - //pObject->SendRepaintBroadcast(pObject->GetBoundRect()); pObject->SetMergedItem( XLineColorItem( String(), Color( nColorData ) ) ); // repaint only pObject->ActionChanged(); - // pObject->SendRepaintBroadcast(pObject->GetBoundRect()); } } } @@ -1720,7 +1701,6 @@ void ScDetectiveFunc::InsertObject( ScDetectiveObjType eType, } } -// static ColorData ScDetectiveFunc::GetArrowColor() { if (!bColorsInitialized) @@ -1728,7 +1708,6 @@ ColorData ScDetectiveFunc::GetArrowColor() return nArrowColor; } -// static ColorData ScDetectiveFunc::GetErrorColor() { if (!bColorsInitialized) @@ -1736,7 +1715,6 @@ ColorData ScDetectiveFunc::GetErrorColor() return nErrorColor; } -// static ColorData ScDetectiveFunc::GetCommentColor() { if (!bColorsInitialized) @@ -1744,7 +1722,6 @@ ColorData ScDetectiveFunc::GetCommentColor() return nCommentColor; } -// static void ScDetectiveFunc::InitializeColors() { // may be called several times to update colors from configuration @@ -1757,7 +1734,6 @@ void ScDetectiveFunc::InitializeColors() bColorsInitialized = TRUE; } -// static BOOL ScDetectiveFunc::IsColorsInitialized() { return bColorsInitialized; diff --git a/sc/source/core/tool/docoptio.cxx b/sc/source/core/tool/docoptio.cxx index 6c89ba675049..9eff876b92bd 100644 --- a/sc/source/core/tool/docoptio.cxx +++ b/sc/source/core/tool/docoptio.cxx @@ -148,9 +148,9 @@ void ScDocOptions::ResetDocOptions() void ScDocOptions::ResetFormulaSeparators() { // Defaults to the old separator values. - aFormulaSepArg = OUString::createFromAscii(";"); - aFormulaSepArrayCol = OUString::createFromAscii(";"); - aFormulaSepArrayRow = OUString::createFromAscii("|"); + aFormulaSepArg = OUString(RTL_CONSTASCII_USTRINGPARAM(";")); + aFormulaSepArrayCol = OUString(RTL_CONSTASCII_USTRINGPARAM(";")); + aFormulaSepArrayRow = OUString(RTL_CONSTASCII_USTRINGPARAM("|")); const Locale& rLocale = *ScGlobal::GetLocale(); const OUString& rLang = rLocale.Language; @@ -189,12 +189,12 @@ void ScDocOptions::ResetFormulaSeparators() // if the decimal and list separators are equal, set the // parameter separator to be ';', unless they are both // semicolon in which case don't change the decimal separator. - aFormulaSepArg = OUString::createFromAscii(";"); + aFormulaSepArg = OUString(RTL_CONSTASCII_USTRINGPARAM(";")); - aFormulaSepArrayCol = OUString::createFromAscii(","); + aFormulaSepArrayCol = OUString(RTL_CONSTASCII_USTRINGPARAM(",")); if (cDecSep == sal_Unicode(',')) - aFormulaSepArrayCol = OUString::createFromAscii("."); - aFormulaSepArrayRow = OUString::createFromAscii(";"); + aFormulaSepArrayCol = OUString(RTL_CONSTASCII_USTRINGPARAM(".")); + aFormulaSepArrayRow = OUString(RTL_CONSTASCII_USTRINGPARAM(";")); } const LocaleDataWrapper& ScDocOptions::GetLocaleDataWrapper() @@ -224,20 +224,20 @@ ScTpCalcItem::ScTpCalcItem( const ScTpCalcItem& rItem ) //------------------------------------------------------------------------ -__EXPORT ScTpCalcItem::~ScTpCalcItem() +ScTpCalcItem::~ScTpCalcItem() { } //------------------------------------------------------------------------ -String __EXPORT ScTpCalcItem::GetValueText() const +String ScTpCalcItem::GetValueText() const { return String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM("ScTpCalcItem") ); } //------------------------------------------------------------------------ -int __EXPORT ScTpCalcItem::operator==( const SfxPoolItem& rItem ) const +int ScTpCalcItem::operator==( const SfxPoolItem& rItem ) const { DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" ); @@ -248,7 +248,7 @@ int __EXPORT ScTpCalcItem::operator==( const SfxPoolItem& rItem ) const //------------------------------------------------------------------------ -SfxPoolItem* __EXPORT ScTpCalcItem::Clone( SfxItemPool * ) const +SfxPoolItem* ScTpCalcItem::Clone( SfxItemPool * ) const { return new ScTpCalcItem( *this ); } @@ -346,7 +346,7 @@ Sequence<OUString> ScDocCfg::GetLayoutPropertyNames() // adjust for metric system if (ScOptionsUtil::IsMetricSystem()) - pNames[SCDOCLAYOUTOPT_TABSTOP] = OUString::createFromAscii( "TabStop/Metric" ); + pNames[SCDOCLAYOUTOPT_TABSTOP] = OUString(RTL_CONSTASCII_USTRINGPARAM( "TabStop/Metric") ); return aNames; } @@ -366,13 +366,12 @@ Sequence<OUString> ScDocCfg::GetCompatPropertyNames() } ScDocCfg::ScDocCfg() : - aCalcItem( OUString::createFromAscii( CFGPATH_CALC ) ), - aFormulaItem(OUString::createFromAscii(CFGPATH_FORMULA)), - aLayoutItem(OUString::createFromAscii(CFGPATH_DOCLAYOUT)), - aCompatItem(OUString::createFromAscii(CFGPATH_COMPAT)) + aCalcItem( OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_CALC )) ), + aFormulaItem(OUString(RTL_CONSTASCII_USTRINGPARAM(CFGPATH_FORMULA))), + aLayoutItem(OUString(RTL_CONSTASCII_USTRINGPARAM(CFGPATH_DOCLAYOUT))), + aCompatItem(OUString(RTL_CONSTASCII_USTRINGPARAM(CFGPATH_COMPAT))) { sal_Int32 nIntVal = 0; - double fDoubleVal = 0; Sequence<OUString> aNames; Sequence<Any> aValues; @@ -385,9 +384,10 @@ ScDocCfg::ScDocCfg() : aValues = aCalcItem.GetProperties(aNames); aCalcItem.EnableNotification(aNames); pValues = aValues.getConstArray(); - DBG_ASSERT(aValues.getLength() == aNames.getLength(), "GetProperties failed"); + OSL_ENSURE(aValues.getLength() == aNames.getLength(), "GetProperties failed"); if(aValues.getLength() == aNames.getLength()) { + double fDoubleVal = 0; for(int nProp = 0; nProp < aNames.getLength(); nProp++) { DBG_ASSERT(pValues[nProp].hasValue(), "property value missing"); @@ -482,7 +482,7 @@ ScDocCfg::ScDocCfg() : break; case SCFORMULAOPT_ENGLISH_FUNCNAME: { - sal_Bool bEnglish; + sal_Bool bEnglish = false; if (pValues[nProp] >>= bEnglish) SetUseEnglishFuncName(bEnglish); } @@ -634,6 +634,7 @@ IMPL_LINK( ScDocCfg, FormulaCommitHdl, void *, EMPTYARG ) { case ::formula::FormulaGrammar::GRAM_NATIVE_XL_A1: nVal = 1; break; case ::formula::FormulaGrammar::GRAM_NATIVE_XL_R1C1: nVal = 2; break; + default: break; } pValues[nProp] <<= nVal; } diff --git a/sc/source/core/tool/doubleref.cxx b/sc/source/core/tool/doubleref.cxx index a547041b4ce2..a7b709894b05 100644 --- a/sc/source/core/tool/doubleref.cxx +++ b/sc/source/core/tool/doubleref.cxx @@ -178,10 +178,6 @@ bool lcl_createExcelQuery( if (bValid) { -// ULONG nVisible = 0; -// for ( nCol=nCol1; nCol<=nCol2; nCol++ ) -// nVisible += aCol[nCol].VisibleCount( nRow1+1, nRow2 ); - // Count the number of visible cells (excluding the header row). Each // visible cell corresponds with a single query. SCSIZE nVisible = pQueryRef->getVisibleDataCellCount(); diff --git a/sc/source/core/tool/editutil.cxx b/sc/source/core/tool/editutil.cxx index a8a5e2cda967..116131eee6e7 100644 --- a/sc/source/core/tool/editutil.cxx +++ b/sc/source/core/tool/editutil.cxx @@ -69,7 +69,7 @@ // Delimiters zusaetzlich zu EditEngine-Default: -const sal_Char __FAR_DATA ScEditUtil::pCalcDelimiters[] = "=()+-*/^&<>"; +const sal_Char ScEditUtil::pCalcDelimiters[] = "=()+-*/^&<>"; //------------------------------------------------------------------------ @@ -647,7 +647,7 @@ ScHeaderEditEngine::ScHeaderEditEngine( SfxItemPool* pEnginePoolP, BOOL bDeleteE { } -String __EXPORT ScHeaderEditEngine::CalcFieldValue( const SvxFieldItem& rField, +String ScHeaderEditEngine::CalcFieldValue( const SvxFieldItem& rField, USHORT /* nPara */, USHORT /* nPos */, Color*& /* rTxtColor */, Color*& /* rFldColor */ ) { @@ -681,7 +681,6 @@ String __EXPORT ScHeaderEditEngine::CalcFieldValue( const SvxFieldItem& rField, aRet = ScGlobal::pLocaleData->getDate(aData.aDate); else { - //DBG_ERROR("unbekannter Feldbefehl"); aRet = '?'; } } @@ -713,7 +712,7 @@ ScFieldEditEngine::ScFieldEditEngine( SfxItemPool* pEnginePoolP, SetControlWord( (GetControlWord() | EE_CNTRL_MARKFIELDS) & ~EE_CNTRL_RTFSTYLESHEETS ); } -String __EXPORT ScFieldEditEngine::CalcFieldValue( const SvxFieldItem& rField, +String ScFieldEditEngine::CalcFieldValue( const SvxFieldItem& rField, USHORT /* nPara */, USHORT /* nPos */, Color*& rTxtColor, Color*& /* rFldColor */ ) { @@ -746,7 +745,6 @@ String __EXPORT ScFieldEditEngine::CalcFieldValue( const SvxFieldItem& rField, } else { - //DBG_ERROR("unbekannter Feldbefehl"); aRet = '?'; } } @@ -757,7 +755,7 @@ String __EXPORT ScFieldEditEngine::CalcFieldValue( const SvxFieldItem& rField, return aRet; } -void __EXPORT ScFieldEditEngine::FieldClicked( const SvxFieldItem& rField, USHORT, USHORT ) +void ScFieldEditEngine::FieldClicked( const SvxFieldItem& rField, USHORT, USHORT ) { const SvxFieldData* pFld = rField.GetField(); diff --git a/sc/source/core/tool/filtopt.cxx b/sc/source/core/tool/filtopt.cxx index b5c109b6602f..024951e487db 100644 --- a/sc/source/core/tool/filtopt.cxx +++ b/sc/source/core/tool/filtopt.cxx @@ -71,14 +71,13 @@ Sequence<OUString> ScFilterOptions::GetPropertyNames() } ScFilterOptions::ScFilterOptions() : - ConfigItem( OUString::createFromAscii( CFGPATH_FILTER ) ), + ConfigItem( OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_FILTER )) ), bWK3Flag( FALSE ), fExcelColScale( 0 ), fExcelRowScale( 0 ) { Sequence<OUString> aNames = GetPropertyNames(); Sequence<Any> aValues = GetProperties(aNames); -// EnableNotification(aNames); const Any* pValues = aValues.getConstArray(); DBG_ASSERT(aValues.getLength() == aNames.getLength(), "GetProperties failed"); if(aValues.getLength() == aNames.getLength()) diff --git a/sc/source/core/tool/inputopt.cxx b/sc/source/core/tool/inputopt.cxx index 449ec8355dc1..c0e4beea9f73 100644 --- a/sc/source/core/tool/inputopt.cxx +++ b/sc/source/core/tool/inputopt.cxx @@ -155,10 +155,8 @@ Sequence<OUString> ScInputCfg::GetPropertyNames() } ScInputCfg::ScInputCfg() : - ConfigItem( OUString::createFromAscii( CFGPATH_INPUT ) ) + ConfigItem( OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_INPUT )) ) { - sal_Int32 nIntVal = 0; - Sequence<OUString> aNames = GetPropertyNames(); Sequence<Any> aValues = GetProperties(aNames); EnableNotification(aNames); @@ -171,6 +169,7 @@ ScInputCfg::ScInputCfg() : DBG_ASSERT(pValues[nProp].hasValue(), "property value missing"); if(pValues[nProp].hasValue()) { + sal_Int32 nIntVal = 0; switch(nProp) { case SCINPUTOPT_MOVEDIR: diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index f561317f71a3..faab7ee71215 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -126,23 +126,20 @@ void ScInterpreter::ScIfJump() { double fVal; bool bTrue; - ScMatValType nType = 0; - const ScMatrixValue* pMatVal = pMat->Get( nC, nR, - nType); - bool bIsValue = ScMatrix::IsValueType( nType); - if ( bIsValue ) + bool bIsValue = pMat->IsValue(nC, nR); + if (bIsValue) { - fVal = pMatVal->fVal; - bIsValue = ::rtl::math::isFinite( fVal ); + fVal = pMat->GetDouble(nC, nR); + bIsValue = ::rtl::math::isFinite(fVal); bTrue = bIsValue && (fVal != 0.0); - if ( bTrue ) + if (bTrue) fVal = 1.0; } else { // Treat empty and empty path as 0, but string // as error. - bIsValue = !ScMatrix::IsRealStringType( nType); + bIsValue = (!pMat->IsString(nC, nR) || pMat->IsEmpty(nC, nR)); bTrue = false; fVal = (bIsValue ? 0.0 : CreateDoubleError( errNoValue)); } @@ -182,7 +179,7 @@ void ScInterpreter::ScIfJump() xNew = new ScJumpMatrixToken( pJumpMat ); GetTokenMatrixMap().insert( ScTokenMatrixMap::value_type(pCur, xNew)); } - PushTempToken( xNew); + PushTempToken( xNew.get()); // set endpoint of path for main code line aCode.Jump( pJump[ nJumpCount ], pJump[ nJumpCount ] ); } @@ -258,13 +255,10 @@ void ScInterpreter::ScChoseJump() for ( SCSIZE nR=0; nR < nRows; ++nR ) { double fVal; - ScMatValType nType; - const ScMatrixValue* pMatVal = pMat->Get( nC, nR, - nType); - bool bIsValue = ScMatrix::IsValueType( nType); + bool bIsValue = pMat->IsValue(nC, nR); if ( bIsValue ) { - fVal = pMatVal->fVal; + fVal = pMat->GetDouble(nC, nR); bIsValue = ::rtl::math::isFinite( fVal ); if ( bIsValue ) { @@ -299,7 +293,7 @@ void ScInterpreter::ScChoseJump() GetTokenMatrixMap().insert( ScTokenMatrixMap::value_type( pCur, xNew)); } - PushTempToken( xNew); + PushTempToken( xNew.get()); // set endpoint of path for main code line aCode.Jump( pJump[ nJumpCount ], pJump[ nJumpCount ] ); bHaveJump = true; @@ -936,22 +930,25 @@ ScMatrixRef ScInterpreter::CompareMat( ScCompareOptions* pOptions ) pResMat = GetNewMat( nC, nR); if ( !pResMat ) return NULL; - SCSIZE n = nC * nR; - for ( SCSIZE j=0; j<n; j++ ) + + for (SCSIZE j = 0; j < nC; ++j) { - if ( pMat[i]->IsValue(j) ) - { - aComp.bVal[i] = TRUE; - aComp.nVal[i] = pMat[i]->GetDouble(j); - aComp.bEmpty[i] = FALSE; - } - else + for (SCSIZE k = 0; k < nR; ++k) { - aComp.bVal[i] = FALSE; - *aComp.pVal[i] = pMat[i]->GetString(j); - aComp.bEmpty[i] = pMat[i]->IsEmpty(j); + if ( pMat[i]->IsValue(j,k) ) + { + aComp.bVal[i] = TRUE; + aComp.nVal[i] = pMat[i]->GetDouble(j,k); + aComp.bEmpty[i] = FALSE; + } + else + { + aComp.bVal[i] = FALSE; + *aComp.pVal[i] = pMat[i]->GetString(j,k); + aComp.bEmpty[i] = pMat[i]->IsEmpty(j,k); + } + pResMat->PutDouble( CompareFunc(aComp, pOptions), j, k); } - pResMat->PutDouble( CompareFunc( aComp, pOptions ), j ); } } } @@ -960,7 +957,7 @@ ScMatrixRef ScInterpreter::CompareMat( ScCompareOptions* pOptions ) } -ScMatrixRef ScInterpreter::QueryMat( ScMatrix* pMat, ScCompareOptions& rOptions ) +ScMatrixRef ScInterpreter::QueryMat( const ScMatrixRef& pMat, ScCompareOptions& rOptions ) { short nSaveCurFmtType = nCurFmtType; short nSaveFuncFmtType = nFuncFmtType; @@ -1339,14 +1336,16 @@ void ScInterpreter::ScNeg() PushIllegalArgument(); else { - SCSIZE nCount = nC * nR; - for ( SCSIZE j=0; j<nCount; ++j ) + for (SCSIZE i = 0; i < nC; ++i) { - if ( pMat->IsValueOrEmpty(j) ) - pResMat->PutDouble( -pMat->GetDouble(j), j ); - else - pResMat->PutString( - ScGlobal::GetRscString( STR_NO_VALUE ), j ); + for (SCSIZE j = 0; j < nR; ++j) + { + if ( pMat->IsValueOrEmpty(i,j) ) + pResMat->PutDouble( -pMat->GetDouble(i,j), i, j ); + else + pResMat->PutString( + ScGlobal::GetRscString( STR_NO_VALUE ), i, j ); + } } PushMatrix( pResMat ); } @@ -1395,14 +1394,16 @@ void ScInterpreter::ScNot() PushIllegalArgument(); else { - SCSIZE nCount = nC * nR; - for ( SCSIZE j=0; j<nCount; ++j ) + for (SCSIZE i = 0; i < nC; ++i) { - if ( pMat->IsValueOrEmpty(j) ) - pResMat->PutDouble( (pMat->GetDouble(j) == 0.0), j ); - else - pResMat->PutString( - ScGlobal::GetRscString( STR_NO_VALUE ), j ); + for (SCSIZE j = 0; j < nR; ++j) + { + if ( pMat->IsValueOrEmpty(i,j) ) + pResMat->PutDouble( (pMat->GetDouble(i,j) == 0.0), i, j ); + else + pResMat->PutString( + ScGlobal::GetRscString( STR_NO_VALUE ), i, j ); + } } PushMatrix( pResMat ); } @@ -1634,7 +1635,7 @@ void ScInterpreter::ScIsEmpty() if ( !pMat ) ; // nothing else if ( !pJumpMatrix ) - nRes = pMat->IsEmpty( 0 ); + nRes = pMat->IsEmpty( 0, 0); else { SCSIZE nCols, nRows, nC, nR; @@ -1696,7 +1697,7 @@ short ScInterpreter::IsString() if ( !pMat ) ; // nothing else if ( !pJumpMatrix ) - nRes = pMat->IsString(0) && !pMat->IsEmpty(0); + nRes = pMat->IsString(0, 0) && !pMat->IsEmpty(0, 0); else { SCSIZE nCols, nRows, nC, nR; @@ -2146,8 +2147,8 @@ void ScInterpreter::ScIsValue() ; // nothing else if ( !pJumpMatrix ) { - if (pMat->GetErrorIfNotString( 0 ) == 0) - nRes = pMat->IsValue( 0 ); + if (pMat->GetErrorIfNotString( 0, 0) == 0) + nRes = pMat->IsValue( 0, 0); } else { @@ -2252,7 +2253,7 @@ void ScInterpreter::ScIsNV() if ( !pMat ) ; // nothing else if ( !pJumpMatrix ) - nRes = (pMat->GetErrorIfNotString( 0 ) == NOTAVAILABLE); + nRes = (pMat->GetErrorIfNotString( 0, 0) == NOTAVAILABLE); else { SCSIZE nCols, nRows, nC, nR; @@ -2302,7 +2303,7 @@ void ScInterpreter::ScIsErr() nRes = ((nGlobalError && nGlobalError != NOTAVAILABLE) || !pMat); else if ( !pJumpMatrix ) { - USHORT nErr = pMat->GetErrorIfNotString( 0 ); + USHORT nErr = pMat->GetErrorIfNotString( 0, 0); nRes = (nErr && nErr != NOTAVAILABLE); } else @@ -2359,7 +2360,7 @@ void ScInterpreter::ScIsError() if ( nGlobalError || !pMat ) nRes = 1; else if ( !pJumpMatrix ) - nRes = (pMat->GetErrorIfNotString( 0 ) != 0); + nRes = (pMat->GetErrorIfNotString( 0, 0) != 0); else { SCSIZE nCols, nRows, nC, nR; @@ -2432,9 +2433,9 @@ short ScInterpreter::IsEven() ; // nothing else if ( !pJumpMatrix ) { - nRes = pMat->IsValue( 0 ); + nRes = pMat->IsValue( 0, 0); if ( nRes ) - fVal = pMat->GetDouble( 0 ); + fVal = pMat->GetDouble( 0, 0); } else { @@ -2759,7 +2760,7 @@ static ::rtl::OUString lcl_convertIntoHalfWidth( const ::rtl::OUString & rStr ) if( bFirstASCCall ) { - aTrans.loadModuleByImplName( ::rtl::OUString::createFromAscii( "FULLWIDTH_HALFWIDTH_LIKE_ASC" ), LANGUAGE_SYSTEM ); + aTrans.loadModuleByImplName( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "FULLWIDTH_HALFWIDTH_LIKE_ASC" )), LANGUAGE_SYSTEM ); bFirstASCCall = false; } @@ -2774,7 +2775,7 @@ static ::rtl::OUString lcl_convertIntoFullWidth( const ::rtl::OUString & rStr ) if( bFirstJISCall ) { - aTrans.loadModuleByImplName( ::rtl::OUString::createFromAscii( "HALFWIDTH_FULLWIDTH_LIKE_JIS" ), LANGUAGE_SYSTEM ); + aTrans.loadModuleByImplName( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "HALFWIDTH_FULLWIDTH_LIKE_JIS" )), LANGUAGE_SYSTEM ); bFirstJISCall = false; } @@ -3100,51 +3101,51 @@ namespace { void IterateMatrix( const ScMatrixRef& pMat, ScIterFunc eFunc, BOOL bTextAsZero, - ULONG& rCount, short& rFuncFmtType, double& fVal, double& fRes, double& fMem, BOOL& bNull) + ULONG& rCount, short& rFuncFmtType, double& fRes, double& fMem, bool& bNull) { if (!pMat) return; - SCSIZE nC, nR; rFuncFmtType = NUMBERFORMAT_NUMBER; - pMat->GetDimensions(nC, nR); - if( eFunc == ifCOUNT2 ) - rCount += (ULONG) nC * nR; - else + switch (eFunc) { - for (SCSIZE nMatCol = 0; nMatCol < nC; nMatCol++) + case ifAVERAGE: + case ifSUM: { - for (SCSIZE nMatRow = 0; nMatRow < nR; nMatRow++) + ScMatrix::IterateResult aRes = pMat->Sum(bTextAsZero); + if (bNull) { - if (!pMat->IsString(nMatCol,nMatRow)) - { - rCount++; - fVal = pMat->GetDouble(nMatCol,nMatRow); - switch( eFunc ) - { - case ifAVERAGE: - case ifSUM: - if ( bNull && fVal != 0.0 ) - { - bNull = FALSE; - fMem = fVal; - } - else - fRes += fVal; - break; - case ifSUMSQ: fRes += fVal * fVal; break; - case ifPRODUCT: fRes *= fVal; break; - default: ; // nothing - } - } - else if ( bTextAsZero ) - { - rCount++; - if ( eFunc == ifPRODUCT ) - fRes = 0.0; - } + bNull = false; + fMem = aRes.mfFirst; + fRes += aRes.mfRest; } + else + fRes += aRes.mfFirst + aRes.mfRest; + rCount += aRes.mnCount; } + break; + case ifCOUNT: + rCount += pMat->Count(bTextAsZero); + break; + case ifCOUNT2: + rCount += pMat->Count(true); + break; + case ifPRODUCT: + { + ScMatrix::IterateResult aRes = pMat->Product(bTextAsZero); + fRes *= aRes.mfRest; + rCount += aRes.mnCount; + } + break; + case ifSUMSQ: + { + ScMatrix::IterateResult aRes = pMat->SumSquare(bTextAsZero); + fRes += aRes.mfRest; + rCount += aRes.mnCount; + } + break; + default: + ; } } @@ -3156,8 +3157,8 @@ double ScInterpreter::IterateParameters( ScIterFunc eFunc, BOOL bTextAsZero ) short nParamCount = GetByte(); double fRes = ( eFunc == ifPRODUCT ) ? 1.0 : 0.0; double fVal = 0.0; - double fMem = 0.0; - BOOL bNull = TRUE; + double fMem = 0.0; // first numeric value. + bool bNull = true; ULONG nCount = 0; ScAddress aAdr; ScRange aRange; @@ -3218,7 +3219,7 @@ double ScInterpreter::IterateParameters( ScIterFunc eFunc, BOOL bTextAsZero ) case ifSUM: if ( bNull && fVal != 0.0 ) { - bNull = FALSE; + bNull = false; fMem = fVal; } else @@ -3269,7 +3270,7 @@ double ScInterpreter::IterateParameters( ScIterFunc eFunc, BOOL bTextAsZero ) case ifSUM: if ( bNull && fVal != 0.0 ) { - bNull = FALSE; + bNull = false; fMem = fVal; } else @@ -3327,7 +3328,7 @@ double ScInterpreter::IterateParameters( ScIterFunc eFunc, BOOL bTextAsZero ) case ifSUM: if ( bNull && fVal != 0.0 ) { - bNull = FALSE; + bNull = false; fMem = fVal; } else @@ -3357,7 +3358,6 @@ double ScInterpreter::IterateParameters( ScIterFunc eFunc, BOOL bTextAsZero ) case svDoubleRef : case svRefList : { - USHORT nErr = 0; PopDoubleRef( aRange, nParamCount, nRefInList); if ( nGlobalError && ( eFunc == ifCOUNT2 || eFunc == ifCOUNT ) ) { @@ -3386,6 +3386,7 @@ double ScInterpreter::IterateParameters( ScIterFunc eFunc, BOOL bTextAsZero ) else { ScValueIterator aValIter( pDok, aRange, glSubTotal, bTextAsZero ); + USHORT nErr = 0; if (aValIter.GetFirst(fVal, nErr)) { // placed the loop on the inside for performance reasons: @@ -3399,7 +3400,7 @@ double ScInterpreter::IterateParameters( ScIterFunc eFunc, BOOL bTextAsZero ) SetError(nErr); if ( bNull && fVal != 0.0 ) { - bNull = FALSE; + bNull = false; fMem = fVal; } else @@ -3448,13 +3449,13 @@ double ScInterpreter::IterateParameters( ScIterFunc eFunc, BOOL bTextAsZero ) if (nGlobalError) break; - IterateMatrix(pMat, eFunc, bTextAsZero, nCount, nFuncFmtType, fVal, fMem, fRes, bNull); + IterateMatrix(pMat, eFunc, bTextAsZero, nCount, nFuncFmtType, fRes, fMem, bNull); } break; case svMatrix : { ScMatrixRef pMat = PopMatrix(); - IterateMatrix(pMat, eFunc, bTextAsZero, nCount, nFuncFmtType, fVal, fMem, fRes, bNull); + IterateMatrix(pMat, eFunc, bTextAsZero, nCount, nFuncFmtType, fRes, fMem, bNull); } break; case svError: @@ -4054,11 +4055,61 @@ void ScInterpreter::ScTable() } } +namespace { + +class VectorMatrixAccessor +{ +public: + VectorMatrixAccessor(const ScMatrix& rMat, bool bColVec) : + mrMat(rMat), mbColVec(bColVec) {} + + bool IsEmpty(SCSIZE i) const + { + return mbColVec ? mrMat.IsEmpty(0, i) : mrMat.IsEmpty(i, 0); + } + + bool IsEmptyPath(SCSIZE i) const + { + return mbColVec ? mrMat.IsEmptyPath(0, i) : mrMat.IsEmptyPath(i, 0); + } + + bool IsValue(SCSIZE i) const + { + return mbColVec ? mrMat.IsValue(0, i) : mrMat.IsValue(i, 0); + } + + bool IsString(SCSIZE i) const + { + return mbColVec ? mrMat.IsString(0, i) : mrMat.IsString(i, 0); + } + + double GetDouble(SCSIZE i) const + { + return mbColVec ? mrMat.GetDouble(0, i) : mrMat.GetDouble(i, 0); + } + + const String& GetString(SCSIZE i) const + { + return mbColVec ? mrMat.GetString(0, i) : mrMat.GetString(i, 0); + } + + SCSIZE GetElementCount() const + { + SCSIZE nC, nR; + mrMat.GetDimensions(nC, nR); + return mbColVec ? nR : nC; + } + +private: + const ScMatrix& mrMat; + bool mbColVec; +}; + /** returns -1 when the matrix value is smaller than the query value, 0 when they are equal, and 1 when the matrix value is larger than the query value. */ -static sal_Int32 lcl_CompareMatrix2Query( SCSIZE i, const ScMatrix& rMat, - const ScQueryEntry& rEntry) +static sal_Int32 lcl_CompareMatrix2Query( + SCSIZE i, const VectorMatrixAccessor& rMat, const ScQueryEntry& rEntry) { if (rMat.IsEmpty(i)) { @@ -4098,7 +4149,7 @@ static sal_Int32 lcl_CompareMatrix2Query( SCSIZE i, const ScMatrix& rMat, /** returns the last item with the identical value as the original item value. */ -static void lcl_GetLastMatch( SCSIZE& rIndex, const ScMatrix& rMat, +static void lcl_GetLastMatch( SCSIZE& rIndex, const VectorMatrixAccessor& rMat, SCSIZE nMatCount, bool bReverse) { if (rMat.IsValue(rIndex)) @@ -4150,10 +4201,11 @@ static void lcl_GetLastMatch( SCSIZE& rIndex, const ScMatrix& rMat, } } +} + void ScInterpreter::ScMatch() { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScMatch" ); - ScMatrixRef pMatSrc = NULL; BYTE nParamCount = GetByte(); if ( MustHaveParamCount( nParamCount, 2, 3 ) ) @@ -4169,6 +4221,7 @@ void ScInterpreter::ScMatch() SCCOL nCol2 = 0; SCROW nRow2 = 0; SCTAB nTab2 = 0; + ScMatrixRef pMatSrc = NULL; switch (GetStackType()) { @@ -4322,6 +4375,7 @@ void ScInterpreter::ScMatch() return; } SCSIZE nMatCount = (nC == 1) ? nR : nC; + VectorMatrixAccessor aMatAcc(*pMatSrc, nC == 1); // simple serial search for equality mode (source data doesn't // need to be sorted). @@ -4330,7 +4384,7 @@ void ScInterpreter::ScMatch() { for (SCSIZE i = 0; i < nMatCount; ++i) { - if (lcl_CompareMatrix2Query( i, *pMatSrc, rEntry) == 0) + if (lcl_CompareMatrix2Query( i, aMatAcc, rEntry) == 0) { PushDouble(i+1); // found ! return; @@ -4348,11 +4402,11 @@ void ScInterpreter::ScMatch() for (SCSIZE nLen = nLast-nFirst; nLen > 0; nLen = nLast-nFirst) { SCSIZE nMid = nFirst + nLen/2; - sal_Int32 nCmp = lcl_CompareMatrix2Query( nMid, *pMatSrc, rEntry); + sal_Int32 nCmp = lcl_CompareMatrix2Query( nMid, aMatAcc, rEntry); if (nCmp == 0) { // exact match. find the last item with the same value. - lcl_GetLastMatch( nMid, *pMatSrc, nMatCount, !bAscOrder); + lcl_GetLastMatch( nMid, aMatAcc, nMatCount, !bAscOrder); PushDouble( nMid+1); return; } @@ -4384,7 +4438,7 @@ void ScInterpreter::ScMatch() if (nHitIndex == nMatCount-1) // last item { - sal_Int32 nCmp = lcl_CompareMatrix2Query( nHitIndex, *pMatSrc, rEntry); + sal_Int32 nCmp = lcl_CompareMatrix2Query( nHitIndex, aMatAcc, rEntry); if ((bAscOrder && nCmp <= 0) || (!bAscOrder && nCmp >= 0)) { // either the last item is an exact match or the real @@ -4702,324 +4756,326 @@ void ScInterpreter::ScCountIf() void ScInterpreter::ScSumIf() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScSumIf" ); BYTE nParamCount = GetByte(); - if ( MustHaveParamCount( nParamCount, 2, 3 ) ) - { - SCCOL nCol3 = 0; - SCROW nRow3 = 0; - SCTAB nTab3 = 0; + if ( !MustHaveParamCount( nParamCount, 2, 3 ) ) + return; - ScMatrixRef pSumExtraMatrix; - bool bSumExtraRange = (nParamCount == 3); - if (bSumExtraRange) - { - // Save only the upperleft cell in case of cell range. The geometry - // of the 3rd parameter is taken from the 1st parameter. + SCCOL nCol3 = 0; + SCROW nRow3 = 0; + SCTAB nTab3 = 0; + + ScMatrixRef pSumExtraMatrix; + bool bSumExtraRange = (nParamCount == 3); + if (bSumExtraRange) + { + // Save only the upperleft cell in case of cell range. The geometry + // of the 3rd parameter is taken from the 1st parameter. - switch ( GetStackType() ) - { - case svDoubleRef : - { - SCCOL nColJunk = 0; - SCROW nRowJunk = 0; - SCTAB nTabJunk = 0; - PopDoubleRef( nCol3, nRow3, nTab3, nColJunk, nRowJunk, nTabJunk ); - if ( nTabJunk != nTab3 ) - { - PushIllegalParameter(); - return; - } - } - break; - case svSingleRef : - PopSingleRef( nCol3, nRow3, nTab3 ); - break; - case svMatrix: - pSumExtraMatrix = PopMatrix(); - //! nCol3, nRow3, nTab3 remain 0 - break; - default: - PushIllegalParameter(); - return ; - } - } - String rString; - double fVal = 0.0; - BOOL bIsString = TRUE; switch ( GetStackType() ) { case svDoubleRef : - case svSingleRef : { - ScAddress aAdr; - if ( !PopDoubleRefOrSingleRef( aAdr ) ) + SCCOL nColJunk = 0; + SCROW nRowJunk = 0; + SCTAB nTabJunk = 0; + PopDoubleRef( nCol3, nRow3, nTab3, nColJunk, nRowJunk, nTabJunk ); + if ( nTabJunk != nTab3 ) { - PushInt(0); - return ; - } - ScBaseCell* pCell = GetCell( aAdr ); - switch ( GetCellType( pCell ) ) - { - case CELLTYPE_VALUE : - fVal = GetCellValue( aAdr, pCell ); - bIsString = FALSE; - break; - case CELLTYPE_FORMULA : - if( ((ScFormulaCell*)pCell)->IsValue() ) - { - fVal = GetCellValue( aAdr, pCell ); - bIsString = FALSE; - } - else - GetCellString(rString, pCell); - break; - case CELLTYPE_STRING : - case CELLTYPE_EDIT : - GetCellString(rString, pCell); - break; - default: - fVal = 0.0; - bIsString = FALSE; + PushIllegalParameter(); + return; } } break; - case svString: - rString = GetString(); + case svSingleRef : + PopSingleRef( nCol3, nRow3, nTab3 ); break; - case svMatrix : + case svMatrix: + pSumExtraMatrix = PopMatrix(); + //! nCol3, nRow3, nTab3 remain 0 + break; + case svExternalSingleRef: { - ScMatValType nType = GetDoubleOrStringFromMatrix( fVal, - rString); - bIsString = ScMatrix::IsNonValueType( nType); + pSumExtraMatrix = new ScMatrix(1, 1); + ScExternalRefCache::TokenRef pToken; + PopExternalSingleRef(pToken); + if (!pToken) + { + PushIllegalParameter(); + return; + } + + if (pToken->GetType() == svDouble) + pSumExtraMatrix->PutDouble(pToken->GetDouble(), 0, 0); + else + pSumExtraMatrix->PutString(pToken->GetString(), 0, 0); } break; + case svExternalDoubleRef: + PopExternalDoubleRef(pSumExtraMatrix); + break; default: - { - fVal = GetDouble(); - bIsString = FALSE; - } + PushIllegalParameter(); + return ; } + } - double fSum = 0.0; - double fMem = 0.0; - BOOL bNull = TRUE; - short nParam = 1; - size_t nRefInList = 0; - while (nParam-- > 0) + String aString; + double fVal = 0.0; + bool bIsString = true; + switch ( GetStackType() ) + { + case svDoubleRef : + case svSingleRef : { - SCCOL nCol1; - SCROW nRow1; - SCTAB nTab1; - SCCOL nCol2; - SCROW nRow2; - SCTAB nTab2; - ScMatrixRef pQueryMatrix; - switch ( GetStackType() ) + ScAddress aAdr; + if ( !PopDoubleRefOrSingleRef( aAdr ) ) { - case svRefList : - if (bSumExtraRange) + PushInt(0); + return ; + } + ScBaseCell* pCell = GetCell( aAdr ); + switch ( GetCellType( pCell ) ) + { + case CELLTYPE_VALUE : + fVal = GetCellValue( aAdr, pCell ); + bIsString = false; + break; + case CELLTYPE_FORMULA : + if( ((ScFormulaCell*)pCell)->IsValue() ) { - PushIllegalParameter(); - return; + fVal = GetCellValue( aAdr, pCell ); + bIsString = false; } else - { - ScRange aRange; - PopDoubleRef( aRange, nParam, nRefInList); - aRange.GetVars( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2); - } + GetCellString(aString, pCell); break; - case svDoubleRef : - PopDoubleRef( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2 ); - break; - case svSingleRef : - PopSingleRef( nCol1, nRow1, nTab1 ); - nCol2 = nCol1; - nRow2 = nRow1; - nTab2 = nTab1; - break; - case svMatrix: - { - pQueryMatrix = PopMatrix(); - if (!pQueryMatrix) - { - PushIllegalParameter(); - return; - } - nCol1 = 0; - nRow1 = 0; - nTab1 = 0; - SCSIZE nC, nR; - pQueryMatrix->GetDimensions( nC, nR); - nCol2 = static_cast<SCCOL>(nC - 1); - nRow2 = static_cast<SCROW>(nR - 1); - nTab2 = 0; - } + case CELLTYPE_STRING : + case CELLTYPE_EDIT : + GetCellString(aString, pCell); break; default: - PushIllegalParameter(); - return ; + fVal = 0.0; + bIsString = false; } - if ( nTab1 != nTab2 ) + } + break; + case svString: + aString = GetString(); + break; + case svMatrix : + case svExternalDoubleRef: + { + ScMatValType nType = GetDoubleOrStringFromMatrix(fVal, aString); + bIsString = ScMatrix::IsNonValueType( nType); + } + break; + case svExternalSingleRef: + { + ScExternalRefCache::TokenRef pToken; + PopExternalSingleRef(pToken); + if (pToken) { - PushIllegalArgument(); - return; + if (pToken->GetType() == svDouble) + { + fVal = pToken->GetDouble(); + bIsString = false; + } + else + aString = pToken->GetString(); } + } + break; + default: + { + fVal = GetDouble(); + bIsString = false; + } + } - if (bSumExtraRange) - { - // Take the range geometry of the 1st parameter and apply it to - // the 3rd. If parts of the resulting range would point outside - // the sheet, don't complain but silently ignore and simply cut - // them away, this is what Xcl does :-/ - - // For the cut-away part we also don't need to determine the - // criteria match, so shrink the source range accordingly, - // instead of the result range. - SCCOL nColDelta = nCol2 - nCol1; - SCROW nRowDelta = nRow2 - nRow1; - SCCOL nMaxCol; - SCROW nMaxRow; - if (pSumExtraMatrix) + double fSum = 0.0; + double fMem = 0.0; + BOOL bNull = TRUE; + short nParam = 1; + size_t nRefInList = 0; + while (nParam-- > 0) + { + SCCOL nCol1; + SCROW nRow1; + SCTAB nTab1; + SCCOL nCol2; + SCROW nRow2; + SCTAB nTab2; + ScMatrixRef pQueryMatrix; + switch ( GetStackType() ) + { + case svRefList : + if (bSumExtraRange) { - SCSIZE nC, nR; - pSumExtraMatrix->GetDimensions( nC, nR); - nMaxCol = static_cast<SCCOL>(nC - 1); - nMaxRow = static_cast<SCROW>(nR - 1); + PushIllegalParameter(); + return; } else { - nMaxCol = MAXCOL; - nMaxRow = MAXROW; + ScRange aRange; + PopDoubleRef( aRange, nParam, nRefInList); + aRange.GetVars( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2); } - if (nCol3 + nColDelta > nMaxCol) + break; + case svDoubleRef : + PopDoubleRef( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2 ); + break; + case svSingleRef : + PopSingleRef( nCol1, nRow1, nTab1 ); + nCol2 = nCol1; + nRow2 = nRow1; + nTab2 = nTab1; + break; + case svMatrix: + case svExternalSingleRef: + case svExternalDoubleRef: + { + if (GetStackType() == svMatrix) + pQueryMatrix = PopMatrix(); + else if (GetStackType() == svExternalDoubleRef) + PopExternalDoubleRef(pQueryMatrix); + else { - SCCOL nNewDelta = nMaxCol - nCol3; - nCol2 = nCol1 + nNewDelta; + OSL_ENSURE(GetStackType() == svExternalSingleRef, "external single ref is expected, but that's not what we found."); + ScExternalRefCache::TokenRef pToken; + PopExternalSingleRef(pToken); + if (pToken) + { + pQueryMatrix = new ScMatrix(1, 1); + if (pToken->GetType() == svDouble) + pQueryMatrix->PutDouble(pToken->GetDouble(), 0, 0); + else + pQueryMatrix->PutString(pToken->GetString(), 0, 0); + } } - if (nRow3 + nRowDelta > nMaxRow) + if (!pQueryMatrix) { - SCROW nNewDelta = nMaxRow - nRow3; - nRow2 = nRow1 + nNewDelta; + PushIllegalParameter(); + return; } + nCol1 = 0; + nRow1 = 0; + nTab1 = 0; + SCSIZE nC, nR; + pQueryMatrix->GetDimensions( nC, nR); + nCol2 = static_cast<SCCOL>(nC - 1); + nRow2 = static_cast<SCROW>(nR - 1); + nTab2 = 0; + } + break; + default: + PushIllegalParameter(); + return ; + } + if ( nTab1 != nTab2 ) + { + PushIllegalArgument(); + return; + } + + if (bSumExtraRange) + { + // Take the range geometry of the 1st parameter and apply it to + // the 3rd. If parts of the resulting range would point outside + // the sheet, don't complain but silently ignore and simply cut + // them away, this is what Xcl does :-/ + + // For the cut-away part we also don't need to determine the + // criteria match, so shrink the source range accordingly, + // instead of the result range. + SCCOL nColDelta = nCol2 - nCol1; + SCROW nRowDelta = nRow2 - nRow1; + SCCOL nMaxCol; + SCROW nMaxRow; + if (pSumExtraMatrix) + { + SCSIZE nC, nR; + pSumExtraMatrix->GetDimensions( nC, nR); + nMaxCol = static_cast<SCCOL>(nC - 1); + nMaxRow = static_cast<SCROW>(nR - 1); } else { - nCol3 = nCol1; - nRow3 = nRow1; - nTab3 = nTab1; + nMaxCol = MAXCOL; + nMaxRow = MAXROW; + } + if (nCol3 + nColDelta > nMaxCol) + { + SCCOL nNewDelta = nMaxCol - nCol3; + nCol2 = nCol1 + nNewDelta; } - if (nGlobalError == 0) + if (nRow3 + nRowDelta > nMaxRow) { - ScQueryParam rParam; - rParam.nRow1 = nRow1; - rParam.nRow2 = nRow2; + SCROW nNewDelta = nMaxRow - nRow3; + nRow2 = nRow1 + nNewDelta; + } + } + else + { + nCol3 = nCol1; + nRow3 = nRow1; + nTab3 = nTab1; + } - ScQueryEntry& rEntry = rParam.GetEntry(0); - rEntry.bDoQuery = TRUE; - if (!bIsString) - { - rEntry.bQueryByString = FALSE; - rEntry.nVal = fVal; - rEntry.eOp = SC_EQUAL; - } - else + if (nGlobalError == 0) + { + ScQueryParam rParam; + rParam.nRow1 = nRow1; + rParam.nRow2 = nRow2; + + ScQueryEntry& rEntry = rParam.GetEntry(0); + rEntry.bDoQuery = TRUE; + if (!bIsString) + { + rEntry.bQueryByString = FALSE; + rEntry.nVal = fVal; + rEntry.eOp = SC_EQUAL; + } + else + { + rParam.FillInExcelSyntax(aString, 0); + sal_uInt32 nIndex = 0; + rEntry.bQueryByString = + !(pFormatter->IsNumberFormat( + *rEntry.pStr, nIndex, rEntry.nVal)); + if ( rEntry.bQueryByString ) + rParam.bRegExp = MayBeRegExp( *rEntry.pStr, pDok ); + } + ScAddress aAdr; + aAdr.SetTab( nTab3 ); + rParam.nCol1 = nCol1; + rParam.nCol2 = nCol2; + rEntry.nField = nCol1; + SCsCOL nColDiff = nCol3 - nCol1; + SCsROW nRowDiff = nRow3 - nRow1; + if (pQueryMatrix) + { + // Never case-sensitive. + ScCompareOptions aOptions( pDok, rEntry, rParam.bRegExp); + ScMatrixRef pResultMatrix = QueryMat( pQueryMatrix, aOptions); + if (nGlobalError || !pResultMatrix) { - rParam.FillInExcelSyntax(rString, 0); - sal_uInt32 nIndex = 0; - rEntry.bQueryByString = - !(pFormatter->IsNumberFormat( - *rEntry.pStr, nIndex, rEntry.nVal)); - if ( rEntry.bQueryByString ) - rParam.bRegExp = MayBeRegExp( *rEntry.pStr, pDok ); + PushIllegalParameter(); + return; } - ScAddress aAdr; - aAdr.SetTab( nTab3 ); - rParam.nCol1 = nCol1; - rParam.nCol2 = nCol2; - rEntry.nField = nCol1; - SCsCOL nColDiff = nCol3 - nCol1; - SCsROW nRowDiff = nRow3 - nRow1; - if (pQueryMatrix) - { - // Never case-sensitive. - ScCompareOptions aOptions( pDok, rEntry, rParam.bRegExp); - ScMatrixRef pResultMatrix = QueryMat( pQueryMatrix, aOptions); - if (nGlobalError || !pResultMatrix) - { - PushIllegalParameter(); - return; - } - if (pSumExtraMatrix) - { - for (SCCOL nCol = nCol1; nCol <= nCol2; ++nCol) - { - for (SCROW nRow = nRow1; nRow <= nRow2; ++nRow) - { - if (pResultMatrix->IsValue( nCol, nRow) && - pResultMatrix->GetDouble( nCol, nRow)) - { - SCSIZE nC = nCol + nColDiff; - SCSIZE nR = nRow + nRowDiff; - if (pSumExtraMatrix->IsValue( nC, nR)) - { - fVal = pSumExtraMatrix->GetDouble( nC, nR); - if ( bNull && fVal != 0.0 ) - { - bNull = FALSE; - fMem = fVal; - } - else - fSum += fVal; - } - } - } - } - } - else - { - for (SCCOL nCol = nCol1; nCol <= nCol2; ++nCol) - { - for (SCROW nRow = nRow1; nRow <= nRow2; ++nRow) - { - if (pResultMatrix->GetDouble( nCol, nRow)) - { - aAdr.SetCol( nCol + nColDiff); - aAdr.SetRow( nRow + nRowDiff); - ScBaseCell* pCell = GetCell( aAdr ); - if ( HasCellValueData(pCell) ) - { - fVal = GetCellValue( aAdr, pCell ); - if ( bNull && fVal != 0.0 ) - { - bNull = FALSE; - fMem = fVal; - } - else - fSum += fVal; - } - } - } - } - } - } - else + if (pSumExtraMatrix) { - ScQueryCellIterator aCellIter(pDok, nTab1, rParam, FALSE); - // Increment Entry.nField in iterator when switching to next column. - aCellIter.SetAdvanceQueryParamEntryField( TRUE ); - if ( aCellIter.GetFirst() ) + for (SCCOL nCol = nCol1; nCol <= nCol2; ++nCol) { - if (pSumExtraMatrix) + for (SCROW nRow = nRow1; nRow <= nRow2; ++nRow) { - do + if (pResultMatrix->IsValue( nCol, nRow) && + pResultMatrix->GetDouble( nCol, nRow)) { - SCSIZE nC = aCellIter.GetCol() + nColDiff; - SCSIZE nR = aCellIter.GetRow() + nRowDiff; + SCSIZE nC = nCol + nColDiff; + SCSIZE nR = nRow + nRowDiff; if (pSumExtraMatrix->IsValue( nC, nR)) { fVal = pSumExtraMatrix->GetDouble( nC, nR); @@ -5031,14 +5087,20 @@ void ScInterpreter::ScSumIf() else fSum += fVal; } - } while ( aCellIter.GetNext() ); + } } - else + } + } + else + { + for (SCCOL nCol = nCol1; nCol <= nCol2; ++nCol) + { + for (SCROW nRow = nRow1; nRow <= nRow2; ++nRow) { - do + if (pResultMatrix->GetDouble( nCol, nRow)) { - aAdr.SetCol( aCellIter.GetCol() + nColDiff); - aAdr.SetRow( aCellIter.GetRow() + nRowDiff); + aAdr.SetCol( nCol + nColDiff); + aAdr.SetRow( nRow + nRowDiff); ScBaseCell* pCell = GetCell( aAdr ); if ( HasCellValueData(pCell) ) { @@ -5051,19 +5113,67 @@ void ScInterpreter::ScSumIf() else fSum += fVal; } - } while ( aCellIter.GetNext() ); + } } } } } else { - PushIllegalParameter(); - return; + ScQueryCellIterator aCellIter(pDok, nTab1, rParam, FALSE); + // Increment Entry.nField in iterator when switching to next column. + aCellIter.SetAdvanceQueryParamEntryField( TRUE ); + if ( aCellIter.GetFirst() ) + { + if (pSumExtraMatrix) + { + do + { + SCSIZE nC = aCellIter.GetCol() + nColDiff; + SCSIZE nR = aCellIter.GetRow() + nRowDiff; + if (pSumExtraMatrix->IsValue( nC, nR)) + { + fVal = pSumExtraMatrix->GetDouble( nC, nR); + if ( bNull && fVal != 0.0 ) + { + bNull = FALSE; + fMem = fVal; + } + else + fSum += fVal; + } + } while ( aCellIter.GetNext() ); + } + else + { + do + { + aAdr.SetCol( aCellIter.GetCol() + nColDiff); + aAdr.SetRow( aCellIter.GetRow() + nRowDiff); + ScBaseCell* pCell = GetCell( aAdr ); + if ( HasCellValueData(pCell) ) + { + fVal = GetCellValue( aAdr, pCell ); + if ( bNull && fVal != 0.0 ) + { + bNull = FALSE; + fMem = fVal; + } + else + fSum += fVal; + } + } while ( aCellIter.GetNext() ); + } + } } } - PushDouble( ::rtl::math::approxAdd( fSum, fMem ) ); + else + { + PushIllegalParameter(); + return; + } } + PushDouble( ::rtl::math::approxAdd( fSum, fMem ) ); } @@ -5259,10 +5369,10 @@ void ScInterpreter::ScLookup() if (pResMat) { - if (pResMat->IsValue( 0 )) - PushDouble(pResMat->GetDouble( 0 )); + if (pResMat->IsValue( 0, 0 )) + PushDouble(pResMat->GetDouble( 0, 0 )); else - PushString(pResMat->GetString( 0 )); + PushString(pResMat->GetString( 0, 0 )); } else if (nParamCount == 3) { @@ -5339,6 +5449,8 @@ void ScInterpreter::ScLookup() pDataMat2 = pTempMat; } + VectorMatrixAccessor aMatAcc2(*pDataMat2, bVertical); + // binary search for non-equality mode (the source data is // assumed to be sorted in ascending order). @@ -5348,11 +5460,11 @@ void ScInterpreter::ScLookup() for (SCSIZE nLen = nLast-nFirst; nLen > 0; nLen = nLast-nFirst) { SCSIZE nMid = nFirst + nLen/2; - sal_Int32 nCmp = lcl_CompareMatrix2Query( nMid, *pDataMat2, rEntry); + sal_Int32 nCmp = lcl_CompareMatrix2Query( nMid, aMatAcc2, rEntry); if (nCmp == 0) { // exact match. find the last item with the same value. - lcl_GetLastMatch( nMid, *pDataMat2, nLenMajor, false); + lcl_GetLastMatch( nMid, aMatAcc2, nLenMajor, false); nDelta = nMid; bFound = true; break; @@ -5374,7 +5486,7 @@ void ScInterpreter::ScLookup() if (nDelta == static_cast<SCCOLROW>(nLenMajor-2)) // last item { - sal_Int32 nCmp = lcl_CompareMatrix2Query(nDelta+1, *pDataMat2, rEntry); + sal_Int32 nCmp = lcl_CompareMatrix2Query(nDelta+1, aMatAcc2, rEntry); if (nCmp <= 0) { // either the last item is an exact match or the real @@ -5395,11 +5507,12 @@ void ScInterpreter::ScLookup() if (bFound) { + VectorMatrixAccessor aMatAcc(*pDataMat, bVertical); SCCOLROW i = nDelta; - SCSIZE n = pDataMat->GetElementCount(); + SCSIZE n = aMatAcc.GetElementCount(); if (static_cast<SCSIZE>(i) >= n) i = static_cast<SCCOLROW>(n); - if (bool(rEntry.bQueryByString) == bool(pDataMat->IsValue(i))) + if (static_cast<bool>(rEntry.bQueryByString) == aMatAcc.IsValue(i)) bFound = false; } @@ -5413,16 +5526,17 @@ void ScInterpreter::ScLookup() if (pResMat) { + VectorMatrixAccessor aResMatAcc(*pResMat, bVertical); // result array is matrix. - if (static_cast<SCSIZE>(nDelta) >= pResMat->GetElementCount()) + if (static_cast<SCSIZE>(nDelta) >= aResMatAcc.GetElementCount()) { PushNA(); return; } - if (pResMat->IsValue(nDelta)) - PushDouble(pResMat->GetDouble(nDelta)); + if (aResMatAcc.IsValue(nDelta)) + PushDouble(aResMatAcc.GetDouble(nDelta)); else - PushString(pResMat->GetString(nDelta)); + PushString(aResMatAcc.GetString(nDelta)); } else if (nParamCount == 3) { @@ -5507,11 +5621,12 @@ void ScInterpreter::ScLookup() if (pResMat) { + VectorMatrixAccessor aResMatAcc(*pResMat, bVertical); // Use the matrix result array. - if (pResMat->IsValue(nDelta)) - PushDouble(pResMat->GetDouble(nDelta)); + if (aResMatAcc.IsValue(nDelta)) + PushDouble(aResMatAcc.GetDouble(nDelta)); else - PushString(pResMat->GetString(nDelta)); + PushString(aResMatAcc.GetString(nDelta)); } else if (nParamCount == 3) { @@ -6646,8 +6761,7 @@ void ScInterpreter::ScOffset() nCol1 = (SCCOL)((long)nCol1+nColPlus); // ! nCol1 wird veraendert! nRow1 = (SCROW)((long)nRow1+nRowPlus); nCol2 = (SCCOL)((long)nCol1+nColNew-1); - nRow2 = (SCROW)((long)nRow1+nRowNew-1); - PushIllegalArgument(); + nTab2 = nTab1; if (!ValidCol(nCol1) || !ValidRow(nRow1) || !ValidCol(nCol2) || !ValidRow(nRow2)) PushIllegalArgument(); @@ -7212,10 +7326,10 @@ void ScInterpreter::ScRight() void ScInterpreter::ScSearch() { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScSearch" ); - double fAnz; BYTE nParamCount = GetByte(); if ( MustHaveParamCount( nParamCount, 2, 3 ) ) { + double fAnz; if (nParamCount == 3) { fAnz = ::rtl::math::approxFloor(GetDouble()); @@ -7288,7 +7402,7 @@ void ScInterpreter::ScText() FormulaTokenRef xTok( PopToken()); if (!nGlobalError) { - PushTempToken( xTok); + PushTempToken( xTok.get()); // Temporarily override the ConvertStringToValue() // error for GetCellValue() / GetCellValueOrZero() USHORT nSErr = mnStringNoValueError; @@ -7299,7 +7413,7 @@ void ScInterpreter::ScText() { // Not numeric. nGlobalError = 0; - PushTempToken( xTok); + PushTempToken( xTok.get()); aStr = GetString(); bString = true; } diff --git a/sc/source/core/tool/interpr2.cxx b/sc/source/core/tool/interpr2.cxx index 599d2ba08e3b..1979997c79c3 100644 --- a/sc/source/core/tool/interpr2.cxx +++ b/sc/source/core/tool/interpr2.cxx @@ -352,11 +352,11 @@ void ScInterpreter::ScGetDiffDate360() bFlag = FALSE; double nDate2 = GetDouble(); double nDate1 = GetDouble(); - double fSign; if (nGlobalError) PushError( nGlobalError); else { + double fSign; // #i84934# only for non-US European algorithm swap dates. Else // follow Excel's meaningless extrapolation for "interoperability". if (bFlag && (nDate2 < nDate1)) @@ -765,12 +765,7 @@ void ScInterpreter::ScMIRR() if( MustHaveParamCount( GetByte(), 3 ) ) { double fRate1_reinvest = GetDouble() + 1; - double fNPV_reinvest = 0.0; - double fPow_reinvest = 1.0; - double fRate1_invest = GetDouble() + 1; - double fNPV_invest = 0.0; - double fPow_invest = 1.0; ScRange aRange; PopDoubleRef( aRange ); @@ -779,6 +774,10 @@ void ScInterpreter::ScMIRR() PushError( nGlobalError); else { + double fNPV_reinvest = 0.0; + double fPow_reinvest = 1.0; + double fNPV_invest = 0.0; + double fPow_invest = 1.0; ScValueIterator aValIter( pDok, aRange, glSubTotal ); double fCellValue; ULONG nCount = 0; @@ -1082,7 +1081,6 @@ void ScInterpreter::ScVDB() { double fDauer1=fDauer; - double fPart; //@Die Frage aller Fragen: "Ist das hier richtig" if(!::rtl::math::approxEqual(fAnfang,::rtl::math::approxFloor(fAnfang))) @@ -1091,7 +1089,7 @@ void ScInterpreter::ScVDB() { if(fAnfang>fDauer/2 || ::rtl::math::approxEqual(fAnfang,fDauer/2)) { - fPart=fAnfang-fDauer/2; + double fPart=fAnfang-fDauer/2; fAnfang=fDauer/2; fEnde-=fPart; fDauer1+=1; @@ -1398,7 +1396,7 @@ double ScInterpreter::ScGetZinsZ(double fZins, double fZr, double fZzr, double f void ScInterpreter::ScZinsZ() { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScZinsZ" ); - double nZins, nZr, nRmz, nZzr, nBw, nZw = 0, nFlag = 0; + double nZins, nZr, nZzr, nBw, nZw = 0, nFlag = 0; nFuncFmtType = NUMBERFORMAT_CURRENCY; BYTE nParamCount = GetByte(); if ( !MustHaveParamCount( nParamCount, 4, 6 ) ) @@ -1414,13 +1412,16 @@ void ScInterpreter::ScZinsZ() if (nZr < 1.0 || nZr > nZzr) PushIllegalArgument(); else + { + double nRmz; PushDouble(ScGetZinsZ(nZins, nZr, nZzr, nBw, nZw, nFlag, nRmz)); + } } void ScInterpreter::ScKapz() { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScKapz" ); - double nZins, nZr, nZzr, nBw, nZw = 0, nFlag = 0, nRmz, nZinsz; + double nZins, nZr, nZzr, nBw, nZw = 0, nFlag = 0; nFuncFmtType = NUMBERFORMAT_CURRENCY; BYTE nParamCount = GetByte(); if ( !MustHaveParamCount( nParamCount, 4, 6 ) ) @@ -1437,7 +1438,8 @@ void ScInterpreter::ScKapz() PushIllegalArgument(); else { - nZinsz = ScGetZinsZ(nZins, nZr, nZzr, nBw, nZw, nFlag, nRmz); + double nRmz; + double nZinsz = ScGetZinsZ(nZins, nZr, nZzr, nBw, nZw, nFlag, nRmz); PushDouble(nRmz - nZinsz); } } @@ -1448,7 +1450,7 @@ void ScInterpreter::ScKumZinsZ() nFuncFmtType = NUMBERFORMAT_CURRENCY; if ( MustHaveParamCount( GetByte(), 6 ) ) { - double fZins, fZzr, fBw, fAnfang, fEnde, fF, fRmz, fZinsZ; + double fZins, fZzr, fBw, fAnfang, fEnde, fF; fF = GetDouble(); fEnde = ::rtl::math::approxFloor(GetDouble()); fAnfang = ::rtl::math::approxFloor(GetDouble()); @@ -1462,8 +1464,8 @@ void ScInterpreter::ScKumZinsZ() { ULONG nAnfang = (ULONG) fAnfang; ULONG nEnde = (ULONG) fEnde ; - fRmz = ScGetRmz(fZins, fZzr, fBw, 0.0, fF); - fZinsZ = 0.0; + double fRmz = ScGetRmz(fZins, fZzr, fBw, 0.0, fF); + double fZinsZ = 0.0; if (nAnfang == 1) { if (fF <= 0.0) @@ -1489,7 +1491,7 @@ void ScInterpreter::ScKumKapZ() nFuncFmtType = NUMBERFORMAT_CURRENCY; if ( MustHaveParamCount( GetByte(), 6 ) ) { - double fZins, fZzr, fBw, fAnfang, fEnde, fF, fRmz, fKapZ; + double fZins, fZzr, fBw, fAnfang, fEnde, fF; fF = GetDouble(); fEnde = ::rtl::math::approxFloor(GetDouble()); fAnfang = ::rtl::math::approxFloor(GetDouble()); @@ -1501,8 +1503,8 @@ void ScInterpreter::ScKumKapZ() PushIllegalArgument(); else { - fRmz = ScGetRmz(fZins, fZzr, fBw, 0.0, fF); - fKapZ = 0.0; + double fRmz = ScGetRmz(fZins, fZzr, fBw, 0.0, fF); + double fKapZ = 0.0; ULONG nAnfang = (ULONG) fAnfang; ULONG nEnde = (ULONG) fEnde; if (nAnfang == 1) @@ -1760,7 +1762,6 @@ void ScInterpreter::ScBackSolver() // Try a nice rounded input value if possible. const double fNiceDelta = (bDoneIteration && fabs(fBestX) >= 1e-3 ? 1e-3 : fDelta); double nX = ::rtl::math::approxFloor((fBestX / fNiceDelta) + 0.5) * fNiceDelta; -// double nX = ::rtl::math::approxFloor((fBestX / fDelta) + 0.5) * fDelta; if ( bDoneIteration ) { @@ -1895,7 +1896,7 @@ void ScInterpreter::ScIntersect() PushTempToken( new ScDoubleRefToken( rRef)); } else - PushTempToken( xRes); + PushTempToken( xRes.get()); } else { @@ -1966,7 +1967,7 @@ void ScInterpreter::ScRangeFunc() if (!xRes) PushIllegalArgument(); else - PushTempToken( xRes); + PushTempToken( xRes.get()); } @@ -2044,7 +2045,7 @@ void ScInterpreter::ScUnionFunc() } } ValidateRef( *pRes); // set #REF! if needed - PushTempToken( xRes); + PushTempToken( xRes.get()); } @@ -2054,8 +2055,8 @@ void ScInterpreter::ScCurrent() FormulaTokenRef xTok( PopToken()); if (xTok) { - PushTempToken( xTok); - PushTempToken( xTok); + PushTempToken( xTok.get()); + PushTempToken( xTok.get()); } else PushError( errUnknownStackVariable); @@ -2229,13 +2230,13 @@ void ScInterpreter::ScBase() BYTE nParamCount = GetByte(); if ( MustHaveParamCount( nParamCount, 2, 3 ) ) { - static const sal_Unicode __FAR_DATA pDigits[] = { + static const sal_Unicode pDigits[] = { '0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z', 0 }; - static const int nDigits = (sizeof(pDigits)/sizeof(sal_Unicode))-1; + static const int nDigits = SAL_N_ELEMENTS(pDigits)-1; xub_StrLen nMinLen; if ( nParamCount == 3 ) { @@ -2713,7 +2714,6 @@ void ScInterpreter::ScEuroConvert() PushError( nGlobalError); else { - double fRes; double fFromRate; double fToRate; int nFromDec; @@ -2722,6 +2722,7 @@ void ScInterpreter::ScEuroConvert() if ( lclConvertMoney( aFromUnit, fFromRate, nFromDec ) && lclConvertMoney( aToUnit, fToRate, nToDec ) ) { + double fRes; if ( aFromUnit.EqualsIgnoreCaseAscii( aToUnit ) ) fRes = fVal; else diff --git a/sc/source/core/tool/interpr3.cxx b/sc/source/core/tool/interpr3.cxx index 0b702777d8e8..395562d30855 100644 --- a/sc/source/core/tool/interpr3.cxx +++ b/sc/source/core/tool/interpr3.cxx @@ -57,8 +57,6 @@ using namespace formula; #define SCdEpsilon 1.0E-7 #define SC_MAX_ITERATION_COUNT 20 #define MAX_ANZ_DOUBLE_FOR_SORT 100000 -// PI jetzt als F_PI aus solar.h -//#define PI 3.1415926535897932 const double ScInterpreter::fMaxGammaArgument = 171.624376956302; // found experimental const double fMachEps = ::std::numeric_limits<double>::epsilon(); @@ -462,10 +460,6 @@ double ScInterpreter::Fakultaet(double x) } else SetError(errNoValue); -/* // Stirlingsche Naeherung zu ungenau - else - x = pow(x/exp(1), x) * sqrt(x) * SQRT_2_PI * (1.0 + 1.0 / (12.0 * x)); -*/ return x; } @@ -489,25 +483,11 @@ double ScInterpreter::BinomKoeff(double n, double k) k--; n--; } -/* - double f1 = n; // Zaehler - double f2 = k; // Nenner - n--; - k--; - while (k > 0.0) - { - f2 *= k; - f1 *= n; - k--; - n--; - } - nVal = f1 / f2; -*/ + } return nVal; } - // The algorithm is based on lanczos13m53 in lanczos.hpp // in math library from http://www.boost.org /** you must ensure fZ>0 @@ -548,7 +528,6 @@ double lcl_getLanczosSum(double fZ) double fSumNum; double fSumDenom; int nI; - double fZInv; if (fZ<=1.0) { fSumNum = fNum[12]; @@ -564,7 +543,7 @@ double lcl_getLanczosSum(double fZ) else // Cancel down with fZ^12; Horner scheme with reverse coefficients { - fZInv = 1/fZ; + double fZInv = 1/fZ; fSumNum = fNum[0]; fSumDenom = fDenom[0]; for (nI = 1; nI <=12; ++nI) @@ -651,7 +630,6 @@ double ScInterpreter::GetGamma(double fZ) return exp( fLogPi - fLogDivisor) * ((::rtl::math::sin( F_PI*fZ) < 0.0) ? -1.0 : 1.0); } - /** You must ensure fZ>0 */ double ScInterpreter::GetLogGamma(double fZ) { @@ -672,48 +650,12 @@ double ScInterpreter::GetFDist(double x, double fF1, double fF2) double alpha = fF2/2.0; double beta = fF1/2.0; return (GetBetaDist(arg, alpha, beta)); -/* - double Z = (pow(fF,1.0/3.0)*(1.0-2.0/(9.0*fF2)) - (1.0-2.0/(9.0*fF1))) / - sqrt(2.0/(9.0*fF1) + pow(fF,2.0/3.0)*2.0/(9.0*fF2)); - return (0.5-gauss(Z)); -*/ } double ScInterpreter::GetTDist(double T, double fDF) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::GetTDist" ); return 0.5 * GetBetaDist(fDF/(fDF+T*T), fDF/2.0, 0.5); -/* - USHORT DF = (USHORT) fDF; - double A = T / sqrt(DF); - double B = 1.0 + A*A; - double R; - if (DF == 1) - R = 0.5 + atan(A)/F_PI; - else if (DF % 2 == 0) - { - double S0 = A/(2.0 * sqrt(B)); - double C0 = S0; - for (USHORT i = 2; i <= DF-2; i+=2) - { - C0 *= (1.0 - 1.0/(double)i)/B; - S0 += C0; - } - R = 0.5 + S0; - } - else - { - double S1 = A / (B * F_PI); - double C1 = S1; - for (USHORT i = 3; i <= DF-2; i+=2) - { - C1 *= (1.0 - 1.0/(double)i)/B; - S1 += C1; - } - R = 0.5 + atan(A)/F_PI + S1; - } - return 1.0 - R; -*/ } // for LEGACY.CHIDIST, returns right tail, fDF=degrees of freedom @@ -744,7 +686,6 @@ double ScInterpreter::GetChiSqDistPDF(double fX, double fDF) { // you must ensure fDF is positive integer double fValue; - double fCount; if (fX <= 0.0) return 0.0; // see ODFF if (fDF*fX > 1391000.0) @@ -754,6 +695,7 @@ double ScInterpreter::GetChiSqDistPDF(double fX, double fDF) } else // fDF is small in most cases, we can iterate { + double fCount; if (fmod(fDF,2.0)<0.5) { // even @@ -783,7 +725,6 @@ void ScInterpreter::ScChiSqDist() BYTE nParamCount = GetByte(); if ( !MustHaveParamCount( nParamCount, 2, 3 ) ) return; - double fX; bool bCumulative; if (nParamCount == 3) bCumulative = GetBool(); @@ -794,7 +735,7 @@ void ScInterpreter::ScChiSqDist() PushIllegalArgument(); else { - fX = GetDouble(); + double fX = GetDouble(); if (bCumulative) PushDouble(GetChiSqDistCDF(fX,fDF)); else @@ -806,12 +747,11 @@ void ScInterpreter::ScGamma() { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScGamma" ); double x = GetDouble(); - double fResult; if (x <= 0.0 && x == ::rtl::math::approxFloor(x)) PushIllegalArgument(); else { - fResult = GetGamma(x); + double fResult = GetGamma(x); if (nGlobalError) { PushError( nGlobalError); @@ -821,7 +761,6 @@ void ScInterpreter::ScGamma() } } - void ScInterpreter::ScLogGamma() { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScLogGamma" ); @@ -963,7 +902,6 @@ double ScInterpreter::GetBetaDistPDF(double fX, double fA, double fB) return exp((fA-1.0)*fLogX + (fB-1.0)* fLogY - fLogBeta); } - /* x^a * (1-x)^b I_x(a,b) = ---------------- * result of ContFrac @@ -1370,7 +1308,7 @@ void ScInterpreter::ScBinomDist() double p = GetDouble(); // p double n = ::rtl::math::approxFloor(GetDouble()); // n double x = ::rtl::math::approxFloor(GetDouble()); // x - double fFactor, q, fSum; + double fFactor, q; if (n < 0.0 || x < 0.0 || x > n || p < 0.0 || p > 1.0) PushIllegalArgument(); else if (kum == 0.0) // Dichte @@ -1404,6 +1342,7 @@ void ScInterpreter::ScBinomDist() PushDouble(1.0); else { + double fSum; q = 1.0 - p; fFactor = pow(q, n); if (fFactor == 0.0) @@ -2250,7 +2189,6 @@ public: double GetValue( double x ) const { return fp - rInt.GetChiSqDistCDF(x, fDF); } }; - void ScInterpreter::ScChiSqInv() { if ( !MustHaveParamCount( GetByte(), 2 ) ) @@ -2271,7 +2209,6 @@ void ScInterpreter::ScChiSqInv() PushDouble(fVal); } - void ScInterpreter::ScConfidence() { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScConfidence" ); @@ -2458,9 +2395,6 @@ bool ScInterpreter::CalculateTest(BOOL _bTemplin } fT = fabs(fSum1/fCount1 - fSum2/fCount2)/sqrt(fS1+fS2); double c = fS1/(fS1+fS2); -// s.u. fF = ::rtl::math::approxFloor(1.0/(c*c/(fCount1-1.0)+(1.0-c)*(1.0-c)/(fCount2-1.0))); -// fF = ::rtl::math::approxFloor((fS1+fS2)*(fS1+fS2)/(fS1*fS1/(fCount1-1.0) + fS2*fS2/(fCount2-1.0))); - // GetTDist wird mit GetBetaDist berechnet und kommt auch mit nicht ganzzahligen // Freiheitsgraden klar. Dann stimmt das Ergebnis auch mit Excel ueberein (#52406#): fF = 1.0/(c*c/(fCount1-1.0)+(1.0-c)*(1.0-c)/(fCount2-1.0)); @@ -2629,11 +2563,6 @@ void ScInterpreter::ScFTest() fF2 = fCount1-1.0; } PushDouble(2.0*GetFDist(fF, fF1, fF2)); -/* - double Z = (pow(fF,1.0/3.0)*(1.0-2.0/(9.0*fF2)) - (1.0-2.0/(9.0*fF1))) / - sqrt(2.0/(9.0*fF1) + pow(fF,2.0/3.0)*2.0/(9.0*fF2)); - PushDouble(1.0-2.0*gauss(Z)); -*/ } void ScInterpreter::ScChiTest() @@ -2688,25 +2617,6 @@ void ScInterpreter::ScChiTest() else fDF = (double)(nC1-1)*(double)(nR1-1); PushDouble(GetChiDist(fChi, fDF)); -/* - double fX, fS, fT, fG; - fX = 1.0; - for (double fi = fDF; fi >= 2.0; fi -= 2.0) - fX *= fChi/fi; - fX *= exp(-fChi/2.0); - if (fmod(fDF, 2.0) != 0.0) - fX *= sqrt(2.0*fChi/F_PI); - fS = 1.0; - fT = 1.0; - fG = fDF; - while (fT >= 1.0E-7) - { - fG += 2.0; - fT *= fChi/fG; - fS += fT; - } - PushDouble(1.0 - fX*fS); -*/ } void ScInterpreter::ScKurt() @@ -3307,7 +3217,6 @@ void ScInterpreter::CalculateSmallLarge(BOOL bSmall) * actually are defined to return an array of values if an array of * positions was passed, in which case, depending on the number of values, * we may or will need a real sorted array again, see #i32345. */ - //GetSortArray(1, aSortArray); GetNumberSequenceArray(1, aSortArray); SCSIZE nSize = aSortArray.size(); if (aSortArray.empty() || nSize == 0 || nGlobalError || nSize < k) @@ -3918,24 +3827,26 @@ void ScInterpreter::ScProbability() double fRes = 0.0; BOOL bStop = FALSE; double fP, fW; - SCSIZE nCount1 = nC1 * nR1; - for ( SCSIZE i = 0; i < nCount1 && !bStop; i++ ) + for ( SCSIZE i = 0; i < nC1 && !bStop; i++ ) { - if (pMatP->IsValue(i) && pMatW->IsValue(i)) + for (SCSIZE j = 0; j < nR1 && !bStop; ++j ) { - fP = pMatP->GetDouble(i); - fW = pMatW->GetDouble(i); - if (fP < 0.0 || fP > 1.0) - bStop = TRUE; - else + if (pMatP->IsValue(i,j) && pMatW->IsValue(i,j)) { - fSum += fP; - if (fW >= fLo && fW <= fUp) - fRes += fP; + fP = pMatP->GetDouble(i,j); + fW = pMatW->GetDouble(i,j); + if (fP < 0.0 || fP > 1.0) + bStop = TRUE; + else + { + fSum += fP; + if (fW >= fLo && fW <= fUp) + fRes += fP; + } } + else + SetError( errIllegalArgument); } - else - SetError( errIllegalArgument); } if (bStop || fabs(fSum -1.0) > 1.0E-7) PushNoValue(); diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx index a1be4455d31b..52a1a7618b23 100644 --- a/sc/source/core/tool/interpr4.cxx +++ b/sc/source/core/tool/interpr4.cxx @@ -101,9 +101,10 @@ using ::std::auto_ptr; void ScInterpreter::ReplaceCell( ScAddress& rPos ) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ReplaceCell" ); - ScInterpreterTableOpParams* pTOp = pDok->aTableOpList.First(); - while (pTOp) + size_t ListSize = pDok->aTableOpList.size(); + for ( size_t i = 0; i < ListSize; ++i ) { + ScInterpreterTableOpParams* pTOp = &pDok->aTableOpList[ i ]; if ( rPos == pTOp->aOld1 ) { rPos = pTOp->aNew1; @@ -114,8 +115,6 @@ void ScInterpreter::ReplaceCell( ScAddress& rPos ) rPos = pTOp->aNew2; return ; } - else - pTOp = pDok->aTableOpList.Next(); } } @@ -124,9 +123,10 @@ void ScInterpreter::ReplaceCell( SCCOL& rCol, SCROW& rRow, SCTAB& rTab ) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ReplaceCell" ); ScAddress aCellPos( rCol, rRow, rTab ); - ScInterpreterTableOpParams* pTOp = pDok->aTableOpList.First(); - while (pTOp) + size_t ListSize = pDok->aTableOpList.size(); + for ( size_t i = 0; i < ListSize; ++i ) { + ScInterpreterTableOpParams* pTOp = &pDok->aTableOpList[ i ]; if ( aCellPos == pTOp->aOld1 ) { rCol = pTOp->aNew1.Col(); @@ -141,8 +141,6 @@ void ScInterpreter::ReplaceCell( SCCOL& rCol, SCROW& rRow, SCTAB& rTab ) rTab = pTOp->aNew2.Tab(); return ; } - else - pTOp = pDok->aTableOpList.Next(); } } @@ -154,14 +152,14 @@ BOOL ScInterpreter::IsTableOpInRange( const ScRange& rRange ) return FALSE; // not considered to be a range in TableOp sense // we can't replace a single cell in a range - ScInterpreterTableOpParams* pTOp = pDok->aTableOpList.First(); - while (pTOp) + size_t ListSize = pDok->aTableOpList.size(); + for ( size_t i = 0; i < ListSize; ++i ) { + ScInterpreterTableOpParams* pTOp = &pDok->aTableOpList[ i ]; if ( rRange.In( pTOp->aOld1 ) ) return TRUE; if ( rRange.In( pTOp->aOld2 ) ) return TRUE; - pTOp = pDok->aTableOpList.Next(); } return FALSE; } @@ -1183,7 +1181,7 @@ void ScInterpreter::PopSingleRef(SCCOL& rCol, SCROW &rRow, SCTAB& rTab) break; case svSingleRef: SingleRefToVars( static_cast<ScToken*>(p)->GetSingleRef(), rCol, rRow, rTab); - if ( pDok->aTableOpList.Count() > 0 ) + if ( !pDok->aTableOpList.empty() ) ReplaceCell( rCol, rRow, rTab ); break; default: @@ -1214,7 +1212,7 @@ void ScInterpreter::PopSingleRef( ScAddress& rAdr ) SCTAB nTab; SingleRefToVars( static_cast<ScToken*>(p)->GetSingleRef(), nCol, nRow, nTab); rAdr.Set( nCol, nRow, nTab ); - if ( pDok->aTableOpList.Count() > 0 ) + if ( !pDok->aTableOpList.empty() ) ReplaceCell( rAdr ); } break; @@ -1236,7 +1234,7 @@ void ScInterpreter::DoubleRefToVars( const ScToken* p, const ScComplexRefData& rCRef = p->GetDoubleRef(); SingleRefToVars( rCRef.Ref1, rCol1, rRow1, rTab1); SingleRefToVars( rCRef.Ref2, rCol2, rRow2, rTab2); - if ( pDok->aTableOpList.Count() > 0 && !bDontCheckForTableOp ) + if ( !pDok->aTableOpList.empty() && !bDontCheckForTableOp ) { ScRange aRange( rCol1, rRow1, rTab1, rCol2, rRow2, rTab2 ); if ( IsTableOpInRange( aRange ) ) @@ -1321,7 +1319,7 @@ void ScInterpreter::DoubleRefToRange( const ScComplexRefData & rCRef, rRange.aStart.Set( nCol, nRow, nTab ); SingleRefToVars( rCRef.Ref2, nCol, nRow, nTab); rRange.aEnd.Set( nCol, nRow, nTab ); - if ( pDok->aTableOpList.Count() > 0 && !bDontCheckForTableOp ) + if (! pDok->aTableOpList.empty() && !bDontCheckForTableOp ) { if ( IsTableOpInRange( rRange ) ) SetError( errIllegalParameter ); @@ -1576,13 +1574,11 @@ BOOL ScInterpreter::PopDoubleRefOrSingleRef( ScAddress& rAdr ) PopDoubleRef( aRange, TRUE ); return DoubleRefToPosSingleRef( aRange, rAdr ); } - //break; case svSingleRef : { PopSingleRef( rAdr ); return TRUE; } - //break; default: PopError(); SetError( errNoRef ); @@ -1623,7 +1619,7 @@ bool ScInterpreter::ConvertMatrixParameters() for ( USHORT i=1; i <= nParams && i <= sp; ++i ) { FormulaToken* p = pStack[ sp - i ]; - if ( p->GetOpCode() != ocPush ) + if ( p->GetOpCode() != ocPush && p->GetOpCode() != ocMissing) { DBG_ERRORFILE( "ConvertMatrixParameters: not a push"); } @@ -1737,7 +1733,7 @@ bool ScInterpreter::ConvertMatrixParameters() GetTokenMatrixMap().insert( ScTokenMatrixMap::value_type( pCur, xNew)); } - PushTempToken( xNew); + PushTempToken( xNew.get()); // set continuation point of path for main code line aCode.Jump( nNext, nNext); return true; @@ -1780,42 +1776,37 @@ void ScInterpreter::QueryMatrixType(ScMatrixRef& xMat, short& rRetTypeExpr, ULON { if (xMat) { - ScMatValType nMatValType; - const ScMatrixValue* pMatVal = xMat->Get(0, 0, nMatValType); - if ( pMatVal ) + ScMatrixValue nMatVal = xMat->Get(0, 0); + ScMatValType nMatValType = nMatVal.nType; + if (ScMatrix::IsNonValueType( nMatValType)) { - if (ScMatrix::IsNonValueType( nMatValType)) - { - if ( xMat->IsEmptyPath( 0, 0)) - { // result of empty FALSE jump path - FormulaTokenRef xRes = new FormulaDoubleToken( 0.0); - PushTempToken( new ScMatrixCellResultToken( xMat, xRes)); - rRetTypeExpr = NUMBERFORMAT_LOGICAL; - } - else - { - String aStr( pMatVal->GetString()); - FormulaTokenRef xRes = new FormulaStringToken( aStr); - PushTempToken( new ScMatrixCellResultToken( xMat, xRes)); - rRetTypeExpr = NUMBERFORMAT_TEXT; - } + if ( xMat->IsEmptyPath( 0, 0)) + { // result of empty FALSE jump path + FormulaTokenRef xRes = new FormulaDoubleToken( 0.0); + PushTempToken( new ScMatrixCellResultToken( xMat, xRes.get())); + rRetTypeExpr = NUMBERFORMAT_LOGICAL; } else { - USHORT nErr = GetDoubleErrorValue( pMatVal->fVal); - FormulaTokenRef xRes; - if (nErr) - xRes = new FormulaErrorToken( nErr); - else - xRes = new FormulaDoubleToken( pMatVal->fVal); - PushTempToken( new ScMatrixCellResultToken( xMat, xRes)); - if ( rRetTypeExpr != NUMBERFORMAT_LOGICAL ) - rRetTypeExpr = NUMBERFORMAT_NUMBER; + String aStr( nMatVal.GetString()); + FormulaTokenRef xRes = new FormulaStringToken( aStr); + PushTempToken( new ScMatrixCellResultToken( xMat, xRes.get())); + rRetTypeExpr = NUMBERFORMAT_TEXT; } - rRetIndexExpr = 0; } else - SetError( errUnknownStackVariable); + { + USHORT nErr = GetDoubleErrorValue( nMatVal.fVal); + FormulaTokenRef xRes; + if (nErr) + xRes = new FormulaErrorToken( nErr); + else + xRes = new FormulaDoubleToken( nMatVal.fVal); + PushTempToken( new ScMatrixCellResultToken( xMat, xRes.get())); + if ( rRetTypeExpr != NUMBERFORMAT_LOGICAL ) + rRetTypeExpr = NUMBERFORMAT_NUMBER; + } + rRetIndexExpr = 0; xMat->SetErrorInterpreter( NULL); } else @@ -1926,7 +1917,7 @@ void ScInterpreter::PushExternalDoubleRef( } -void ScInterpreter::PushMatrix(ScMatrix* pMat) +void ScInterpreter::PushMatrix(const ScMatrixRef& pMat) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::PushMatrix" ); pMat->SetErrorInterpreter( NULL); @@ -2243,12 +2234,10 @@ const String& ScInterpreter::GetString() case svError: PopError(); return EMPTY_STRING; - //break; case svMissing: case svEmptyCell: Pop(); return EMPTY_STRING; - //break; case svDouble: { double fVal = PopDouble(); @@ -2258,10 +2247,8 @@ const String& ScInterpreter::GetString() pFormatter->GetInputLineString(fVal, nIndex, aTempStr); return aTempStr; } - //break; case svString: return PopString(); - //break; case svSingleRef: { ScAddress aAdr; @@ -2275,7 +2262,6 @@ const String& ScInterpreter::GetString() else return EMPTY_STRING; } - //break; case svDoubleRef: { // generate position dependent SingleRef ScRange aRange; @@ -2302,7 +2288,6 @@ const String& ScInterpreter::GetString() PopExternalDoubleRef(pMat); return GetStringFromMatrix(pMat); } - //break; case svMatrix: { ScMatrixRef pMat = PopMatrix(); @@ -2345,49 +2330,62 @@ ScMatValType ScInterpreter::GetDoubleOrStringFromMatrix( double& rDouble, String& rString ) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::GetDoubleOrStringFromMatrix" ); + + rDouble = 0.0; + rString.Erase(); ScMatValType nMatValType = SC_MATVAL_EMPTY; - switch ( GetStackType() ) + + ScMatrixRef pMat; + StackVar eType = GetStackType(); + if (eType == svExternalDoubleRef) { - case svMatrix: - { - const ScMatrixValue* pMatVal = 0; - ScMatrixRef pMat = PopMatrix(); - if (!pMat) - ; // nothing - else if (!pJumpMatrix) - pMatVal = pMat->Get( 0, 0, nMatValType); - else - { - SCSIZE nCols, nRows, nC, nR; - pMat->GetDimensions( nCols, nRows); - pJumpMatrix->GetPos( nC, nR); - if ( nC < nCols && nR < nRows ) - pMatVal = pMat->Get( nC, nR, nMatValType); - else - SetError( errNoValue); - } - if (!pMatVal) - { - rDouble = 0.0; - rString.Erase(); - } - else if (nMatValType == SC_MATVAL_VALUE) - rDouble = pMatVal->fVal; - else if (nMatValType == SC_MATVAL_BOOLEAN) - { - rDouble = pMatVal->fVal; - nMatValType = SC_MATVAL_VALUE; - } - else - rString = pMatVal->GetString(); - } - break; - default: - PopError(); - rDouble = 0.0; - rString.Erase(); - SetError( errIllegalParameter); + PopExternalDoubleRef(pMat); + } + else if (eType == svMatrix) + { + pMat = PopMatrix(); + } + else + { + PopError(); + SetError( errIllegalParameter); + return nMatValType; + } + + ScMatrixValue nMatVal; + if (!pMat) + { + // nothing + } + else if (!pJumpMatrix) + { + nMatVal = pMat->Get(0, 0); + nMatValType = nMatVal.nType; + } + else + { + SCSIZE nCols, nRows, nC, nR; + pMat->GetDimensions( nCols, nRows); + pJumpMatrix->GetPos( nC, nR); + if ( nC < nCols && nR < nRows ) + { + nMatVal = pMat->Get( nC, nR); + nMatValType = nMatVal.nType; + } + else + SetError( errNoValue); } + + if (nMatValType == SC_MATVAL_VALUE) + rDouble = nMatVal.fVal; + else if (nMatValType == SC_MATVAL_BOOLEAN) + { + rDouble = nMatVal.fVal; + nMatValType = SC_MATVAL_VALUE; + } + else + rString = nMatVal.GetString(); + return nMatValType; } @@ -2710,7 +2708,7 @@ void ScInterpreter::ScExternal() } break; case svMatrix: - if (!ScRangeToSequence::FillLongArray( aParam, PopMatrix() )) + if (!ScRangeToSequence::FillLongArray( aParam, PopMatrix().get() )) SetError(errIllegalParameter); break; default: @@ -2741,7 +2739,7 @@ void ScInterpreter::ScExternal() } break; case svMatrix: - if (!ScRangeToSequence::FillDoubleArray( aParam, PopMatrix() )) + if (!ScRangeToSequence::FillDoubleArray( aParam, PopMatrix().get() )) SetError(errIllegalParameter); break; default: @@ -2772,7 +2770,7 @@ void ScInterpreter::ScExternal() } break; case svMatrix: - if (!ScRangeToSequence::FillStringArray( aParam, PopMatrix(), pFormatter )) + if (!ScRangeToSequence::FillStringArray( aParam, PopMatrix().get(), pFormatter )) SetError(errIllegalParameter); break; default: @@ -2823,7 +2821,7 @@ void ScInterpreter::ScExternal() } break; case svMatrix: - if (!ScRangeToSequence::FillMixedArray( aParam, PopMatrix() )) + if (!ScRangeToSequence::FillMixedArray( aParam, PopMatrix().get() )) SetError(errIllegalParameter); break; default: @@ -2869,7 +2867,7 @@ void ScInterpreter::ScExternal() } break; case svMatrix: - if (!ScRangeToSequence::FillMixedArray( aParam, PopMatrix() )) + if (!ScRangeToSequence::FillMixedArray( aParam, PopMatrix().get() )) SetError(errIllegalParameter); break; case svMissing: @@ -3378,7 +3376,7 @@ void ScInterpreter::ScTableOp() PopSingleRef( pTableOp->aFormulaPos ); pTableOp->bValid = TRUE; - pDok->aTableOpList.Insert( pTableOp ); + pDok->aTableOpList.push_back( pTableOp ); pDok->IncInterpreterTableOpLevel(); BOOL bReuseLastParams = (pDok->aLastTableOpParams == *pTableOp); @@ -3416,7 +3414,7 @@ void ScInterpreter::ScTableOp() PushString( aCellString ); } - pDok->aTableOpList.Remove( pTableOp ); + pTableOp = pDok->aTableOpList.release( pDok->aTableOpList.end() ).release(); // set dirty again once more to be able to recalculate original for ( ::std::vector< ScFormulaCell* >::const_iterator iBroadcast( pTableOp->aNotifiedFormulaCells.begin() ); @@ -3451,17 +3449,6 @@ void ScInterpreter::ScTableOp() pDok->DecInterpreterTableOpLevel(); } - -/* - -void ScInterpreter::ScErrCell() -{ -RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScErrCell" ); - double fErrNum = GetDouble(); - PushError((USHORT) fErrNum); -} -*/ - void ScInterpreter::ScDBArea() { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScDBArea" ); @@ -3597,7 +3584,6 @@ ScInterpreter::ScInterpreter( ScFormulaCell* pCell, ScDocument* pDoc, meVolaileType(NOT_VOLATILE) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScTTT" ); -// pStack = new ScToken*[ MAXSTACK ]; BYTE cMatFlag = pMyFormulaCell->GetMatrixFlag(); bMatrixFormula = ( cMatFlag == MM_FORMULA || cMatFlag == MM_FAKE ); @@ -3628,7 +3614,7 @@ ScInterpreter::~ScInterpreter() } -void ScInterpreter::GlobalExit() // static +void ScInterpreter::GlobalExit() { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::GlobalExit" ); DBG_ASSERT(!bGlobalStackInUse, "wer benutzt noch den TokenStack?"); @@ -3638,7 +3624,6 @@ void ScInterpreter::GlobalExit() // static StackVar ScInterpreter::Interpret() { -// StackPrinter __stack_printer__("ScInterpreter::Interpret"); RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::Interpret" ); short nRetTypeExpr = NUMBERFORMAT_UNDEFINED; ULONG nRetIndexExpr = 0; @@ -3684,7 +3669,7 @@ StackVar ScInterpreter::Interpret() if ( nStackBase > sp ) nStackBase = sp; // underflow?!? sp = nStackBase; - PushTempToken( (*aTokenMatrixMapIter).second); + PushTempToken( (*aTokenMatrixMapIter).second.get()); } else { @@ -3721,7 +3706,6 @@ StackVar ScInterpreter::Interpret() case ocMacro : ScMacro(); break; case ocDBArea : ScDBArea(); break; case ocColRowNameAuto : ScColRowNameAuto(); break; -// separated case ocPush : Push( (ScToken&) *pCur ); break; case ocIf : ScIfJump(); break; case ocChose : ScChoseJump(); break; case ocAdd : ScAdd(); break; @@ -3746,7 +3730,6 @@ StackVar ScInterpreter::Interpret() case ocNeg : ScNeg(); break; case ocPercentSign : ScPercentSign(); break; case ocPi : ScPi(); break; -// case ocDefPar : ScDefPar(); break; case ocRandom : ScRandom(); break; case ocTrue : ScTrue(); break; case ocFalse : ScFalse(); break; @@ -4007,7 +3990,6 @@ StackVar ScInterpreter::Interpret() case ocBetaInv : ScBetaInv(); break; case ocExternal : ScExternal(); break; case ocTableOp : ScTableOp(); break; -// case ocErrCell : ScErrCell(); break; case ocStop : break; case ocErrorType : ScErrorType(); break; case ocCurrent : ScCurrent(); break; diff --git a/sc/source/core/tool/interpr5.cxx b/sc/source/core/tool/interpr5.cxx index 049e7a235870..9ee64e6c491f 100644 --- a/sc/source/core/tool/interpr5.cxx +++ b/sc/source/core/tool/interpr5.cxx @@ -100,6 +100,28 @@ const double fInvEpsilon = 1.0E-7; } }; +namespace +{ + +// Multiply n x m Mat A with m x l Mat B to n x l Mat R +void lcl_MFastMult(ScMatrixRef pA, ScMatrixRef pB, ScMatrixRef pR, + SCSIZE n, SCSIZE m, SCSIZE l) +{ + double sum; + for (SCSIZE row = 0; row < n; row++) + { + for (SCSIZE col = 0; col < l; col++) + { // result element(col, row) =sum[ (row of A) * (column of B)] + sum = 0.0; + for (SCSIZE k = 0; k < m; k++) + sum += pA->GetDouble(k,row) * pB->GetDouble(col,k); + pR->PutDouble(sum, col, row); + } + } +} + +} + double ScInterpreter::ScGetGCD(double fx, double fy) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::div" ); @@ -182,21 +204,23 @@ void ScInterpreter::ScGCD() SetError(errIllegalArgument); else { - SCSIZE nCount = nC * nR; - for ( SCSIZE j = 0; j < nCount; j++ ) + for ( SCSIZE j = 0; j < nC; j++ ) { - if (!pMat->IsValue(j)) + for (SCSIZE k = 0; k < nR; ++k) { - PushIllegalArgument(); - return; + if (!pMat->IsValue(j,k)) + { + PushIllegalArgument(); + return; + } + fx = ::rtl::math::approxFloor( pMat->GetDouble(j,k)); + if (fx < 0.0) + { + PushIllegalArgument(); + return; + } + fy = ScGetGCD(fx, fy); } - fx = ::rtl::math::approxFloor( pMat->GetDouble(j)); - if (fx < 0.0) - { - PushIllegalArgument(); - return; - } - fy = ScGetGCD(fx, fy); } } } @@ -274,24 +298,26 @@ void ScInterpreter:: ScLCM() SetError(errIllegalArgument); else { - SCSIZE nCount = nC * nR; - for ( SCSIZE j = 0; j < nCount; j++ ) + for ( SCSIZE j = 0; j < nC; j++ ) { - if (!pMat->IsValue(j)) - { - PushIllegalArgument(); - return; - } - fx = ::rtl::math::approxFloor( pMat->GetDouble(j)); - if (fx < 0.0) + for (SCSIZE k = 0; k < nR; ++k) { - PushIllegalArgument(); - return; + if (!pMat->IsValue(j,k)) + { + PushIllegalArgument(); + return; + } + fx = ::rtl::math::approxFloor( pMat->GetDouble(j,k)); + if (fx < 0.0) + { + PushIllegalArgument(); + return; + } + if (fx == 0.0 || fy == 0.0) + fy = 0.0; + else + fy = fx * fy / ScGetGCD(fx, fy); } - if (fx == 0.0 || fy == 0.0) - fy = 0.0; - else - fy = fx * fy / ScGetGCD(fx, fy); } } } @@ -307,7 +333,7 @@ void ScInterpreter:: ScLCM() ScMatrixRef ScInterpreter::GetNewMat(SCSIZE nC, SCSIZE nR) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::GetNewMat" ); - ScMatrix* pMat = new ScMatrix( nC, nR); + ScMatrixRef pMat = new ScMatrix( nC, nR); pMat->SetErrorInterpreter( this); // A temporary matrix is mutable and ScMatrix::CloneIfConst() returns the // very matrix. @@ -317,8 +343,7 @@ ScMatrixRef ScInterpreter::GetNewMat(SCSIZE nC, SCSIZE nR) if ( nCols != nC || nRows != nR ) { // arbitray limit of elements exceeded SetError( errStackOverflow); - pMat->Delete(); - pMat = NULL; + pMat.reset(); } return pMat; } @@ -466,7 +491,7 @@ ScMatrixRef ScInterpreter::GetMatrix() { ScBaseCell* pCell = GetCell( aAdr ); if (HasCellEmptyData(pCell)) - pMat->PutEmpty( 0 ); + pMat->PutEmpty(0, 0); else if (HasCellValueData(pCell)) pMat->PutDouble(GetCellValue(aAdr, pCell), 0); else @@ -596,7 +621,7 @@ void ScInterpreter::ScMatValue() case svMatrix: { ScMatrixRef pMat = PopMatrix(); - CalculateMatrixValue(pMat,nC,nR); + CalculateMatrixValue(pMat.get(),nC,nR); } break; default: @@ -615,12 +640,12 @@ void ScInterpreter::CalculateMatrixValue(const ScMatrix* pMat,SCSIZE nC,SCSIZE n pMat->GetDimensions(nCl, nRw); if (nC < nCl && nR < nRw) { - ScMatValType nMatValType; - const ScMatrixValue* pMatVal = pMat->Get( nC, nR,nMatValType); + const ScMatrixValue nMatVal = pMat->Get( nC, nR); + ScMatValType nMatValType = nMatVal.nType; if (ScMatrix::IsNonValueType( nMatValType)) - PushString( pMatVal->GetString() ); + PushString( nMatVal.GetString() ); else - PushDouble(pMatVal->fVal); + PushDouble(nMatVal.fVal); // also handles DoubleError } else @@ -652,7 +677,7 @@ void ScInterpreter::ScEMat() } } -void ScInterpreter::MEMat(ScMatrix* mM, SCSIZE n) +void ScInterpreter::MEMat(const ScMatrixRef& mM, SCSIZE n) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::MEMat" ); mM->FillDouble(0.0, 0, 0, n-1, n-1); @@ -660,25 +685,6 @@ void ScInterpreter::MEMat(ScMatrix* mM, SCSIZE n) mM->PutDouble(1.0, i, i); } -void ScInterpreter::MFastMult(ScMatrix* pA, ScMatrix* pB, ScMatrix* pR, - SCSIZE n, SCSIZE m, SCSIZE l) - // Multipliziert n x m Mat a mit m x l Mat b nach Mat r -{ - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::MFastMult" ); - double sum; - for (SCSIZE i = 0; i < n; i++) - { - for (SCSIZE j = 0; j < l; j++) - { - sum = 0.0; - for (SCSIZE k = 0; k < m; k++) - sum += pA->GetDouble(i,k)*pB->GetDouble(k,j); - pR->PutDouble(sum, i, j); - } - } -} - - /* Matrix LUP decomposition according to the pseudocode of "Introduction to * Algorithms" by Cormen, Leiserson, Rivest, Stein. * @@ -694,7 +700,7 @@ void ScInterpreter::MFastMult(ScMatrix* pA, ScMatrix* pB, ScMatrix* pR, * permutations (row exchanges). * * Returns 0 if a singular matrix is encountered, else +1 if an even number of - * permutations occured, or -1 if odd, which is the sign of the determinant. + * permutations occurred, or -1 if odd, which is the sign of the determinant. * This may be used to calculate the determinant by multiplying the sign with * the product of the diagonal elements of the LU matrix. */ @@ -783,6 +789,13 @@ static int lcl_LUP_decompose( ScMatrix* mA, const SCSIZE n, fprintf( stderr, "%5u ", (unsigned)P[j]); fprintf( stderr, "\n%s\n", ""); #endif + + bool bSingular=false; + for (SCSIZE i=0; i<n && !bSingular; i++) + bSingular = bSingular || ((mA->GetDouble(i,i))==0.0); + if (bSingular) + nSign = 0; + return nSign; } @@ -861,7 +874,7 @@ void ScInterpreter::ScMatDet() else { ::std::vector< SCSIZE> P(nR); - int nDetSign = lcl_LUP_decompose( xLU, nR, P); + int nDetSign = lcl_LUP_decompose( xLU.get(), nR, P); if (!nDetSign) PushInt(0); // singular matrix else @@ -869,9 +882,8 @@ void ScInterpreter::ScMatDet() // In an LU matrix the determinant is simply the product of // all diagonal elements. double fDet = nDetSign; - ScMatrix* pLU = xLU; for (SCSIZE i=0; i < nR; ++i) - fDet *= pLU->GetDouble( i, i); + fDet *= xLU->GetDouble( i, i); PushDouble( fDet); } } @@ -910,13 +922,12 @@ void ScInterpreter::ScMatInv() else { ::std::vector< SCSIZE> P(nR); - int nDetSign = lcl_LUP_decompose( xLU, nR, P); + int nDetSign = lcl_LUP_decompose( xLU.get(), nR, P); if (!nDetSign) PushIllegalArgument(); else { // Solve equation for each column. - ScMatrix* pY = xY; ::std::vector< double> B(nR); ::std::vector< double> X(nR); for (SCSIZE j=0; j < nR; ++j) @@ -924,11 +935,11 @@ void ScInterpreter::ScMatInv() for (SCSIZE i=0; i < nR; ++i) B[i] = 0.0; B[j] = 1.0; - lcl_LUP_solve( xLU, nR, P, B, X); + lcl_LUP_solve( xLU.get(), nR, P, B, X); for (SCSIZE i=0; i < nR; ++i) - pY->PutDouble( X[i], j, i); + xY->PutDouble( X[i], j, i); } -#if 0 +#if OSL_DEBUG_LEVEL > 1 /* Possible checks for ill-condition: * 1. Scale matrix, invert scaled matrix. If there are * elements of the inverted matrix that are several @@ -949,11 +960,9 @@ void ScInterpreter::ScMatInv() ScMatrixRef xR = GetNewMat( nR, nR); if (xR) { - ScMatrix* pR = xR; - MFastMult( pMat, pY, pR, nR, nR, nR); -#if OSL_DEBUG_LEVEL > 1 + ScMatrix* pR = xR.get(); + lcl_MFastMult( pMat, xY.get(), pR, nR, nR, nR); fprintf( stderr, "\n%s\n", "ScMatInv(): mult-identity"); -#endif for (SCSIZE i=0; i < nR; ++i) { for (SCSIZE j=0; j < nR; ++j) @@ -974,7 +983,7 @@ void ScInterpreter::ScMatInv() if (nGlobalError) PushError( nGlobalError); else - PushMatrix( pY); + PushMatrix( xY); } } } @@ -1086,7 +1095,6 @@ ScMatrixRef lcl_MatrixCalculation(const _Function& _pOperation,ScMatrix* pMat1, ScMatrixRef xResMat = _pIterpreter->GetNewMat(nMinC, nMinR); if (xResMat) { - ScMatrix* pResMat = xResMat; for (i = 0; i < nMinC; i++) { for (j = 0; j < nMinR; j++) @@ -1094,17 +1102,17 @@ ScMatrixRef lcl_MatrixCalculation(const _Function& _pOperation,ScMatrix* pMat1, if (pMat1->IsValueOrEmpty(i,j) && pMat2->IsValueOrEmpty(i,j)) { double d = _pOperation(pMat1->GetDouble(i,j),pMat2->GetDouble(i,j)); - pResMat->PutDouble( d, i, j); + xResMat->PutDouble( d, i, j); } else - pResMat->PutString(ScGlobal::GetRscString(STR_NO_VALUE), i, j); + xResMat->PutString(ScGlobal::GetRscString(STR_NO_VALUE), i, j); } } } return xResMat; } -ScMatrixRef ScInterpreter::MatConcat(ScMatrix* pMat1, ScMatrix* pMat2) +ScMatrixRef ScInterpreter::MatConcat(const ScMatrixRef& pMat1, const ScMatrixRef& pMat2) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::MatConcat" ); SCSIZE nC1, nC2, nMinC; @@ -1117,7 +1125,6 @@ ScMatrixRef ScInterpreter::MatConcat(ScMatrix* pMat1, ScMatrix* pMat2) ScMatrixRef xResMat = GetNewMat(nMinC, nMinR); if (xResMat) { - ScMatrix* pResMat = xResMat; for (i = 0; i < nMinC; i++) { for (j = 0; j < nMinR; j++) @@ -1126,12 +1133,12 @@ ScMatrixRef ScInterpreter::MatConcat(ScMatrix* pMat1, ScMatrix* pMat2) if (!nErr) nErr = pMat2->GetErrorIfNotString( i, j); if (nErr) - pResMat->PutError( nErr, i, j); + xResMat->PutError( nErr, i, j); else { String aTmp( pMat1->GetString( *pFormatter, i, j)); aTmp += pMat2->GetString( *pFormatter, i, j); - pResMat->PutString( aTmp, i, j); + xResMat->PutString( aTmp, i, j); } } } @@ -1232,12 +1239,12 @@ void ScInterpreter::CalculateAddSub(BOOL _bSub) if ( _bSub ) { MatrixSub aSub; - pResMat = lcl_MatrixCalculation(aSub ,pMat1, pMat2,this); + pResMat = lcl_MatrixCalculation(aSub ,pMat1.get(), pMat2.get(),this); } else { MatrixAdd aAdd; - pResMat = lcl_MatrixCalculation(aAdd ,pMat1, pMat2,this); + pResMat = lcl_MatrixCalculation(aAdd ,pMat1.get(), pMat2.get(),this); } if (!pResMat) @@ -1351,41 +1358,43 @@ void ScInterpreter::ScAmpersand() ScMatrixRef pResMat = GetNewMat(nC, nR); if (pResMat) { - SCSIZE nCount = nC * nR; if (nGlobalError) { - for ( SCSIZE i = 0; i < nCount; i++ ) - pResMat->PutError( nGlobalError, i); + for (SCSIZE i = 0; i < nC; ++i) + for (SCSIZE j = 0; j < nR; ++j) + pResMat->PutError( nGlobalError, i, j); } else if (bFlag) { - for ( SCSIZE i = 0; i < nCount; i++ ) - { - USHORT nErr = pMat->GetErrorIfNotString( i); - if (nErr) - pResMat->PutError( nErr, i); - else + for (SCSIZE i = 0; i < nC; ++i) + for (SCSIZE j = 0; j < nR; ++j) { - String aTmp( sStr); - aTmp += pMat->GetString( *pFormatter, i); - pResMat->PutString( aTmp, i); + USHORT nErr = pMat->GetErrorIfNotString( i, j); + if (nErr) + pResMat->PutError( nErr, i, j); + else + { + String aTmp( sStr); + aTmp += pMat->GetString( *pFormatter, i, j); + pResMat->PutString( aTmp, i, j); + } } - } } else { - for ( SCSIZE i = 0; i < nCount; i++ ) - { - USHORT nErr = pMat->GetErrorIfNotString( i); - if (nErr) - pResMat->PutError( nErr, i); - else + for (SCSIZE i = 0; i < nC; ++i) + for (SCSIZE j = 0; j < nR; ++j) { - String aTmp( pMat->GetString( *pFormatter, i)); - aTmp += sStr; - pResMat->PutString( aTmp, i); + USHORT nErr = pMat->GetErrorIfNotString( i, j); + if (nErr) + pResMat->PutError( nErr, i, j); + else + { + String aTmp( pMat->GetString( *pFormatter, i, j)); + aTmp += sStr; + pResMat->PutString( aTmp, i, j); + } } - } } PushMatrix(pResMat); } @@ -1443,7 +1452,7 @@ void ScInterpreter::ScMul() if (pMat1 && pMat2) { MatrixMul aMul; - ScMatrixRef pResMat = lcl_MatrixCalculation(aMul,pMat1, pMat2,this); + ScMatrixRef pResMat = lcl_MatrixCalculation(aMul,pMat1.get(), pMat2.get(),this); if (!pResMat) PushNoValue(); else @@ -1518,7 +1527,7 @@ void ScInterpreter::ScDiv() if (pMat1 && pMat2) { MatrixDiv aDiv; - ScMatrixRef pResMat = lcl_MatrixCalculation(aDiv,pMat1, pMat2,this); + ScMatrixRef pResMat = lcl_MatrixCalculation(aDiv,pMat1.get(), pMat2.get(),this); if (!pResMat) PushNoValue(); else @@ -1600,7 +1609,7 @@ void ScInterpreter::ScPow() if (pMat1 && pMat2) { MatrixPow aPow; - ScMatrixRef pResMat = lcl_MatrixCalculation(aPow,pMat1, pMat2,this); + ScMatrixRef pResMat = lcl_MatrixCalculation(aPow,pMat1.get(), pMat2.get(),this); if (!pResMat) PushNoValue(); else @@ -1686,7 +1695,7 @@ void ScInterpreter::ScSumProduct() PushNoValue(); return; } - ScMatrixRef pResMat = lcl_MatrixCalculation(aMul,pMat1, pMat,this); + ScMatrixRef pResMat = lcl_MatrixCalculation(aMul,pMat1.get(), pMat.get(),this); if (!pResMat) { PushNoValue(); @@ -1782,7 +1791,7 @@ void ScInterpreter::ScSumXMY2() return; } // if (nC1 != nC2 || nR1 != nR2) MatrixSub aSub; - ScMatrixRef pResMat = lcl_MatrixCalculation(aSub,pMat1, pMat2,this); + ScMatrixRef pResMat = lcl_MatrixCalculation(aSub,pMat1.get(), pMat2.get(),this); if (!pResMat) { PushNoValue(); @@ -1856,212 +1865,386 @@ void ScInterpreter::ScFrequency() PushMatrix(pResMat); } -BOOL ScInterpreter::RGetVariances( ScMatrix* pV, ScMatrix* pX, - SCSIZE nC, SCSIZE nR, BOOL bSwapColRow, BOOL bZeroConstant ) -{ // multiple Regression: Varianzen der Koeffizienten - // bSwapColRow==TRUE : Koeffizienten in Zeilen statt Spalten angeordnet - SCSIZE i, j, k; - double sum; - ScMatrixRef pC = GetNewMat(nC, nC); - if ( !pC ) - return FALSE; - // X transformiert mit X multipziert, X'X Matrix - if ( !bZeroConstant ) - { // in der X-Designmatrix existiert ein gedachtes X0j==1 - if ( bSwapColRow ) - { - for ( i=0; i<nC; i++ ) - { - for ( j=0; j<nC; j++ ) - { - sum = 0.0; - for ( k=0; k<nR; k++ ) - { - sum += (j==0 ? 1 : pX->GetDouble(k,j-1)) - * (i==0 ? 1 : pX->GetDouble(k,i-1)); - } - pC->PutDouble(sum, i, j); - } - } +namespace { + +// ----------------------------------------------------------------------------- +// Helper methods for LINEST/LOGEST and TREND/GROWTH +// All matrices must already exist and have the needed size, no control tests +// done. Those methodes, which names start with lcl_T, are adapted to case 3, +// where Y (=observed values) is given as row. +// Remember, ScMatrix matrices are zero based, index access (column,row). +// ----------------------------------------------------------------------------- + +// <A;B> over all elements; uses the matrices as vectors of length M +double lcl_GetSumProduct(ScMatrixRef pMatA, ScMatrixRef pMatB, SCSIZE nM) +{ + double fSum = 0.0; + for (SCSIZE i=0; i<nM; i++) + fSum += pMatA->GetDouble(i) * pMatB->GetDouble(i); + return fSum; +} + +// Special version for use within QR decomposition. +// Euclidean norm of column index C starting in row index R; +// matrix A has count N rows. +double lcl_GetColumnEuclideanNorm(ScMatrixRef pMatA, SCSIZE nC, SCSIZE nR, SCSIZE nN) +{ + double fNorm = 0.0; + for (SCSIZE row=nR; row<nN; row++) + fNorm += (pMatA->GetDouble(nC,row)) * (pMatA->GetDouble(nC,row)); + return sqrt(fNorm); +} + +// Euclidean norm of row index R starting in column index C; +// matrix A has count N columns. +double lcl_TGetColumnEuclideanNorm(ScMatrixRef pMatA, SCSIZE nR, SCSIZE nC, SCSIZE nN) +{ + double fNorm = 0.0; + for (SCSIZE col=nC; col<nN; col++) + fNorm += (pMatA->GetDouble(col,nR)) * (pMatA->GetDouble(col,nR)); + return sqrt(fNorm); +} + +// Special version for use within QR decomposition. +// Maximum norm of column index C starting in row index R; +// matrix A has count N rows. +double lcl_GetColumnMaximumNorm(ScMatrixRef pMatA, SCSIZE nC, SCSIZE nR, SCSIZE nN) +{ + double fNorm = 0.0; + for (SCSIZE row=nR; row<nN; row++) + if (fNorm < fabs(pMatA->GetDouble(nC,row))) + fNorm = fabs(pMatA->GetDouble(nC,row)); + return fNorm; +} + +// Maximum norm of row index R starting in col index C; +// matrix A has count N columns. +double lcl_TGetColumnMaximumNorm(ScMatrixRef pMatA, SCSIZE nR, SCSIZE nC, SCSIZE nN) +{ + double fNorm = 0.0; + for (SCSIZE col=nC; col<nN; col++) + if (fNorm < fabs(pMatA->GetDouble(col,nR))) + fNorm = fabs(pMatA->GetDouble(col,nR)); + return fNorm; +} + +// Special version for use within QR decomposition. +// <A(Ca);B(Cb)> starting in row index R; +// Ca and Cb are indices of columns, matrices A and B have count N rows. +double lcl_GetColumnSumProduct(ScMatrixRef pMatA, SCSIZE nCa, + ScMatrixRef pMatB, SCSIZE nCb, SCSIZE nR, SCSIZE nN) +{ + double fResult = 0.0; + for (SCSIZE row=nR; row<nN; row++) + fResult += pMatA->GetDouble(nCa,row) * pMatB->GetDouble(nCb,row); + return fResult; +} + +// <A(Ra);B(Rb)> starting in column index C; +// Ra and Rb are indices of rows, matrices A and B have count N columns. +double lcl_TGetColumnSumProduct(ScMatrixRef pMatA, SCSIZE nRa, + ScMatrixRef pMatB, SCSIZE nRb, SCSIZE nC, SCSIZE nN) +{ + double fResult = 0.0; + for (SCSIZE col=nC; col<nN; col++) + fResult += pMatA->GetDouble(col,nRa) * pMatB->GetDouble(col,nRb); + return fResult; +} + +double lcl_GetSign(double fValue) +{ + if (fValue < 0.0) + return -1.0; + else if (fValue > 0.0) + return 1.0; + else + return 0.0; +} + +/* Calculates a QR decomposition with Householder reflection. + * For each NxK matrix A exists a decomposition A=Q*R with an orthogonal + * NxN matrix Q and a NxK matrix R. + * Q=H1*H2*...*Hk with Householder matrices H. Such a householder matrix can + * be build from a vector u by H=I-(2/u'u)*(u u'). This vectors u are returned + * in the columns of matrix A, overwriting the old content. + * The matrix R has a quadric upper part KxK with values in the upper right + * triangle and zeros in all other elements. Here the diagonal elements of R + * are stored in the vector R and the other upper right elements in the upper + * right of the matrix A. + * The function returns false, if calculation breaks. But because of round-off + * errors singularity is often not detected. + */ +bool lcl_CalculateQRdecomposition(ScMatrixRef pMatA, + ::std::vector< double>& pVecR, SCSIZE nK, SCSIZE nN) +{ + double fScale ; + double fEuclid ; + double fFactor ; + double fSignum ; + double fSum ; + // ScMatrix matrices are zero based, index access (column,row) + for (SCSIZE col = 0; col <nK; col++) + { + // calculate vector u of the householder transformation + fScale = lcl_GetColumnMaximumNorm(pMatA, col, col, nN); + if (fScale == 0.0) + { + // A is singular + return false; } - else + for (SCSIZE row = col; row <nN; row++) + pMatA->PutDouble( pMatA->GetDouble(col,row)/fScale, col, row); + + fEuclid = lcl_GetColumnEuclideanNorm(pMatA, col, col, nN); + fFactor = 1.0/fEuclid/(fEuclid + fabs(pMatA->GetDouble(col,col))); + fSignum = lcl_GetSign(pMatA->GetDouble(col,col)); + pMatA->PutDouble( pMatA->GetDouble(col,col) + fSignum*fEuclid, col,col); + pVecR[col] = -fSignum * fScale * fEuclid; + + // apply Householder transformation to A + for (SCSIZE c=col+1; c<nK; c++) { - for ( i=0; i<nC; i++ ) - { - for ( j=0; j<nC; j++ ) - { - sum = 0.0; - for ( k=0; k<nR; k++ ) - { - sum += (j==0 ? 1 : pX->GetDouble(j-1,k)) - * (i==0 ? 1 : pX->GetDouble(i-1,k)); - } - pC->PutDouble(sum, i, j); - } - } + fSum =lcl_GetColumnSumProduct(pMatA, col, pMatA, c, col, nN); + for (SCSIZE row = col; row <nN; row++) + pMatA->PutDouble( pMatA->GetDouble(c,row) - fSum * fFactor * pMatA->GetDouble(col,row), c, row); } } - else - { - if ( bSwapColRow ) - { - for ( i=0; i<nC; i++ ) - { - for ( j=0; j<nC; j++ ) - { - sum = 0.0; - for ( k=0; k<nR; k++ ) - { - sum += pX->GetDouble(k,j) * pX->GetDouble(k,i); - } - pC->PutDouble(sum, i, j); - } - } + return true; +} + +// same with transposed matrix A, N is count of columns, K count of rows +bool lcl_TCalculateQRdecomposition(ScMatrixRef pMatA, + ::std::vector< double>& pVecR, SCSIZE nK, SCSIZE nN) +{ + double fScale ; + double fEuclid ; + double fFactor ; + double fSignum ; + double fSum ; + // ScMatrix matrices are zero based, index access (column,row) + for (SCSIZE row = 0; row <nK; row++) + { + // calculate vector u of the householder transformation + fScale = lcl_TGetColumnMaximumNorm(pMatA, row, row, nN); + if (fScale == 0.0) + { + // A is singular + return false; } - else + for (SCSIZE col = row; col <nN; col++) + pMatA->PutDouble( pMatA->GetDouble(col,row)/fScale, col, row); + + fEuclid = lcl_TGetColumnEuclideanNorm(pMatA, row, row, nN); + fFactor = 1.0/fEuclid/(fEuclid + fabs(pMatA->GetDouble(row,row))); + fSignum = lcl_GetSign(pMatA->GetDouble(row,row)); + pMatA->PutDouble( pMatA->GetDouble(row,row) + fSignum*fEuclid, row,row); + pVecR[row] = -fSignum * fScale * fEuclid; + + // apply Householder transformation to A + for (SCSIZE r=row+1; r<nK; r++) { - for ( i=0; i<nC; i++ ) - { - for ( j=0; j<nC; j++ ) - { - sum = 0.0; - for ( k=0; k<nR; k++ ) - { - sum += pX->GetDouble(j,k) * pX->GetDouble(i,k); - } - pC->PutDouble(sum, i, j); - } - } + fSum =lcl_TGetColumnSumProduct(pMatA, row, pMatA, r, row, nN); + for (SCSIZE col = row; col <nN; col++) + pMatA->PutDouble( + pMatA->GetDouble(col,r) - fSum * fFactor * pMatA->GetDouble(col,row), col, r); } } - // X'X Inverse - BOOL bOk = TRUE; - USHORT nErr = nGlobalError; - PushMatrix(pC); - BYTE nTmp = cPar; - cPar = 1; - ScMatInv(); - cPar = nTmp; - if ( nGlobalError ) - { - nGlobalError = nErr; - bOk = FALSE; + return true; +} + + +/* Applies a Householder transformation to a column vector Y with is given as + * Nx1 Matrix. The Vektor u, from which the Householder transformation is build, + * is the column part in matrix A, with column index C, starting with row + * index C. A is the result of the QR decomposition as obtained from + * lcl_CaluclateQRdecomposition. + */ +void lcl_ApplyHouseholderTransformation(ScMatrixRef pMatA, SCSIZE nC, + ScMatrixRef pMatY, SCSIZE nN) +{ + // ScMatrix matrices are zero based, index access (column,row) + double fDenominator = lcl_GetColumnSumProduct(pMatA, nC, pMatA, nC, nC, nN); + double fNumerator = lcl_GetColumnSumProduct(pMatA, nC, pMatY, 0, nC, nN); + double fFactor = 2.0 * (fNumerator/fDenominator); + for (SCSIZE row = nC; row < nN; row++) + pMatY->PutDouble( + pMatY->GetDouble(row) - fFactor * pMatA->GetDouble(nC,row), row); +} + +// Same with transposed matrices A and Y. +void lcl_TApplyHouseholderTransformation(ScMatrixRef pMatA, SCSIZE nR, + ScMatrixRef pMatY, SCSIZE nN) +{ + // ScMatrix matrices are zero based, index access (column,row) + double fDenominator = lcl_TGetColumnSumProduct(pMatA, nR, pMatA, nR, nR, nN); + double fNumerator = lcl_TGetColumnSumProduct(pMatA, nR, pMatY, 0, nR, nN); + double fFactor = 2.0 * (fNumerator/fDenominator); + for (SCSIZE col = nR; col < nN; col++) + pMatY->PutDouble( + pMatY->GetDouble(col) - fFactor * pMatA->GetDouble(col,nR), col); +} + +/* Solve for X in R*X=S using back substitution. The solution X overwrites S. + * Uses R from the result of the QR decomposition of a NxK matrix A. + * S is a column vector given as matrix, with at least elements on index + * 0 to K-1; elements on index>=K are ignored. Vector R must not have zero + * elements, no check is done. + */ +void lcl_SolveWithUpperRightTriangle(ScMatrixRef pMatA, + ::std::vector< double>& pVecR, ScMatrixRef pMatS, + SCSIZE nK, bool bIsTransposed) +{ + // ScMatrix matrices are zero based, index access (column,row) + double fSum; + SCSIZE row; + // SCSIZE is never negative, therefore test with rowp1=row+1 + for (SCSIZE rowp1 = nK; rowp1>0; rowp1--) + { + row = rowp1-1; + fSum = pMatS->GetDouble(row); + for (SCSIZE col = rowp1; col<nK ; col++) + if (bIsTransposed) + fSum -= pMatA->GetDouble(row,col) * pMatS->GetDouble(col); + else + fSum -= pMatA->GetDouble(col,row) * pMatS->GetDouble(col); + pMatS->PutDouble( fSum / pVecR[row] , row); } - else +} + +/* Solve for X in R' * X= T using forward substitution. The solution X + * overwrites T. Uses R from the result of the QR decomposition of a NxK + * matrix A. T is a column vectors given as matrix, with at least elements on + * index 0 to K-1; elements on index>=K are ignored. Vector R must not have + * zero elements, no check is done. + */ +void lcl_SolveWithLowerLeftTriangle(ScMatrixRef pMatA, + ::std::vector< double>& pVecR, ScMatrixRef pMatT, + SCSIZE nK, bool bIsTransposed) +{ + // ScMatrix matrices are zero based, index access (column,row) + double fSum; + for (SCSIZE row = 0; row < nK; row++) { - // #i61216# ScMatInv no longer modifies the original matrix, so just calling Pop() doesn't work - pC = PopMatrix(); - if ( pC.Is() ) + fSum = pMatT -> GetDouble(row); + for (SCSIZE col=0; col < row; col++) { - // Varianzen auf der Diagonalen, andere sind Kovarianzen - for (i = 0; i < nC; i++) - pV->PutDouble(pC->GetDouble(i, i), i); + if (bIsTransposed) + fSum -= pMatA->GetDouble(col,row) * pMatT->GetDouble(col); + else + fSum -= pMatA->GetDouble(row,col) * pMatT->GetDouble(col); } + pMatT->PutDouble( fSum / pVecR[row] , row); } - return bOk; } -// ----------------------------------------------------------------------------- -void ScInterpreter::Calculate(ScMatrixRef& pResMat,ScMatrixRef& pE,ScMatrixRef& pQ,ScMatrixRef& pV,ScMatrixRef& pMatX,BOOL bConstant,SCSIZE N,SCSIZE M,BYTE nCase) -{ - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::RGetVariances" ); - // pE[0] := Sigma i=1...n (Yi) - // pE[k] := Sigma i=1...n (Xki*Yi) - // pE[M+1] := Sigma i=1...n (Yi**2) - // pQ[0,M+1]:= B - // pQ[k,M+1]:= Mk - double fSQR, fSQT, fSQE; - fSQT = pE->GetDouble(M+1) - - pE->GetDouble(0) * pE->GetDouble(0) / (double)N; - fSQR = pE->GetDouble(M+1); - SCSIZE i, j; - for (i = 0; i < M+1; i++) - fSQR -= pQ->GetDouble(i, M+1) * pE->GetDouble(i); - fSQE = fSQT-fSQR; - // r2 (Bestimmtheitsmass, 0...1) - if (fSQT == 0.0) - pResMat->PutString(ScGlobal::GetRscString(STR_NO_VALUE), 0, 2); - else - pResMat->PutDouble (fSQE/fSQT, 0, 2); - // ssReg (Regressions-Quadratsumme) - pResMat->PutDouble(fSQE, 0, 4); - // ssResid (Residual-Quadratsumme, Summe der Abweichungsquadrate) - pResMat->PutDouble(fSQR, 1, 4); - for (i = 2; i < 5; i++) - for (j = 2; j < M+1; j++) - pResMat->PutString(ScGlobal::GetRscString(STR_NV_STR), j, i); - if (bConstant) - { - if (N-M-1 == 0) - { - pResMat->PutString(ScGlobal::GetRscString(STR_NO_VALUE), 1, 2); - for (i = 0; i < M+1; i++) - pResMat->PutString(ScGlobal::GetRscString(STR_NO_VALUE), i, 1); - } - else - { - double fSE2 = fSQR/(N-M-1); - // sey (Standardfehler des Schaetzwertes y) - pResMat->PutDouble(sqrt(fSE2), 1, 2); - // sen...se1 (Standardfehler der Koeffizienten mn...m1) - // seb (Standardfehler der Konstanten b) - if ( RGetVariances( pV, pMatX, M+1, N, nCase != 2, FALSE ) ) - { - for (i = 0; i < M+1; i++) - pResMat->PutDouble( sqrt(fSE2 * pV->GetDouble(i)), M-i, 1 ); - } + +/* Calculates Z = R * B + * R is given in matrix A and vector VecR as obtained from the QR + * decompostion in lcl_CalculateQRdecomposition. B and Z are column vectors + * given as matrix with at least index 0 to K-1; elements on index>=K are + * not used. + */ +void lcl_ApplyUpperRightTriangle(ScMatrixRef pMatA, + ::std::vector< double>& pVecR, ScMatrixRef pMatB, + ScMatrixRef pMatZ, SCSIZE nK, bool bIsTransposed) +{ + // ScMatrix matrices are zero based, index access (column,row) + double fSum; + for (SCSIZE row = 0; row < nK; row++) + { + fSum = pVecR[row] * pMatB->GetDouble(row); + for (SCSIZE col = row+1; col < nK; col++) + if (bIsTransposed) + fSum += pMatA->GetDouble(row,col) * pMatB->GetDouble(col); else - { - for (i = 0; i < M+1; i++) - pResMat->PutString(ScGlobal::GetRscString(STR_NV_STR), i, 1); - } - } - // F (F-Statistik) - if (fSQR == 0.0) - pResMat->PutString(ScGlobal::GetRscString(STR_NO_VALUE), 0, 3); - else - pResMat->PutDouble(((double)(N-M-1))*fSQE/fSQR/((double)M),0, 3); - // df (Freiheitsgrad) - pResMat->PutDouble(((double)(N-M-1)), 1, 3); + fSum += pMatA->GetDouble(col,row) * pMatB->GetDouble(col); + pMatZ->PutDouble( fSum, row); } - else +} + + + +double lcl_GetMeanOverAll(ScMatrixRef pMat, SCSIZE nN) +{ + double fSum = 0.0; + for (SCSIZE i=0 ; i<nN; i++) + fSum += pMat->GetDouble(i); + return fSum/static_cast<double>(nN); +} + +// Calculates means of the columns of matrix X. X is a RxC matrix; +// ResMat is a 1xC matrix (=row). +void lcl_CalculateColumnMeans(ScMatrixRef pX, ScMatrixRef pResMat, + SCSIZE nC, SCSIZE nR) +{ + double fSum = 0.0; + for (SCSIZE i=0; i < nC; i++) { - if (N-M == 0) - { - pResMat->PutString(ScGlobal::GetRscString(STR_NO_VALUE), 1, 2); - for (i = 0; i < M+1; i++) - pResMat->PutString(ScGlobal::GetRscString(STR_NO_VALUE), i, 1); - } - else - { - double fSE2 = fSQR/(N-M); - pResMat->PutDouble(sqrt(fSE2), 1, 2); - if ( RGetVariances( pV, pMatX, M, N, nCase != 2, TRUE ) ) - { - for (i = 0; i < M; i++) - pResMat->PutDouble( sqrt(fSE2 * pV->GetDouble(i)), M-i-1, 1 ); - pResMat->PutString(ScGlobal::GetRscString(STR_NV_STR), M, 1); - } - else - { - for (i = 0; i < M+1; i++) - pResMat->PutString(ScGlobal::GetRscString(STR_NV_STR), i, 1); - } - } - if (fSQR == 0.0) - pResMat->PutString(ScGlobal::GetRscString(STR_NO_VALUE), 0, 3); - else - pResMat->PutDouble(((double)(N-M))*fSQE/fSQR/((double)M),0, 3); - pResMat->PutDouble(((double)(N-M)), 1, 3); + fSum =0.0; + for (SCSIZE k=0; k < nR; k++) + fSum += pX->GetDouble(i,k); // GetDouble(Column,Row) + pResMat ->PutDouble( fSum/static_cast<double>(nR),i); } } -void ScInterpreter::ScRGP() +// Calculates means of the rows of matrix X. X is a RxC matrix; +// ResMat is a Rx1 matrix (=column). +void lcl_CalculateRowMeans(ScMatrixRef pX, ScMatrixRef pResMat, + SCSIZE nC, SCSIZE nR) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScRGP" ); - CalulateRGPRKP(FALSE); + double fSum = 0.0; + for (SCSIZE k=0; k < nR; k++) + { + fSum =0.0; + for (SCSIZE i=0; i < nC; i++) + fSum += pX->GetDouble(i,k); // GetDouble(Column,Row) + pResMat ->PutDouble( fSum/static_cast<double>(nC),k); + } +} + +void lcl_CalculateColumnsDelta(ScMatrixRef pMat, ScMatrixRef pColumnMeans, + SCSIZE nC, SCSIZE nR) +{ + for (SCSIZE i = 0; i < nC; i++) + for (SCSIZE k = 0; k < nR; k++) + pMat->PutDouble( ::rtl::math::approxSub + (pMat->GetDouble(i,k) , pColumnMeans->GetDouble(i) ) , i, k); } -bool ScInterpreter::CheckMatrix(BOOL _bLOG,BOOL _bTrendGrowth,BYTE& nCase,SCSIZE& nCX,SCSIZE& nCY,SCSIZE& nRX,SCSIZE& nRY,SCSIZE& M,SCSIZE& N,ScMatrixRef& pMatX,ScMatrixRef& pMatY) + +void lcl_CalculateRowsDelta(ScMatrixRef pMat, ScMatrixRef pRowMeans, + SCSIZE nC, SCSIZE nR) { + for (SCSIZE k = 0; k < nR; k++) + for (SCSIZE i = 0; i < nC; i++) + pMat->PutDouble( ::rtl::math::approxSub + ( pMat->GetDouble(i,k) , pRowMeans->GetDouble(k) ) , i, k); +} + +// Case1 = simple regression +// MatX = X - MeanX, MatY = Y - MeanY, y - haty = (y - MeanY) - (haty - MeanY) +// = (y-MeanY)-((slope*x+a)-(slope*MeanX+a)) = (y-MeanY)-slope*(x-MeanX) +double lcl_GetSSresid(ScMatrixRef pMatX, ScMatrixRef pMatY, double fSlope, + SCSIZE nN) +{ + double fSum = 0.0; + double fTemp = 0.0; + for (SCSIZE i=0; i<nN; i++) + { + fTemp = pMatY->GetDouble(i) - fSlope * pMatX->GetDouble(i); + fSum += fTemp * fTemp; + } + return fSum; +} + +} + +// Fill default values in matrix X, transform Y to log(Y) in case LOGEST|GROWTH, +// determine sizes of matrices X and Y, determine kind of regression, clone +// Y in case LOGEST|GROWTH, if constant. +bool ScInterpreter::CheckMatrix(bool _bLOG, BYTE& nCase, SCSIZE& nCX, + SCSIZE& nCY, SCSIZE& nRX, SCSIZE& nRY, SCSIZE& M, + SCSIZE& N, ScMatrixRef& pMatX, ScMatrixRef& pMatY) +{ + nCX = 0; nCY = 0; nRX = 0; @@ -2107,7 +2290,11 @@ bool ScInterpreter::CheckMatrix(BOOL _bLOG,BOOL _bTrendGrowth,BYTE& nCase,SCSIZE return false; } if (nCX == nCY && nRX == nRY) - nCase = 1; // einfache Regression + { + nCase = 1; // simple regression + M = 1; + N = nCountY; + } else if (nCY != 1 && nRY != 1) { PushIllegalArgument(); @@ -2122,7 +2309,7 @@ bool ScInterpreter::CheckMatrix(BOOL _bLOG,BOOL _bTrendGrowth,BYTE& nCase,SCSIZE } else { - nCase = 2; // zeilenweise + nCase = 2; // Y is column N = nRY; M = nCX; } @@ -2134,7 +2321,7 @@ bool ScInterpreter::CheckMatrix(BOOL _bLOG,BOOL _bTrendGrowth,BYTE& nCase,SCSIZE } else { - nCase = 3; // spaltenweise + nCase = 3; // Y is row N = nCY; M = nRX; } @@ -2142,460 +2329,644 @@ bool ScInterpreter::CheckMatrix(BOOL _bLOG,BOOL _bTrendGrowth,BYTE& nCase,SCSIZE else { pMatX = GetNewMat(nCY, nRY); - if ( _bTrendGrowth ) - { nCX = nCY; nRX = nRY; - } if (!pMatX) { PushIllegalArgument(); return false; } for ( SCSIZE i = 1; i <= nCountY; i++ ) - pMatX->PutDouble((double)i, i-1); + pMatX->PutDouble(static_cast<double>(i), i-1); nCase = 1; + N = nCountY; + M = 1; } return true; } -void ScInterpreter::CalulateRGPRKP(BOOL _bRKP) + +// ----------------------------------------------------------------------------- + +// LINEST +void ScInterpreter::ScRGP() +{ + RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScRGP" ); + CalulateRGPRKP(false); +} + +// LOGEST +void ScInterpreter::ScRKP() +{ + RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScRKP" ); + CalulateRGPRKP(true); +} + +void ScInterpreter::CalulateRGPRKP(bool _bRKP) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::CheckMatrix" ); BYTE nParamCount = GetByte(); - if ( !MustHaveParamCount( nParamCount, 1, 4 ) ) + if (!MustHaveParamCount( nParamCount, 1, 4 )) return; - BOOL bConstant, bStats; + bool bConstant, bStats; + + // optional forth parameter if (nParamCount == 4) bStats = GetBool(); else - bStats = FALSE; + bStats = false; + + // The third parameter may not be missing in ODF, if the forth parameter + // is present. But Excel allows it with default true, we too. if (nParamCount >= 3) - bConstant = GetBool(); + { + if (IsMissing()) + { + Pop(); + bConstant = true; +// PushIllegalParameter(); if ODF behavior is desired +// return; + } + else + bConstant = GetBool(); + } else - bConstant = TRUE; + bConstant = true; + ScMatrixRef pMatX; - ScMatrixRef pMatY; if (nParamCount >= 2) - pMatX = GetMatrix(); + { + if (IsMissing()) + { //In ODF1.2 empty second parameter (which is two ;; ) is allowed + Pop(); + pMatX = NULL; + } + else + { + pMatX = GetMatrix(); + } + } else pMatX = NULL; + + ScMatrixRef pMatY; pMatY = GetMatrix(); if (!pMatY) { PushIllegalParameter(); return; - } // if (!pMatY) - BYTE nCase; // 1 = normal, 2,3 = mehrfach - SCSIZE nCX, nCY; - SCSIZE nRX, nRY; - SCSIZE M = 0, N = 0; - if ( !CheckMatrix(_bRKP,FALSE,nCase,nCX,nCY,nRX,nRY,M,N,pMatX,pMatY) ) + } + + // 1 = simple; 2 = multiple with Y as column; 3 = multiple with Y as row + BYTE nCase; + + SCSIZE nCX, nCY; // number of columns + SCSIZE nRX, nRY; //number of rows + SCSIZE K = 0, N = 0; // K=number of variables X, N=number of data samples + if (!CheckMatrix(_bRKP,nCase,nCX,nCY,nRX,nRY,K,N,pMatX,pMatY)) + { + PushIllegalParameter(); + return; + } + + // Enough data samples? + if ((bConstant && (N<K+1)) || (!bConstant && (N<K)) || (N<1) || (K<1)) + { + PushIllegalParameter(); return; + } ScMatrixRef pResMat; - if (nCase == 1) + if (bStats) + pResMat = GetNewMat(K+1,5); + else + pResMat = GetNewMat(K+1,1); + if (!pResMat) { - if (!bStats) - pResMat = GetNewMat(2,1); - else - pResMat = GetNewMat(2,5); - if (!pResMat) + PushError(errCodeOverflow); + return; + } + // Fill unused cells in pResMat; order (column,row) + if (bStats) + { + for (SCSIZE i=2; i<K+1; i++) { - PushIllegalArgument(); + pResMat->PutString(ScGlobal::GetRscString(STR_NV_STR), i, 2 ); + pResMat->PutString(ScGlobal::GetRscString(STR_NV_STR), i, 3 ); + pResMat->PutString(ScGlobal::GetRscString(STR_NV_STR), i, 4 ); + } + } + + // Uses sum(x-MeanX)^2 and not [sum x^2]-N * MeanX^2 in case bConstant. + // Clone constant matrices, so that Mat = Mat - Mean is possible. + double fMeanY = 0.0; + if (bConstant) + { + ScMatrixRef pNewX = pMatX->CloneIfConst(); + ScMatrixRef pNewY = pMatY->CloneIfConst(); + if (!pNewX || !pNewY) + { + PushError(errCodeOverflow); return; } - double fCount = 0.0; - double fSumX = 0.0; - double fSumSqrX = 0.0; - double fSumY = 0.0; - double fSumSqrY = 0.0; - double fSumXY = 0.0; - double fValX, fValY; - for (SCSIZE i = 0; i < nCY; i++) - for (SCSIZE j = 0; j < nRY; j++) - { - fValX = pMatX->GetDouble(i,j); - fValY = pMatY->GetDouble(i,j); - fSumX += fValX; - fSumSqrX += fValX * fValX; - fSumY += fValY; - fSumSqrY += fValY * fValY; - fSumXY += fValX*fValY; - fCount++; - } - if (fCount < 1.0) - PushNoValue(); - else + pMatX = pNewX; + pMatY = pNewY; + // DeltaY is possible here; DeltaX depends on nCase, so later + fMeanY = lcl_GetMeanOverAll(pMatY, N); + for (SCSIZE i=0; i<N; i++) { - double f1 = fCount*fSumXY-fSumX*fSumY; - double fX = fCount*fSumSqrX-fSumX*fSumX; - double b, m; - if (bConstant) + pMatY->PutDouble( ::rtl::math::approxSub(pMatY->GetDouble(i),fMeanY), i ); + } + } + + if (nCase==1) + { + // calculate simple regression + double fMeanX = 0.0; + if (bConstant) + { // Mat = Mat - Mean + fMeanX = lcl_GetMeanOverAll(pMatX, N); + for (SCSIZE i=0; i<N; i++) { - b = fSumY/fCount - f1/fX*fSumX/fCount; - m = f1/fX; + pMatX->PutDouble( ::rtl::math::approxSub(pMatX->GetDouble(i),fMeanX), i ); } - else - { - b = 0.0; - m = fSumXY/fSumSqrX; + } + double fSumXY = lcl_GetSumProduct(pMatX,pMatY,N); + double fSumX2 = lcl_GetSumProduct(pMatX,pMatX,N); + if (fSumX2==0.0) + { + PushNoValue(); // all x-values are identical + return; + } + double fSlope = fSumXY / fSumX2; + double fIntercept = 0.0; + if (bConstant) + fIntercept = fMeanY - fSlope * fMeanX; + pResMat->PutDouble(_bRKP ? exp(fIntercept) : fIntercept, 1, 0); //order (column,row) + pResMat->PutDouble(_bRKP ? exp(fSlope) : fSlope, 0, 0); + + if (bStats) + { + double fSSreg = fSlope * fSlope * fSumX2; + pResMat->PutDouble(fSSreg, 0, 4); + + double fDegreesFreedom =static_cast<double>( (bConstant) ? N-2 : N-1 ); + pResMat->PutDouble(fDegreesFreedom, 1, 3); + + double fSSresid = lcl_GetSSresid(pMatX,pMatY,fSlope,N); + pResMat->PutDouble(fSSresid, 1, 4); + + if (fDegreesFreedom == 0.0 || fSSresid == 0.0 || fSSreg == 0.0) + { // exact fit; test SSreg too, because SSresid might be + // unequal zero due to round of errors + pResMat->PutDouble(0.0, 1, 4); // SSresid + pResMat->PutString(ScGlobal::GetRscString(STR_NV_STR), 0, 3); // F + pResMat->PutDouble(0.0, 1, 2); // RMSE + pResMat->PutDouble(0.0, 0, 1); // SigmaSlope + if (bConstant) + pResMat->PutDouble(0.0, 1, 1); //SigmaIntercept + else + pResMat->PutString(ScGlobal::GetRscString(STR_NV_STR), 1, 1); + pResMat->PutDouble(1.0, 0, 2); // R^2 } - pResMat->PutDouble(_bRKP ? exp(m) : m, 0, 0); - pResMat->PutDouble(_bRKP ? exp(b) : b, 1, 0); - if (bStats) + else { - double fY = fCount*fSumSqrY-fSumY*fSumY; - double fSyx = fSumSqrY-b*fSumY-m*fSumXY; - double fR2 = f1*f1/(fX*fY); - pResMat->PutDouble (fR2, 0, 2); - if (fCount < 3.0) + double fFstatistic = (fSSreg / static_cast<double>(K)) + / (fSSresid / fDegreesFreedom); + pResMat->PutDouble(fFstatistic, 0, 3); + + // standard error of estimate + double fRMSE = sqrt(fSSresid / fDegreesFreedom); + pResMat->PutDouble(fRMSE, 1, 2); + + double fSigmaSlope = fRMSE / sqrt(fSumX2); + pResMat->PutDouble(fSigmaSlope, 0, 1); + + if (bConstant) { - pResMat->PutString(ScGlobal::GetRscString(STR_NO_VALUE), 0, 1 ); - pResMat->PutString(ScGlobal::GetRscString(STR_NO_VALUE), 1, 1 ); - pResMat->PutString(ScGlobal::GetRscString(STR_NO_VALUE), 1, 2 ); - pResMat->PutString(ScGlobal::GetRscString(STR_NO_VALUE), 0, 3 ); + double fSigmaIntercept = fRMSE + * sqrt(fMeanX*fMeanX/fSumX2 + 1.0/static_cast<double>(N)); + pResMat->PutDouble(fSigmaIntercept, 1, 1); } else { - pResMat->PutDouble(sqrt(fSyx*fCount/(fX*(fCount-2.0))), 0, 1); - pResMat->PutDouble(sqrt(fSyx*fSumSqrX/fX/(fCount-2.0)), 1, 1); - pResMat->PutDouble( - sqrt((fCount*fSumSqrY - fSumY*fSumY - f1*f1/fX)/ - (fCount*(fCount-2.0))), 1, 2); - if (fR2 == 1.0) - pResMat->PutString(ScGlobal::GetRscString(STR_NO_VALUE), 0, 3 ); - else - pResMat->PutDouble(fR2*(fCount-2.0)/(1.0-fR2), 0, 3); + pResMat->PutString(ScGlobal::GetRscString(STR_NV_STR), 1, 1); } - pResMat->PutDouble(((double)(nCY*nRY))-2.0, 1, 3); - pResMat->PutDouble(fY/fCount-fSyx, 0, 4); - pResMat->PutDouble(fSyx, 1, 4); + + double fR2 = fSSreg / (fSSreg + fSSresid); + pResMat->PutDouble(fR2, 0, 2); } } - } // if (nCase == 1) - if ( nCase != 1 ) + PushMatrix(pResMat); + } + else // calculate multiple regression; { - SCSIZE i, j, k; - if (!bStats) - pResMat = GetNewMat(M+1,1); - else - pResMat = GetNewMat(M+1,5); - if (!pResMat) + // Uses a QR decomposition X = QR. The solution B = (X'X)^(-1) * X' * Y + // becomes B = R^(-1) * Q' * Y + if (nCase ==2) // Y is column { - PushIllegalArgument(); - return; - } - ScMatrixRef pQ = GetNewMat(M+1, M+2); - ScMatrixRef pE = GetNewMat(M+2, 1); - ScMatrixRef pV = GetNewMat(M+1, 1); - pE->PutDouble(0.0, M+1); - pQ->FillDouble(0.0, 0, 0, M, M+1); - if (nCase == 2) - { - for (k = 0; k < N; k++) - { - double Yk = pMatY->GetDouble(k); - pE->PutDouble( pE->GetDouble(M+1)+Yk*Yk, M+1 ); - double sumYk = pQ->GetDouble(0, M+1) + Yk; - pQ->PutDouble( sumYk, 0, M+1 ); - pE->PutDouble( sumYk, 0 ); - for (i = 0; i < M; i++) - { - double Xik = pMatX->GetDouble(i,k); - double sumXik = pQ->GetDouble(0, i+1) + Xik; - pQ->PutDouble( sumXik, 0, i+1); - pQ->PutDouble( sumXik, i+1, 0); - double sumXikYk = pQ->GetDouble(i+1, M+1) + Xik * Yk; - pQ->PutDouble( sumXikYk, i+1, M+1); - pE->PutDouble( sumXikYk, i+1); - for (j = i; j < M; j++) - { - const double fVal = pMatX->GetDouble(j,k); - double sumXikXjk = pQ->GetDouble(j+1, i+1) + - Xik * fVal; - pQ->PutDouble( sumXikXjk, j+1, i+1); - pQ->PutDouble( sumXikXjk, i+1, j+1); - } - } + ::std::vector< double> aVecR(N); // for QR decomposition + // Enough memory for needed matrices? + ScMatrixRef pMeans = GetNewMat(K, 1); // mean of each column + ScMatrixRef pMatZ; // for Q' * Y , inter alia + if (bStats) + pMatZ = pMatY->Clone(); // Y is used in statistic, keep it + else + pMatZ = pMatY; // Y can be overwritten + ScMatrixRef pSlopes = GetNewMat(1,K); // from b1 to bK + if (!pMeans || !pMatZ || !pSlopes) + { + PushError(errCodeOverflow); + return; } - } - else - { - for (k = 0; k < N; k++) + if (bConstant) { - double Yk = pMatY->GetDouble(k); - pE->PutDouble( pE->GetDouble(M+1)+Yk*Yk, M+1 ); - double sumYk = pQ->GetDouble(0, M+1) + Yk; - pQ->PutDouble( sumYk, 0, M+1 ); - pE->PutDouble( sumYk, 0 ); - for (i = 0; i < M; i++) - { - double Xki = pMatX->GetDouble(k,i); - double sumXki = pQ->GetDouble(0, i+1) + Xki; - pQ->PutDouble( sumXki, 0, i+1); - pQ->PutDouble( sumXki, i+1, 0); - double sumXkiYk = pQ->GetDouble(i+1, M+1) + Xki * Yk; - pQ->PutDouble( sumXkiYk, i+1, M+1); - pE->PutDouble( sumXkiYk, i+1); - for (j = i; j < M; j++) - { - const double fVal = pMatX->GetDouble(k,j); - double sumXkiXkj = pQ->GetDouble(j+1, i+1) + - Xki * fVal; - pQ->PutDouble( sumXkiXkj, j+1, i+1); - pQ->PutDouble( sumXkiXkj, i+1, j+1); - } - } + lcl_CalculateColumnMeans(pMatX, pMeans, K, N); + lcl_CalculateColumnsDelta(pMatX, pMeans, K, N); } - } - if ( !Calculate4(_bRKP,pResMat,pQ,bConstant,N,M) ) - return; - - if (bStats) - Calculate(pResMat,pE,pQ,pV,pMatX,bConstant,N,M,nCase); - } - PushMatrix(pResMat); -} - -void ScInterpreter::ScRKP() -{ - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScRKP" ); - CalulateRGPRKP(TRUE); -} -// ----------------------------------------------------------------------------- -bool ScInterpreter::Calculate4(BOOL _bExp,ScMatrixRef& pResMat,ScMatrixRef& pQ,BOOL bConstant,SCSIZE N,SCSIZE M) -{ - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::Calculate4" ); - pQ->PutDouble((double)N, 0, 0); - if (bConstant) - { - SCSIZE S, L; - for (S = 0; S < M+1; S++) - { - SCSIZE i = S; - while (i < M+1 && pQ->GetDouble(i, S) == 0.0) - i++; - if (i >= M+1) + if (!lcl_CalculateQRdecomposition(pMatX, aVecR, K, N)) { PushNoValue(); - return false; + return; } - double fVal; - for (L = 0; L < M+2; L++) + // Later on we will divide by elements of aVecR, so make sure + // that they aren't zero. + bool bIsSingular=false; + for (SCSIZE row=0; row < K && !bIsSingular; row++) + bIsSingular = bIsSingular || aVecR[row]==0.0; + if (bIsSingular) { - fVal = pQ->GetDouble(S, L); - pQ->PutDouble(pQ->GetDouble(i, L), S, L); - pQ->PutDouble(fVal, i, L); + PushNoValue(); + return; } - fVal = 1.0/pQ->GetDouble(S, S); - for (L = 0; L < M+2; L++) - pQ->PutDouble(pQ->GetDouble(S, L)*fVal, S, L); - for (i = 0; i < M+1; i++) + // Z = Q' Y; + for (SCSIZE col = 0; col < K; col++) { - if (i != S) - { - fVal = -pQ->GetDouble(i, S); - for (L = 0; L < M+2; L++) - pQ->PutDouble( - pQ->GetDouble(i,L)+fVal*pQ->GetDouble(S,L),i,L); - } + lcl_ApplyHouseholderTransformation(pMatX, col, pMatZ, N); } - } - } - else - { - if ( !Calculate3(M,pQ) ) - return false; + // B = R^(-1) * Q' * Y <=> B = R^(-1) * Z <=> R * B = Z + // result Z should have zeros for index>=K; if not, ignore values + for (SCSIZE col = 0; col < K ; col++) + { + pSlopes->PutDouble( pMatZ->GetDouble(col), col); + } + lcl_SolveWithUpperRightTriangle(pMatX, aVecR, pSlopes, K, false); + double fIntercept = 0.0; + if (bConstant) + fIntercept = fMeanY - lcl_GetSumProduct(pMeans,pSlopes,K); + // Fill first line in result matrix + pResMat->PutDouble(_bRKP ? exp(fIntercept) : fIntercept, K, 0 ); + for (SCSIZE i = 0; i < K; i++) + pResMat->PutDouble(_bRKP ? exp(pSlopes->GetDouble(i)) + : pSlopes->GetDouble(i) , K-1-i, 0); - } - for (SCSIZE i = 0; i < M+1; i++) - { - const double d = pQ->GetDouble(M-i,M+1); - pResMat->PutDouble(_bExp ? exp(d) : d, i, 0); - } // for (SCSIZE i = 0; i < M+1; i++) - return true; -} -ScMatrixRef ScInterpreter::Calculate2(const BOOL bConstant,const SCSIZE M ,const SCSIZE N,ScMatrixRef& pMatX,ScMatrixRef& pMatY,BYTE nCase) -{ - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::Calculate2" ); - SCSIZE i, j, k; - ScMatrixRef pQ = GetNewMat(M+1, M+2); - ScMatrixRef pE = GetNewMat(M+2, 1); - pE->PutDouble(0.0, M+1); - pQ->FillDouble(0.0, 0, 0, M, M+1); - if (nCase == 2) - { - for (k = 0; k < N; k++) - { - pE->PutDouble( - pE->GetDouble(M+1)+pMatY->GetDouble(k)*pMatY->GetDouble(k), M+1); - pQ->PutDouble(pQ->GetDouble(0, M+1) + pMatY->GetDouble(k), 0, M+1); - pE->PutDouble(pQ->GetDouble(0, M+1), 0); - for (i = 0; i < M; i++) + if (bStats) { - pQ->PutDouble(pQ->GetDouble(0, i+1)+pMatX->GetDouble(i,k), 0, i+1); - pQ->PutDouble(pQ->GetDouble(0, i+1), i+1, 0); - pQ->PutDouble(pQ->GetDouble(i+1, M+1) + - pMatX->GetDouble(i,k)*pMatY->GetDouble(k), i+1, M+1); - pE->PutDouble(pQ->GetDouble(i+1, M+1), i+1); - for (j = i; j < M; j++) + double fSSreg = 0.0; + double fSSresid = 0.0; + // re-use memory of Z; + pMatZ->FillDouble(0.0, 0, 0, 0, N-1); + // Z = R * Slopes + lcl_ApplyUpperRightTriangle(pMatX, aVecR, pSlopes, pMatZ, K, false); + // Z = Q * Z, that is Q * R * Slopes = X * Slopes + for (SCSIZE colp1 = K; colp1 > 0; colp1--) { - pQ->PutDouble(pQ->GetDouble(j+1, i+1) + - pMatX->GetDouble(i,k)*pMatX->GetDouble(j,k), j+1, i+1); - pQ->PutDouble(pQ->GetDouble(j+1, i+1), i+1, j+1); + lcl_ApplyHouseholderTransformation(pMatX, colp1-1, pMatZ,N); } - } - } - } - else - { - for (k = 0; k < N; k++) - { - pE->PutDouble( - pE->GetDouble(M+1)+pMatY->GetDouble(k)*pMatY->GetDouble(k), M+1); - pQ->PutDouble(pQ->GetDouble(0, M+1) + pMatY->GetDouble(k), 0, M+1); - pE->PutDouble(pQ->GetDouble(0, M+1), 0); - for (i = 0; i < M; i++) - { - pQ->PutDouble(pQ->GetDouble(0, i+1)+pMatX->GetDouble(k,i), 0, i+1); - pQ->PutDouble(pQ->GetDouble(0, i+1), i+1, 0); - pQ->PutDouble(pQ->GetDouble(i+1, M+1) + - pMatX->GetDouble(k,i)*pMatY->GetDouble(k), i+1, M+1); - pE->PutDouble(pQ->GetDouble(i+1, M+1), i+1); - for (j = i; j < M; j++) + fSSreg =lcl_GetSumProduct(pMatZ, pMatZ, N); + // re-use Y for residuals, Y = Y-Z + for (SCSIZE row = 0; row < N; row++) + pMatY->PutDouble(pMatY->GetDouble(row) - pMatZ->GetDouble(row), row); + fSSresid = lcl_GetSumProduct(pMatY, pMatY, N); + pResMat->PutDouble(fSSreg, 0, 4); + pResMat->PutDouble(fSSresid, 1, 4); + + double fDegreesFreedom =static_cast<double>( (bConstant) ? N-K-1 : N-K ); + pResMat->PutDouble(fDegreesFreedom, 1, 3); + + if (fDegreesFreedom == 0.0 || fSSresid == 0.0 || fSSreg == 0.0) + { // exact fit; incl. observed values Y are identical + pResMat->PutDouble(0.0, 1, 4); // SSresid + // F = (SSreg/K) / (SSresid/df) = #DIV/0! + pResMat->PutString(ScGlobal::GetRscString(STR_NV_STR), 0, 3); // F + // RMSE = sqrt(SSresid / df) = sqrt(0 / df) = 0 + pResMat->PutDouble(0.0, 1, 2); // RMSE + // SigmaSlope[i] = RMSE * sqrt(matrix[i,i]) = 0 * sqrt(...) = 0 + for (SCSIZE i=0; i<K; i++) + pResMat->PutDouble(0.0, K-1-i, 1); + + // SigmaIntercept = RMSE * sqrt(...) = 0 + if (bConstant) + pResMat->PutDouble(0.0, K, 1); //SigmaIntercept + else + pResMat->PutString(ScGlobal::GetRscString(STR_NV_STR), K, 1); + + // R^2 = SSreg / (SSreg + SSresid) = 1.0 + pResMat->PutDouble(1.0, 0, 2); // R^2 + } + else { - pQ->PutDouble(pQ->GetDouble(j+1, i+1) + - pMatX->GetDouble(k, i)*pMatX->GetDouble(k, j), j+1, i+1); - pQ->PutDouble(pQ->GetDouble(j+1, i+1), i+1, j+1); + double fFstatistic = (fSSreg / static_cast<double>(K)) + / (fSSresid / fDegreesFreedom); + pResMat->PutDouble(fFstatistic, 0, 3); + + // standard error of estimate = root mean SSE + double fRMSE = sqrt(fSSresid / fDegreesFreedom); + pResMat->PutDouble(fRMSE, 1, 2); + + // standard error of slopes + // = RMSE * sqrt(diagonal element of (R' R)^(-1) ) + // standard error of intercept + // = RMSE * sqrt( Xmean * (R' R)^(-1) * Xmean' + 1/N) + // (R' R)^(-1) = R^(-1) * (R')^(-1). Do not calculate it as + // a whole matrix, but iterate over unit vectors. + double fSigmaSlope = 0.0; + double fSigmaIntercept = 0.0; + double fPart; // for Xmean * single column of (R' R)^(-1) + for (SCSIZE col = 0; col < K; col++) + { + //re-use memory of MatZ + pMatZ->FillDouble(0.0,0,0,0,K-1); // Z = unit vector e + pMatZ->PutDouble(1.0, col); + //Solve R' * Z = e + lcl_SolveWithLowerLeftTriangle(pMatX, aVecR, pMatZ, K, false); + // Solve R * Znew = Zold + lcl_SolveWithUpperRightTriangle(pMatX, aVecR, pMatZ, K, false); + // now Z is column col in (R' R)^(-1) + fSigmaSlope = fRMSE * sqrt(pMatZ->GetDouble(col)); + pResMat->PutDouble(fSigmaSlope, K-1-col, 1); + // (R' R) ^(-1) is symmetric + if (bConstant) + { + fPart = lcl_GetSumProduct(pMeans, pMatZ, K); + fSigmaIntercept += fPart * pMeans->GetDouble(col); + } + } + if (bConstant) + { + fSigmaIntercept = fRMSE + * sqrt(fSigmaIntercept + 1.0 / static_cast<double>(N)); + pResMat->PutDouble(fSigmaIntercept, K, 1); + } + else + { + pResMat->PutString(ScGlobal::GetRscString(STR_NV_STR), K, 1); + } + + double fR2 = fSSreg / (fSSreg + fSSresid); + pResMat->PutDouble(fR2, 0, 2); } } + PushMatrix(pResMat); } - } - pQ->PutDouble((double)N, 0, 0); - if (bConstant) - { - SCSIZE S, L; - for (S = 0; S < M+1; S++) + else // nCase == 3, Y is row, all matrices are transposed { - i = S; - while (i < M+1 && pQ->GetDouble(i, S) == 0.0) - i++; - if (i >= M+1) + ::std::vector< double> aVecR(N); // for QR decomposition + // Enough memory for needed matrices? + ScMatrixRef pMeans = GetNewMat(1, K); // mean of each row + ScMatrixRef pMatZ; // for Q' * Y , inter alia + if (bStats) + pMatZ = pMatY->Clone(); // Y is used in statistic, keep it + else + pMatZ = pMatY; // Y can be overwritten + ScMatrixRef pSlopes = GetNewMat(K,1); // from b1 to bK + if (!pMeans || !pMatZ || !pSlopes) + { + PushError(errCodeOverflow); + return; + } + if (bConstant) + { + lcl_CalculateRowMeans(pMatX, pMeans, N, K); + lcl_CalculateRowsDelta(pMatX, pMeans, N, K); + } + + if (!lcl_TCalculateQRdecomposition(pMatX, aVecR, K, N)) + { + PushNoValue(); + return; + } + + // Later on we will divide by elements of aVecR, so make sure + // that they aren't zero. + bool bIsSingular=false; + for (SCSIZE row=0; row < K && !bIsSingular; row++) + bIsSingular = bIsSingular || aVecR[row]==0.0; + if (bIsSingular) { PushNoValue(); - return ScMatrixRef(); + return; } - double fVal; - for (L = 0; L < M+2; L++) + // Z = Q' Y + for (SCSIZE row = 0; row < K; row++) { - fVal = pQ->GetDouble(S, L); - pQ->PutDouble(pQ->GetDouble(i, L), S, L); - pQ->PutDouble(fVal, i, L); + lcl_TApplyHouseholderTransformation(pMatX, row, pMatZ, N); } - fVal = 1.0/pQ->GetDouble(S, S); - for (L = 0; L < M+2; L++) - pQ->PutDouble(pQ->GetDouble(S, L)*fVal, S, L); - for (i = 0; i < M+1; i++) + // B = R^(-1) * Q' * Y <=> B = R^(-1) * Z <=> R * B = Z + // result Z should have zeros for index>=K; if not, ignore values + for (SCSIZE col = 0; col < K ; col++) { - if (i != S) + pSlopes->PutDouble( pMatZ->GetDouble(col), col); + } + lcl_SolveWithUpperRightTriangle(pMatX, aVecR, pSlopes, K, true); + double fIntercept = 0.0; + if (bConstant) + fIntercept = fMeanY - lcl_GetSumProduct(pMeans,pSlopes,K); + // Fill first line in result matrix + pResMat->PutDouble(_bRKP ? exp(fIntercept) : fIntercept, K, 0 ); + for (SCSIZE i = 0; i < K; i++) + pResMat->PutDouble(_bRKP ? exp(pSlopes->GetDouble(i)) + : pSlopes->GetDouble(i) , K-1-i, 0); + + + if (bStats) + { + double fSSreg = 0.0; + double fSSresid = 0.0; + // re-use memory of Z; + pMatZ->FillDouble(0.0, 0, 0, N-1, 0); + // Z = R * Slopes + lcl_ApplyUpperRightTriangle(pMatX, aVecR, pSlopes, pMatZ, K, true); + // Z = Q * Z, that is Q * R * Slopes = X * Slopes + for (SCSIZE rowp1 = K; rowp1 > 0; rowp1--) { - fVal = -pQ->GetDouble(i, S); - for (L = 0; L < M+2; L++) - pQ->PutDouble( - pQ->GetDouble(i,L)+fVal*pQ->GetDouble(S,L),i,L); + lcl_TApplyHouseholderTransformation(pMatX, rowp1-1, pMatZ,N); + } + fSSreg =lcl_GetSumProduct(pMatZ, pMatZ, N); + // re-use Y for residuals, Y = Y-Z + for (SCSIZE col = 0; col < N; col++) + pMatY->PutDouble(pMatY->GetDouble(col) - pMatZ->GetDouble(col), col); + fSSresid = lcl_GetSumProduct(pMatY, pMatY, N); + pResMat->PutDouble(fSSreg, 0, 4); + pResMat->PutDouble(fSSresid, 1, 4); + + double fDegreesFreedom =static_cast<double>( (bConstant) ? N-K-1 : N-K ); + pResMat->PutDouble(fDegreesFreedom, 1, 3); + + if (fDegreesFreedom == 0.0 || fSSresid == 0.0 || fSSreg == 0.0) + { // exact fit; incl. case observed values Y are identical + pResMat->PutDouble(0.0, 1, 4); // SSresid + // F = (SSreg/K) / (SSresid/df) = #DIV/0! + pResMat->PutString(ScGlobal::GetRscString(STR_NV_STR), 0, 3); // F + // RMSE = sqrt(SSresid / df) = sqrt(0 / df) = 0 + pResMat->PutDouble(0.0, 1, 2); // RMSE + // SigmaSlope[i] = RMSE * sqrt(matrix[i,i]) = 0 * sqrt(...) = 0 + for (SCSIZE i=0; i<K; i++) + pResMat->PutDouble(0.0, K-1-i, 1); + + // SigmaIntercept = RMSE * sqrt(...) = 0 + if (bConstant) + pResMat->PutDouble(0.0, K, 1); //SigmaIntercept + else + pResMat->PutString(ScGlobal::GetRscString(STR_NV_STR), K, 1); + + // R^2 = SSreg / (SSreg + SSresid) = 1.0 + pResMat->PutDouble(1.0, 0, 2); // R^2 + } + else + { + double fFstatistic = (fSSreg / static_cast<double>(K)) + / (fSSresid / fDegreesFreedom); + pResMat->PutDouble(fFstatistic, 0, 3); + + // standard error of estimate = root mean SSE + double fRMSE = sqrt(fSSresid / fDegreesFreedom); + pResMat->PutDouble(fRMSE, 1, 2); + + // standard error of slopes + // = RMSE * sqrt(diagonal element of (R' R)^(-1) ) + // standard error of intercept + // = RMSE * sqrt( Xmean * (R' R)^(-1) * Xmean' + 1/N) + // (R' R)^(-1) = R^(-1) * (R')^(-1). Do not calculate it as + // a whole matrix, but iterate over unit vectors. + // (R' R) ^(-1) is symmetric + double fSigmaSlope = 0.0; + double fSigmaIntercept = 0.0; + double fPart; // for Xmean * single col of (R' R)^(-1) + for (SCSIZE row = 0; row < K; row++) + { + //re-use memory of MatZ + pMatZ->FillDouble(0.0,0,0,K-1,0); // Z = unit vector e + pMatZ->PutDouble(1.0, row); + //Solve R' * Z = e + lcl_SolveWithLowerLeftTriangle(pMatX, aVecR, pMatZ, K, true); + // Solve R * Znew = Zold + lcl_SolveWithUpperRightTriangle(pMatX, aVecR, pMatZ, K, true); + // now Z is column col in (R' R)^(-1) + fSigmaSlope = fRMSE * sqrt(pMatZ->GetDouble(row)); + pResMat->PutDouble(fSigmaSlope, K-1-row, 1); + if (bConstant) + { + fPart = lcl_GetSumProduct(pMeans, pMatZ, K); + fSigmaIntercept += fPart * pMeans->GetDouble(row); + } + } + if (bConstant) + { + fSigmaIntercept = fRMSE + * sqrt(fSigmaIntercept + 1.0 / static_cast<double>(N)); + pResMat->PutDouble(fSigmaIntercept, K, 1); + } + else + { + pResMat->PutString(ScGlobal::GetRscString(STR_NV_STR), K, 1); + } + + double fR2 = fSSreg / (fSSreg + fSSresid); + pResMat->PutDouble(fR2, 0, 2); } } + PushMatrix(pResMat); } } - else - { - if ( !Calculate3(M,pQ) ) - return ScMatrixRef(); - } - return pQ; -} -bool ScInterpreter::Calculate3(const SCSIZE M ,ScMatrixRef& pQ) -{ - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::Calculate3" ); - SCSIZE S, L; - for (S = 1; S < M+1; S++) - { - SCSIZE i = S; - while (i < M+1 && pQ->GetDouble(i, S) == 0.0) - i++; - if (i >= M+1) - { - PushNoValue(); - return ScMatrixRef(); - } - double fVal; - for (L = 1; L < M+2; L++) - { - fVal = pQ->GetDouble(S, L); - pQ->PutDouble(pQ->GetDouble(i, L), S, L); - pQ->PutDouble(fVal, i, L); - } - fVal = 1.0/pQ->GetDouble(S, S); - for (L = 1; L < M+2; L++) - pQ->PutDouble(pQ->GetDouble(S, L)*fVal, S, L); - for (i = 1; i < M+1; i++) - { - if (i != S) - { - fVal = -pQ->GetDouble(i, S); - for (L = 1; L < M+2; L++) - pQ->PutDouble( - pQ->GetDouble(i,L)+fVal*pQ->GetDouble(S,L),i,L); - } - } - pQ->PutDouble(0.0, 0, M+1); - } // for (S = 1; S < M+1; S++) - return true; } void ScInterpreter::ScTrend() { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScTrend" ); - CalculateTrendGrowth(FALSE); + CalculateTrendGrowth(false); } -void ScInterpreter::CalculateTrendGrowth(BOOL _bGrowth) + +void ScInterpreter::ScGrowth() +{ + RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScGrowth" ); + CalculateTrendGrowth(true); +} + +void ScInterpreter::CalculateTrendGrowth(bool _bGrowth) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::CalculateTrendGrowth" ); BYTE nParamCount = GetByte(); - if ( !MustHaveParamCount( nParamCount, 1, 4 ) ) + if (!MustHaveParamCount( nParamCount, 1, 4 )) return; - BOOL bConstant; + + // optional forth parameter + bool bConstant; if (nParamCount == 4) bConstant = GetBool(); else - bConstant = TRUE; - ScMatrixRef pMatX; - ScMatrixRef pMatY; + bConstant = true; + + // The third parameter may be missing in ODF, although the forth parameter + // is present. Default values depend on data not yet read. ScMatrixRef pMatNewX; if (nParamCount >= 3) - pMatNewX = GetMatrix(); + { + if (IsMissing()) + { + Pop(); + pMatNewX = NULL; + } + else + pMatNewX = GetMatrix(); + } else pMatNewX = NULL; + + //In ODF1.2 empty second parameter (which is two ;; ) is allowed + //Defaults will be set in CheckMatrix + ScMatrixRef pMatX; if (nParamCount >= 2) - pMatX = GetMatrix(); + { + if (IsMissing()) + { + Pop(); + pMatX = NULL; + } + else + { + pMatX = GetMatrix(); + } + } else pMatX = NULL; + + ScMatrixRef pMatY; pMatY = GetMatrix(); if (!pMatY) { PushIllegalParameter(); return; - } // if (!pMatY) + } - BYTE nCase; // 1 = normal, 2,3 = mehrfach - SCSIZE nCX, nCY; - SCSIZE nRX, nRY; - SCSIZE M = 0, N = 0; - if ( !CheckMatrix(_bGrowth,TRUE,nCase,nCX,nCY,nRX,nRY,M,N,pMatX,pMatY) ) + // 1 = simple; 2 = multiple with Y as column; 3 = multiple with Y as row + BYTE nCase; + + SCSIZE nCX, nCY; // number of columns + SCSIZE nRX, nRY; //number of rows + SCSIZE K = 0, N = 0; // K=number of variables X, N=number of data samples + if (!CheckMatrix(_bGrowth,nCase,nCX,nCY,nRX,nRY,K,N,pMatX,pMatY)) + { + PushIllegalParameter(); return; + } + // Enough data samples? + if ((bConstant && (N<K+1)) || (!bConstant && (N<K)) || (N<1) || (K<1)) + { + PushIllegalParameter(); + return; + } + // Set default pMatNewX if necessary SCSIZE nCXN, nRXN; SCSIZE nCountXN; if (!pMatNewX) @@ -2603,128 +2974,223 @@ void ScInterpreter::CalculateTrendGrowth(BOOL _bGrowth) nCXN = nCX; nRXN = nRX; nCountXN = nCXN * nRXN; - pMatNewX = pMatX; + pMatNewX = pMatX->Clone(); // pMatX will be changed to X-meanX } else { pMatNewX->GetDimensions(nCXN, nRXN); - if ((nCase == 2 && nCX != nCXN) || (nCase == 3 && nRX != nRXN)) + if ((nCase == 2 && K != nCXN) || (nCase == 3 && K != nRXN)) { PushIllegalArgument(); return; } nCountXN = nCXN * nRXN; - for ( SCSIZE i = 0; i < nCountXN; i++ ) + for (SCSIZE i = 0; i < nCountXN; i++) if (!pMatNewX->IsValue(i)) { PushIllegalArgument(); return; } } - ScMatrixRef pResMat; + ScMatrixRef pResMat; // size depends on nCase if (nCase == 1) + pResMat = GetNewMat(nCXN,nRXN); + else { - double fCount = 0.0; - double fSumX = 0.0; - double fSumSqrX = 0.0; - double fSumY = 0.0; - double fSumSqrY = 0.0; - double fSumXY = 0.0; - double fValX, fValY; - SCSIZE i; - for (i = 0; i < nCY; i++) - for (SCSIZE j = 0; j < nRY; j++) - { - fValX = pMatX->GetDouble(i,j); - fValY = pMatY->GetDouble(i,j); - fSumX += fValX; - fSumSqrX += fValX * fValX; - fSumY += fValY; - fSumSqrY += fValY * fValY; - fSumXY += fValX*fValY; - fCount++; - } - if (fCount < 1.0) + if (nCase==2) + pResMat = GetNewMat(1,nRXN); + else + pResMat = GetNewMat(nCXN,1); + } + if (!pResMat) + { + PushError(errCodeOverflow); + return; + } + // Uses sum(x-MeanX)^2 and not [sum x^2]-N * MeanX^2 in case bConstant. + // Clone constant matrices, so that Mat = Mat - Mean is possible. + double fMeanY = 0.0; + if (bConstant) + { + ScMatrixRef pCopyX = pMatX->CloneIfConst(); + ScMatrixRef pCopyY = pMatY->CloneIfConst(); + if (!pCopyX || !pCopyY) { - PushNoValue(); + PushError(errStackOverflow); return; } - else + pMatX = pCopyX; + pMatY = pCopyY; + // DeltaY is possible here; DeltaX depends on nCase, so later + fMeanY = lcl_GetMeanOverAll(pMatY, N); + for (SCSIZE i=0; i<N; i++) { - double f1 = fCount*fSumXY-fSumX*fSumY; - double fX = fCount*fSumSqrX-fSumX*fSumX; - double b, m; - if (bConstant) - { - b = fSumY/fCount - f1/fX*fSumX/fCount; - m = f1/fX; - } - else + pMatY->PutDouble( ::rtl::math::approxSub(pMatY->GetDouble(i),fMeanY), i ); + } + } + + if (nCase==1) + { + // calculate simple regression + double fMeanX = 0.0; + if (bConstant) + { // Mat = Mat - Mean + fMeanX = lcl_GetMeanOverAll(pMatX, N); + for (SCSIZE i=0; i<N; i++) { - b = 0.0; - m = fSumXY/fSumSqrX; + pMatX->PutDouble( ::rtl::math::approxSub(pMatX->GetDouble(i),fMeanX), i ); } - pResMat = GetNewMat(nCXN, nRXN); - if (!pResMat) + } + double fSumXY = lcl_GetSumProduct(pMatX,pMatY,N); + double fSumX2 = lcl_GetSumProduct(pMatX,pMatX,N); + if (fSumX2==0.0) + { + PushNoValue(); // all x-values are identical + return; + } + double fSlope = fSumXY / fSumX2; + double fHelp; + if (bConstant) + { + double fIntercept = fMeanY - fSlope * fMeanX; + for (SCSIZE i = 0; i < nCountXN; i++) { - PushIllegalArgument(); - return; + fHelp = pMatNewX->GetDouble(i)*fSlope + fIntercept; + pResMat->PutDouble(_bGrowth ? exp(fHelp) : fHelp, i); } - for (i = 0; i < nCountXN; i++) + } + else + { + for (SCSIZE i = 0; i < nCountXN; i++) { - const double d = pMatNewX->GetDouble(i)*m+b; - pResMat->PutDouble(_bGrowth ? exp(d) : d, i); + fHelp = pMatNewX->GetDouble(i)*fSlope; + pResMat->PutDouble(_bGrowth ? exp(fHelp) : fHelp, i); } } } - else + else // calculate multiple regression; { - ScMatrixRef pQ = Calculate2(bConstant,M ,N,pMatX,pMatY,nCase); - if ( !pQ.Is() ) - return; - if (nCase == 2) + if (nCase ==2) // Y is column { - pResMat = GetNewMat(1, nRXN); - if (!pResMat) + ::std::vector< double> aVecR(N); // for QR decomposition + // Enough memory for needed matrices? + ScMatrixRef pMeans = GetNewMat(K, 1); // mean of each column + ScMatrixRef pSlopes = GetNewMat(1,K); // from b1 to bK + if (!pMeans || !pSlopes) { - PushIllegalArgument(); + PushError(errCodeOverflow); return; } - double fVal; - for (SCSIZE i = 0; i < nRXN; i++) + if (bConstant) + { + lcl_CalculateColumnMeans(pMatX, pMeans, K, N); + lcl_CalculateColumnsDelta(pMatX, pMeans, K, N); + } + if (!lcl_CalculateQRdecomposition(pMatX, aVecR, K, N)) + { + PushNoValue(); + return; + } + // Later on we will divide by elements of aVecR, so make sure + // that they aren't zero. + bool bIsSingular=false; + for (SCSIZE row=0; row < K && !bIsSingular; row++) + bIsSingular = bIsSingular || aVecR[row]==0.0; + if (bIsSingular) + { + PushNoValue(); + return; + } + // Z := Q' Y; Y is overwritten with result Z + for (SCSIZE col = 0; col < K; col++) + { + lcl_ApplyHouseholderTransformation(pMatX, col, pMatY, N); + } + // B = R^(-1) * Q' * Y <=> B = R^(-1) * Z <=> R * B = Z + // result Z should have zeros for index>=K; if not, ignore values + for (SCSIZE col = 0; col < K ; col++) + { + pSlopes->PutDouble( pMatY->GetDouble(col), col); + } + lcl_SolveWithUpperRightTriangle(pMatX, aVecR, pSlopes, K, false); + + // Fill result matrix + lcl_MFastMult(pMatNewX,pSlopes,pResMat,nRXN,K,1); + if (bConstant) { - fVal = pQ->GetDouble(0, M+1); - for (SCSIZE j = 0; j < M; j++) - fVal += pQ->GetDouble(j+1, M+1)*pMatNewX->GetDouble(j, i); - pResMat->PutDouble(_bGrowth ? exp(fVal) : fVal, i); + double fIntercept = fMeanY - lcl_GetSumProduct(pMeans,pSlopes,K); + for (SCSIZE row = 0; row < nRXN; row++) + pResMat->PutDouble(pResMat->GetDouble(row)+fIntercept, row); + } + if (_bGrowth) + { + for (SCSIZE i = 0; i < nRXN; i++) + pResMat->PutDouble(exp(pResMat->GetDouble(i)), i); } } else - { - pResMat = GetNewMat(nCXN, 1); - if (!pResMat) + { // nCase == 3, Y is row, all matrices are transposed + + ::std::vector< double> aVecR(N); // for QR decomposition + // Enough memory for needed matrices? + ScMatrixRef pMeans = GetNewMat(1, K); // mean of each row + ScMatrixRef pSlopes = GetNewMat(K,1); // row from b1 to bK + if (!pMeans || !pSlopes) { - PushIllegalArgument(); + PushError(errCodeOverflow); + return; + } + if (bConstant) + { + lcl_CalculateRowMeans(pMatX, pMeans, N, K); + lcl_CalculateRowsDelta(pMatX, pMeans, N, K); + } + if (!lcl_TCalculateQRdecomposition(pMatX, aVecR, K, N)) + { + PushNoValue(); return; } - double fVal; - for (SCSIZE i = 0; i < nCXN; i++) + // Later on we will divide by elements of aVecR, so make sure + // that they aren't zero. + bool bIsSingular=false; + for (SCSIZE row=0; row < K && !bIsSingular; row++) + bIsSingular = bIsSingular || aVecR[row]==0.0; + if (bIsSingular) { - fVal = pQ->GetDouble(0, M+1); - for (SCSIZE j = 0; j < M; j++) - fVal += pQ->GetDouble(j+1, M+1)*pMatNewX->GetDouble(i, j); - pResMat->PutDouble(_bGrowth ? exp(fVal) : fVal, i); + PushNoValue(); + return; + } + // Z := Q' Y; Y is overwritten with result Z + for (SCSIZE row = 0; row < K; row++) + { + lcl_TApplyHouseholderTransformation(pMatX, row, pMatY, N); + } + // B = R^(-1) * Q' * Y <=> B = R^(-1) * Z <=> R * B = Z + // result Z should have zeros for index>=K; if not, ignore values + for (SCSIZE col = 0; col < K ; col++) + { + pSlopes->PutDouble( pMatY->GetDouble(col), col); + } + lcl_SolveWithUpperRightTriangle(pMatX, aVecR, pSlopes, K, true); + + // Fill result matrix + lcl_MFastMult(pSlopes,pMatNewX,pResMat,1,K,nCXN); + if (bConstant) + { + double fIntercept = fMeanY - lcl_GetSumProduct(pMeans,pSlopes,K); + for (SCSIZE col = 0; col < nCXN; col++) + pResMat->PutDouble(pResMat->GetDouble(col)+fIntercept, col); + } + if (_bGrowth) + { + for (SCSIZE i = 0; i < nCXN; i++) + pResMat->PutDouble(exp(pResMat->GetDouble(i)), i); } } } PushMatrix(pResMat); } -void ScInterpreter::ScGrowth() -{ - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "sc", "er", "ScInterpreter::ScGrowth" ); - CalculateTrendGrowth(TRUE); -} void ScInterpreter::ScMatRef() { @@ -2747,8 +3213,9 @@ void ScInterpreter::ScMatRef() PushNA(); else { - ScMatValType nMatValType; - const ScMatrixValue* pMatVal = pMat->Get( nC, nR, nMatValType); + const ScMatrixValue nMatVal = pMat->Get( nC, nR); + ScMatValType nMatValType = nMatVal.nType; + if (ScMatrix::IsNonValueType( nMatValType)) { if (ScMatrix::IsEmptyPathType( nMatValType)) @@ -2762,11 +3229,11 @@ void ScInterpreter::ScMatRef() PushTempToken( new ScEmptyCellToken( false, true)); } else - PushString( pMatVal->GetString() ); + PushString( nMatVal.GetString() ); } else { - PushDouble(pMatVal->fVal); // handles DoubleError + PushDouble(nMatVal.fVal); // handles DoubleError pDok->GetNumberFormatInfo( nCurFmtType, nCurFmtIndex, aAdr, pCell ); nFuncFmtType = nCurFmtType; nFuncFmtIndex = nCurFmtIndex; diff --git a/sc/source/core/tool/makefile.mk b/sc/source/core/tool/makefile.mk index b1cad5831a28..15ec283995e2 100644 --- a/sc/source/core/tool/makefile.mk +++ b/sc/source/core/tool/makefile.mk @@ -44,9 +44,21 @@ AUTOSEG=true # --- Files -------------------------------------------------------- SLOFILES = \ + $(EXCEPTIONSFILES) \ + $(SLO)$/addinhelpid.obj \ + $(SLO)$/detdata.obj \ + $(SLO)$/filtopt.obj \ + $(SLO)$/hints.obj \ + $(SLO)$/inputopt.obj \ + $(SLO)$/navicfg.obj \ + $(SLO)$/printopt.obj \ + $(SLO)$/rechead.obj \ + $(SLO)$/refdata.obj \ + $(SLO)$/refreshtimer.obj + +EXCEPTIONSFILES= \ $(SLO)$/addincfg.obj \ $(SLO)$/addincol.obj \ - $(SLO)$/addinhelpid.obj \ $(SLO)$/addinlis.obj \ $(SLO)$/address.obj \ $(SLO)$/adiasync.obj \ @@ -55,11 +67,11 @@ SLOFILES = \ $(SLO)$/callform.obj \ $(SLO)$/cellform.obj \ $(SLO)$/cellkeytranslator.obj \ - $(SLO)$/charthelper.obj \ $(SLO)$/chartarr.obj \ - $(SLO)$/chartpos.obj \ + $(SLO)$/charthelper.obj \ $(SLO)$/chartlis.obj \ $(SLO)$/chartlock.obj \ + $(SLO)$/chartpos.obj \ $(SLO)$/chgtrack.obj \ $(SLO)$/chgviset.obj \ $(SLO)$/collect.obj \ @@ -67,15 +79,11 @@ SLOFILES = \ $(SLO)$/consoli.obj \ $(SLO)$/dbcolect.obj \ $(SLO)$/ddelink.obj \ - $(SLO)$/detdata.obj \ - $(SLO)$/detfunc.obj \ + $(SLO)$/detfunc.obj \ $(SLO)$/docoptio.obj \ $(SLO)$/doubleref.obj \ $(SLO)$/editutil.obj \ - $(SLO)$/filtopt.obj \ $(SLO)$/formulaparserpool.obj \ - $(SLO)$/hints.obj \ - $(SLO)$/inputopt.obj \ $(SLO)$/interpr1.obj \ $(SLO)$/interpr2.obj \ $(SLO)$/interpr3.obj \ @@ -83,11 +91,9 @@ SLOFILES = \ $(SLO)$/interpr5.obj \ $(SLO)$/interpr6.obj \ $(SLO)$/lookupcache.obj \ - $(SLO)$/navicfg.obj \ $(SLO)$/odffmap.obj \ $(SLO)$/optutil.obj \ $(SLO)$/parclass.obj \ - $(SLO)$/printopt.obj \ $(SLO)$/prnsave.obj \ $(SLO)$/progress.obj \ $(SLO)$/queryparam.obj \ @@ -95,13 +101,10 @@ SLOFILES = \ $(SLO)$/rangenam.obj \ $(SLO)$/rangeseq.obj \ $(SLO)$/rangeutl.obj \ - $(SLO)$/rechead.obj \ - $(SLO)$/refdata.obj \ $(SLO)$/reffind.obj \ - $(SLO)$/refreshtimer.obj \ $(SLO)$/reftokenhelper.obj \ - $(SLO)$/refupdat.obj \ $(SLO)$/scmatrix.obj \ + $(SLO)$/refupdat.obj \ $(SLO)$/simplerangelist.obj \ $(SLO)$/stringutil.obj \ $(SLO)$/subtotal.obj \ @@ -111,31 +114,6 @@ SLOFILES = \ $(SLO)$/viewopti.obj \ $(SLO)$/zforauto.obj -EXCEPTIONSFILES= \ - $(SLO)$/addincol.obj \ - $(SLO)$/cellkeytranslator.obj \ - $(SLO)$/charthelper.obj \ - $(SLO)$/chartarr.obj \ - $(SLO)$/chartlis.obj \ - $(SLO)$/chartlock.obj \ - $(SLO)$/chgtrack.obj \ - $(SLO)$/compiler.obj \ - $(SLO)$/detfunc.obj \ - $(SLO)$/doubleref.obj \ - $(SLO)$/formulaparserpool.obj \ - $(SLO)$/interpr1.obj \ - $(SLO)$/interpr2.obj \ - $(SLO)$/interpr3.obj \ - $(SLO)$/interpr4.obj \ - $(SLO)$/interpr5.obj \ - $(SLO)$/lookupcache.obj \ - $(SLO)$/prnsave.obj \ - $(SLO)$/queryparam.obj \ - $(SLO)$/reftokenhelper.obj \ - $(SLO)$/simplerangelist.obj \ - $(SLO)$/stringutil.obj \ - $(SLO)$/token.obj - # [kh] POWERPC compiler problem .IF "$(OS)$(COM)$(CPUNAME)"=="LINUXGCCPOWERPC" NOOPTFILES= \ diff --git a/sc/source/core/tool/navicfg.cxx b/sc/source/core/tool/navicfg.cxx index a0b9b629bc34..703c15175536 100644 --- a/sc/source/core/tool/navicfg.cxx +++ b/sc/source/core/tool/navicfg.cxx @@ -42,7 +42,7 @@ //------------------------------------------------------------------ ScNavipiCfg::ScNavipiCfg() : -//! ConfigItem( OUString::createFromAscii( CFGPATH_NAVIPI ) ), +//! ConfigItem( OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_NAVIPI )) ), nListMode(0), nDragMode(0), nRootType(0) diff --git a/sc/source/core/tool/odffmap.cxx b/sc/source/core/tool/odffmap.cxx index 28b13e249a07..fc89705d1c39 100644 --- a/sc/source/core/tool/odffmap.cxx +++ b/sc/source/core/tool/odffmap.cxx @@ -138,13 +138,11 @@ ScCompiler::AddInMap ScCompiler::maAddInMap[] = { "FVSCHEDULE", "FVSCHEDULE", false, "com.sun.star.sheet.addin.Analysis.getFvschedule", "COM.SUN.STAR.SHEET.ADDIN.ANALYSIS.GETFVSCHEDULE" }, }; -// static const ScCompiler::AddInMap* ScCompiler::GetAddInMap() { return maAddInMap; } -// static size_t ScCompiler::GetAddInMapCount() { return SAL_N_ELEMENTS(maAddInMap); diff --git a/sc/source/core/tool/optutil.cxx b/sc/source/core/tool/optutil.cxx index 03f4174c8613..377676e5647f 100644 --- a/sc/source/core/tool/optutil.cxx +++ b/sc/source/core/tool/optutil.cxx @@ -39,12 +39,10 @@ //------------------------------------------------------------------ -// static BOOL ScOptionsUtil::IsMetricSystem() { //! which language should be used here - system language or installed office language? -// MeasurementSystem eSys = Application::GetAppInternational().GetMeasurementSystem(); MeasurementSystem eSys = ScGlobal::pLocaleData->getMeasurementSystemEnum(); return ( eSys == MEASURE_METRIC ); diff --git a/sc/source/core/tool/parclass.cxx b/sc/source/core/tool/parclass.cxx index 9af15044f69a..885d118ab4af 100644 --- a/sc/source/core/tool/parclass.cxx +++ b/sc/source/core/tool/parclass.cxx @@ -38,12 +38,14 @@ #include "funcdesc.hxx" #include <unotools/charclass.hxx> #include <tools/debug.hxx> +#include <sal/macros.h> #include <string.h> #if OSL_DEBUG_LEVEL > 1 // the documentation thingy #include <stdio.h> #include <com/sun/star/sheet/FormulaLanguage.hpp> +#include <rtl/strbuf.hxx> #include "compiler.hxx" #include "sc.hrc" // VAR_ARGS #endif @@ -214,7 +216,7 @@ void ScParameterClassification::Init() memset( pData, 0, sizeof(RunData) * (SC_OPCODE_LAST_OPCODE_ID + 1)); // init from specified static data above - for ( size_t i=0; i < sizeof(pRawData) / sizeof(RawData); ++i ) + for ( size_t i=0; i < SAL_N_ELEMENTS(pRawData); ++i ) { const RawData* pRaw = &pRawData[i]; if ( pRaw->eOp > SC_OPCODE_LAST_OPCODE_ID ) @@ -414,9 +416,12 @@ void ScParameterClassification::MergeArgumentsFromFunctionResource() } if ( nArgs > CommonData::nMaxParams ) { - DBG_ERROR2( "ScParameterClassification::Init: too many arguments in listed function: %s: %d", - ByteString( *(pDesc->pFuncName), - RTL_TEXTENCODING_UTF8).GetBuffer(), nArgs); + rtl::OStringBuffer aBuf; + aBuf.append("ScParameterClassification::Init: too many arguments in listed function: "); + aBuf.append(rtl::OUStringToOString(*(pDesc->pFuncName), RTL_TEXTENCODING_UTF8)); + aBuf.append(": "); + aBuf.append(nArgs); + OSL_ENSURE(false, aBuf.getStr()); nArgs = CommonData::nMaxParams; pRun->aData.bRepeatLast = true; } diff --git a/sc/source/core/tool/printopt.cxx b/sc/source/core/tool/printopt.cxx index f895bbc0a6ca..3facdb673d6c 100644 --- a/sc/source/core/tool/printopt.cxx +++ b/sc/source/core/tool/printopt.cxx @@ -147,11 +147,10 @@ Sequence<OUString> ScPrintCfg::GetPropertyNames() } ScPrintCfg::ScPrintCfg() : - ConfigItem( OUString::createFromAscii( CFGPATH_PRINT ) ) + ConfigItem( OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_PRINT )) ) { Sequence<OUString> aNames = GetPropertyNames(); Sequence<Any> aValues = GetProperties(aNames); -// EnableNotification(aNames); const Any* pValues = aValues.getConstArray(); DBG_ASSERT(aValues.getLength() == aNames.getLength(), "GetProperties failed"); if(aValues.getLength() == aNames.getLength()) diff --git a/sc/source/core/tool/progress.cxx b/sc/source/core/tool/progress.cxx index 0a26b968f112..20b6440ce302 100644 --- a/sc/source/core/tool/progress.cxx +++ b/sc/source/core/tool/progress.cxx @@ -141,7 +141,6 @@ ScProgress::~ScProgress() } } -// static void ScProgress::CreateInterpretProgress( ScDocument* pDoc, BOOL bWait ) { @@ -167,7 +166,6 @@ void ScProgress::CreateInterpretProgress( ScDocument* pDoc, BOOL bWait ) } -// static void ScProgress::DeleteInterpretProgress() { @@ -178,7 +176,6 @@ void ScProgress::DeleteInterpretProgress() a refresh of the sheet window which may call CreateInterpretProgress and DeleteInterpretProgress again (from Output::DrawStrings), resulting in double deletion of 'pInterpretProgress'. */ -// if ( --nInterpretProgress == 0 ) if ( nInterpretProgress == 1 ) { if ( pInterpretProgress != &theDummyInterpretProgress ) diff --git a/sc/source/core/tool/rangelst.cxx b/sc/source/core/tool/rangelst.cxx index ed93713eb65f..c570655a351b 100644 --- a/sc/source/core/tool/rangelst.cxx +++ b/sc/source/core/tool/rangelst.cxx @@ -44,19 +44,129 @@ #include "rechead.hxx" #include "compiler.hxx" -// === ScRangeList ==================================================== +using ::std::vector; +using ::std::advance; +using ::std::find_if; +using ::std::for_each; +using ::formula::FormulaGrammar; -ScRangeList::~ScRangeList() +namespace { + +template<typename T> +class FindEnclosingRange : public ::std::unary_function<bool, ScRange*> +{ +public: + FindEnclosingRange(const T& rTest) : mrTest(rTest) {} + FindEnclosingRange(const FindEnclosingRange& r) : mrTest(r.mrTest) {} + bool operator() (const ScRange* pRange) const + { + return pRange->In(mrTest); + } +private: + const T& mrTest; +}; + +template<typename T> +class FindIntersectingRange : public ::std::unary_function<bool, ScRange*> +{ +public: + FindIntersectingRange(const T& rTest) : mrTest(rTest) {} + FindIntersectingRange(const FindIntersectingRange& r) : mrTest(r.mrTest) {} + bool operator() (const ScRange* pRange) const + { + return pRange->Intersects(mrTest); + } +private: + const T& mrTest; +}; + +class AppendToList : public ::std::unary_function<void, const ScRange*> +{ +public: + AppendToList(vector<ScRange*>& rRanges) : mrRanges(rRanges) {} + AppendToList(const AppendToList& r) : mrRanges(r.mrRanges) {} + void operator() (const ScRange* p) + { + mrRanges.push_back(new ScRange(*p)); + } +private: + vector<ScRange*>& mrRanges; +}; + +template<typename T> +struct DeleteObject : public ::std::unary_function<void, T*> { - for ( ScRangePtr pR = First(); pR; pR = Next() ) - delete pR; + void operator() (T* p) + { + delete p; + } +}; + +class CountCells : public ::std::unary_function<void, const ScRange*> +{ +public: + CountCells() : mnCellCount(0) {} + CountCells(const CountCells& r) : mnCellCount(r.mnCellCount) {} + + void operator() (const ScRange* p) + { + mnCellCount += + size_t(p->aEnd.Col() - p->aStart.Col() + 1) + * size_t(p->aEnd.Row() - p->aStart.Row() + 1) + * size_t(p->aEnd.Tab() - p->aStart.Tab() + 1); + } + + size_t getCellCount() const { return mnCellCount; } + +private: + size_t mnCellCount; +}; + +class FormatString : public ::std::unary_function<void, const ScRange*> +{ +public: + FormatString(String& rStr, USHORT nFlags, ScDocument* pDoc, FormulaGrammar::AddressConvention eConv, sal_Unicode cDelim) : + mrStr(rStr), + mnFlags(nFlags), + mpDoc(pDoc), + meConv(eConv), + mcDelim(cDelim), + mbFirst(true) {} + + FormatString(const FormatString& r) : + mrStr(r.mrStr), + mnFlags(r.mnFlags), + mpDoc(r.mpDoc), + meConv(r.meConv), + mcDelim(r.mcDelim), + mbFirst(r.mbFirst) {} + + void operator() (const ScRange* p) + { + String aStr; + p->Format(aStr, mnFlags, mpDoc, meConv); + if (mbFirst) + mbFirst = false; + else + mrStr += mcDelim; + mrStr += aStr; + } +private: + String& mrStr; + USHORT mnFlags; + ScDocument* mpDoc; + FormulaGrammar::AddressConvention meConv; + sal_Unicode mcDelim; + bool mbFirst; +}; + } -void ScRangeList::RemoveAll() +// === ScRangeList ==================================================== + +ScRangeList::~ScRangeList() { - for ( ScRangePtr pR = First(); pR; pR = Next() ) - delete pR; - Clear(); + RemoveAll(); } USHORT ScRangeList::Parse( const String& rStr, ScDocument* pDoc, USHORT nMask, @@ -86,8 +196,7 @@ USHORT ScRangeList::Parse( const String& rStr, ScDocument* pDoc, USHORT nMask, aOne = rStr.GetToken( i, cDelimiter ); aRange.aStart.SetTab( nTab ); // Default Tab wenn nicht angegeben USHORT nRes = aRange.ParseAny( aOne, pDoc, eConv ); - USHORT nEndRangeBits = SCA_VALID_COL2 | SCA_VALID_ROW2 | -SCA_VALID_TAB2; + USHORT nEndRangeBits = SCA_VALID_COL2 | SCA_VALID_ROW2 | SCA_VALID_TAB2; USHORT nTmp1 = ( nRes & SCA_BITS ); USHORT nTmp2 = ( nRes & nEndRangeBits ); // If we have a valid single range with @@ -116,21 +225,14 @@ void ScRangeList::Format( String& rStr, USHORT nFlags, ScDocument* pDoc, if (!cDelimiter) cDelimiter = ScCompiler::GetNativeSymbol(ocSep).GetChar(0); - ULONG nCnt = Count(); - for ( ULONG nIdx = 0; nIdx < nCnt; nIdx++ ) - { - String aStr; - GetObject( nIdx )->Format( aStr, nFlags, pDoc, eConv ); - if ( nIdx ) - rStr += cDelimiter; - rStr += aStr; - } + FormatString func(rStr, nFlags, pDoc, eConv, cDelimiter); + for_each(maRanges.begin(), maRanges.end(), func); } -void ScRangeList::Join( const ScRange& r, BOOL bIsInList ) +void ScRangeList::Join( const ScRange& r, bool bIsInList ) { - if ( !Count() ) + if ( maRanges.empty() ) { Append( r ); return ; @@ -141,32 +243,43 @@ void ScRangeList::Join( const ScRange& r, BOOL bIsInList ) SCCOL nCol2 = r.aEnd.Col(); SCROW nRow2 = r.aEnd.Row(); SCTAB nTab2 = r.aEnd.Tab(); - ScRangePtr pOver = (ScRangePtr) &r; // fies aber wahr wenn bInList - ULONG nOldPos = 0; + + ScRange* pOver = (ScRange*) &r; // fies aber wahr wenn bInList + size_t nOldPos = 0; if ( bIsInList ) - { // merken um ggbf. zu loeschen bzw. wiederherzustellen - nOldPos = GetPos( pOver ); + { + // Find the current position of this range. + for ( size_t i = 0, nRanges = maRanges.size(); i < nRanges; ++i ) + { + if ( maRanges[i] == pOver ) + { + nOldPos = i; + break; + } + } } - BOOL bJoinedInput = FALSE; - for ( ScRangePtr p = First(); p && pOver; p = Next() ) + bool bJoinedInput = false; + + for ( size_t i = 0, nRanges = maRanges.size(); i < nRanges && pOver; ++i ) { + ScRange* p = maRanges[i]; if ( p == pOver ) continue; // derselbe, weiter mit dem naechsten - BOOL bJoined = FALSE; + bool bJoined = false; if ( p->In( r ) ) { // Range r in Range p enthalten oder identisch if ( bIsInList ) - bJoined = TRUE; // weg mit Range r + bJoined = true; // weg mit Range r else { // das war's dann - bJoinedInput = TRUE; // nicht anhaengen + bJoinedInput = true; // nicht anhaengen break; // for } } else if ( r.In( *p ) ) { // Range p in Range r enthalten, r zum neuen Range machen *p = r; - bJoined = TRUE; + bJoined = true; } if ( !bJoined && p->aStart.Tab() == nTab1 && p->aEnd.Tab() == nTab2 ) { // 2D @@ -175,12 +288,12 @@ void ScRangeList::Join( const ScRange& r, BOOL bIsInList ) if ( p->aStart.Row() == nRow2+1 ) { // oben p->aStart.SetRow( nRow1 ); - bJoined = TRUE; + bJoined = true; } else if ( p->aEnd.Row() == nRow1-1 ) { // unten p->aEnd.SetRow( nRow2 ); - bJoined = TRUE; + bJoined = true; } } else if ( p->aStart.Row() == nRow1 && p->aEnd.Row() == nRow2 ) @@ -188,12 +301,12 @@ void ScRangeList::Join( const ScRange& r, BOOL bIsInList ) if ( p->aStart.Col() == nCol2+1 ) { // links p->aStart.SetCol( nCol1 ); - bJoined = TRUE; + bJoined = true; } else if ( p->aEnd.Col() == nCol1-1 ) { // rechts p->aEnd.SetCol( nCol2 ); - bJoined = TRUE; + bJoined = true; } } } @@ -201,296 +314,284 @@ void ScRangeList::Join( const ScRange& r, BOOL bIsInList ) { if ( bIsInList ) { // innerhalb der Liste Range loeschen - Remove( nOldPos ); + Remove(nOldPos); delete pOver; pOver = NULL; if ( nOldPos ) nOldPos--; // Seek richtig aufsetzen } - bJoinedInput = TRUE; - Join( *p, TRUE ); // rekursiv! + bJoinedInput = true; + Join( *p, true ); // rekursiv! } } - if ( bIsInList ) - Seek( nOldPos ); - else if ( !bJoinedInput ) + if ( !bIsInList && !bJoinedInput ) Append( r ); } -BOOL ScRangeList::operator==( const ScRangeList& r ) const +bool ScRangeList::operator==( const ScRangeList& r ) const { if ( this == &r ) - return TRUE; // identische Referenz - if ( Count() != r.Count() ) - return FALSE; - ULONG nCnt = Count(); - for ( ULONG nIdx = 0; nIdx < nCnt; nIdx++ ) + return true; + + if (maRanges.size() != r.maRanges.size()) + return false; + + vector<ScRange*>::const_iterator itr1 = maRanges.begin(), itrEnd = maRanges.end(); + vector<ScRange*>::const_iterator itr2 = r.maRanges.begin(); + for (; itr1 != itrEnd; ++itr1, ++itr2) { - if ( *GetObject( nIdx ) != *r.GetObject( nIdx ) ) - return FALSE; // auch andere Reihenfolge ist ungleich + const ScRange* p1 = *itr1; + const ScRange* p2 = *itr2; + if (*p1 != *p2) + return false; } - return TRUE; + return true; } -BOOL ScRangeList::operator!=( const ScRangeList& r ) const +bool ScRangeList::operator!=( const ScRangeList& r ) const { return !operator==( r ); } -BOOL ScRangeList::UpdateReference( UpdateRefMode eUpdateRefMode, - ScDocument* pDoc, const ScRange& rWhere, - SCsCOL nDx, SCsROW nDy, SCsTAB nDz ) +bool ScRangeList::UpdateReference( + UpdateRefMode eUpdateRefMode, + ScDocument* pDoc, + const ScRange& rWhere, + SCsCOL nDx, + SCsROW nDy, + SCsTAB nDz +) { - BOOL bChanged = FALSE; - if ( Count() ) + if (maRanges.empty()) + // No ranges to update. Bail out. + return false; + + bool bChanged = false; + SCCOL nCol1; + SCROW nRow1; + SCTAB nTab1; + SCCOL nCol2; + SCROW nRow2; + SCTAB nTab2; + rWhere.GetVars( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2 ); + + vector<ScRange*>::iterator itr = maRanges.begin(), itrEnd = maRanges.end(); + for (; itr != itrEnd; ++itr) { - SCCOL nCol1; - SCROW nRow1; - SCTAB nTab1; - SCCOL nCol2; - SCROW nRow2; - SCTAB nTab2; - rWhere.GetVars( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2 ); - for ( ScRange* pR = First(); pR; pR = Next() ) + ScRange* pR = *itr; + SCCOL theCol1; + SCROW theRow1; + SCTAB theTab1; + SCCOL theCol2; + SCROW theRow2; + SCTAB theTab2; + pR->GetVars( theCol1, theRow1, theTab1, theCol2, theRow2, theTab2 ); + if ( ScRefUpdate::Update( pDoc, eUpdateRefMode, + nCol1, nRow1, nTab1, nCol2, nRow2, nTab2, + nDx, nDy, nDz, + theCol1, theRow1, theTab1, theCol2, theRow2, theTab2 ) + != UR_NOTHING ) { - SCCOL theCol1; - SCROW theRow1; - SCTAB theTab1; - SCCOL theCol2; - SCROW theRow2; - SCTAB theTab2; - pR->GetVars( theCol1, theRow1, theTab1, theCol2, theRow2, theTab2 ); - if ( ScRefUpdate::Update( pDoc, eUpdateRefMode, - nCol1, nRow1, nTab1, nCol2, nRow2, nTab2, - nDx, nDy, nDz, - theCol1, theRow1, theTab1, theCol2, theRow2, theTab2 ) - != UR_NOTHING ) - { - bChanged = TRUE; - pR->aStart.Set( theCol1, theRow1, theTab1 ); - pR->aEnd.Set( theCol2, theRow2, theTab2 ); - } + bChanged = true; + pR->aStart.Set( theCol1, theRow1, theTab1 ); + pR->aEnd.Set( theCol2, theRow2, theTab2 ); } } return bChanged; } - -ScRange* ScRangeList::Find( const ScAddress& rAdr ) const +const ScRange* ScRangeList::Find( const ScAddress& rAdr ) const { - ULONG nListCount = Count(); - for ( ULONG j = 0; j < nListCount; j++ ) - { - ScRange* pR = GetObject( j ); - if ( pR->In( rAdr ) ) - return pR; - } - return NULL; + vector<ScRange*>::const_iterator itr = find_if( + maRanges.begin(), maRanges.end(), FindEnclosingRange<ScAddress>(rAdr)); + return itr == maRanges.end() ? NULL : *itr; } +ScRange* ScRangeList::Find( const ScAddress& rAdr ) +{ + vector<ScRange*>::iterator itr = find_if( + maRanges.begin(), maRanges.end(), FindEnclosingRange<ScAddress>(rAdr)); + return itr == maRanges.end() ? NULL : *itr; +} ScRangeList::ScRangeList( const ScRangeList& rList ) : - ScRangeListBase(), SvRefBase() { - ULONG nListCount = rList.Count(); - for ( ULONG j = 0; j < nListCount; j++ ) - Append( *rList.GetObject( j ) ); + maRanges.reserve(rList.maRanges.size()); + for_each(rList.maRanges.begin(), rList.maRanges.end(), AppendToList(maRanges)); } - ScRangeList& ScRangeList::operator=(const ScRangeList& rList) { RemoveAll(); + maRanges.reserve(rList.maRanges.size()); + for_each(rList.maRanges.begin(), rList.maRanges.end(), AppendToList(maRanges)); + return *this; +} - ULONG nListCount = rList.Count(); - for ( ULONG j = 0; j < nListCount; j++ ) - Append( *rList.GetObject( j ) ); +bool ScRangeList::Intersects( const ScRange& rRange ) const +{ + vector<ScRange*>::const_iterator itrEnd = maRanges.end(); + vector<ScRange*>::const_iterator itr = + find_if(maRanges.begin(), itrEnd, FindIntersectingRange<ScRange>(rRange)); + return itr != itrEnd; +} - return *this; +bool ScRangeList::In( const ScRange& rRange ) const +{ + vector<ScRange*>::const_iterator itrEnd = maRanges.end(); + vector<ScRange*>::const_iterator itr = + find_if(maRanges.begin(), itrEnd, FindEnclosingRange<ScRange>(rRange)); + return itr != itrEnd; } -BOOL ScRangeList::Intersects( const ScRange& rRange ) const +size_t ScRangeList::GetCellCount() const { - ULONG nListCount = Count(); - for ( ULONG j = 0; j < nListCount; j++ ) - if ( GetObject(j)->Intersects( rRange ) ) - return TRUE; + CountCells func; + return for_each(maRanges.begin(), maRanges.end(), func).getCellCount(); +} - return FALSE; +ScRange* ScRangeList::Remove(size_t nPos) +{ + if (maRanges.size() <= nPos) + // Out-of-bound condition. Bail out. + return NULL; + + vector<ScRange*>::iterator itr = maRanges.begin(); + advance(itr, nPos); + ScRange* p = *itr; + maRanges.erase(itr); + return p; } +void ScRangeList::RemoveAll() +{ + for_each(maRanges.begin(), maRanges.end(), DeleteObject<ScRange>()); + maRanges.clear(); +} -BOOL ScRangeList::In( const ScRange& rRange ) const +bool ScRangeList::empty() const { - ULONG nListCount = Count(); - for ( ULONG j = 0; j < nListCount; j++ ) - if ( GetObject(j)->In( rRange ) ) - return TRUE; + return maRanges.empty(); +} - return FALSE; +size_t ScRangeList::size() const +{ + return maRanges.size(); } +ScRange* ScRangeList::operator [](size_t idx) +{ + return maRanges[idx]; +} -ULONG ScRangeList::GetCellCount() const +const ScRange* ScRangeList::operator [](size_t idx) const { - ULONG nCellCount = 0; - ULONG nListCount = Count(); - for ( ULONG j = 0; j < nListCount; j++ ) - { - ScRange* pR = GetObject( j ); - nCellCount += ULONG(pR->aEnd.Col() - pR->aStart.Col() + 1) - * ULONG(pR->aEnd.Row() - pR->aStart.Row() + 1) - * ULONG(pR->aEnd.Tab() - pR->aStart.Tab() + 1); - } - return nCellCount; + return maRanges[idx]; } +ScRange* ScRangeList::front() +{ + return maRanges.front(); +} -// === ScRangePairList ==================================================== +const ScRange* ScRangeList::front() const +{ + return maRanges.front(); +} + +ScRange* ScRangeList::back() +{ + return maRanges.back(); +} + +const ScRange* ScRangeList::back() const +{ + return maRanges.back(); +} + +void ScRangeList::push_back(ScRange* p) +{ + maRanges.push_back(p); +} + +// === ScRangePairList ======================================================== ScRangePairList::~ScRangePairList() { - for ( ScRangePair* pR = First(); pR; pR = Next() ) - delete pR; + for_each( maPairs.begin(), maPairs.end(), DeleteObject<ScRangePair>() ); + maPairs.clear(); } +//----------------------------------------------------------------------------- +ScRangePair* ScRangePairList::Remove(size_t nPos) +{ + if (maPairs.size() <= nPos) + // Out-of-bound condition. Bail out. + return NULL; + + vector<ScRangePair*>::iterator itr = maPairs.begin(); + advance(itr, nPos); + ScRangePair* p = *itr; + maPairs.erase(itr); + return p; +} -void ScRangePairList::Join( const ScRangePair& r, BOOL bIsInList ) +//----------------------------------------------------------------------------- +ScRangePair* ScRangePairList::Remove( ScRangePair* Adr) { - if ( !Count() ) - { - Append( r ); - return ; - } - const ScRange& r1 = r.GetRange(0); - const ScRange& r2 = r.GetRange(1); - SCCOL nCol1 = r1.aStart.Col(); - SCROW nRow1 = r1.aStart.Row(); - SCTAB nTab1 = r1.aStart.Tab(); - SCCOL nCol2 = r1.aEnd.Col(); - SCROW nRow2 = r1.aEnd.Row(); - SCTAB nTab2 = r1.aEnd.Tab(); - ScRangePair* pOver = (ScRangePair*) &r; // fies aber wahr wenn bInList - ULONG nOldPos = 0; - if ( bIsInList ) - { // merken um ggbf. zu loeschen bzw. wiederherzustellen - nOldPos = GetPos( pOver ); - } - BOOL bJoinedInput = FALSE; - for ( ScRangePair* p = First(); p && pOver; p = Next() ) + ScRangePair* p = NULL; + + if (Adr == NULL) return NULL; + + for ( vector<ScRangePair*>::iterator itr = maPairs.begin(); itr < maPairs.end(); ++itr ) { - if ( p == pOver ) - continue; // derselbe, weiter mit dem naechsten - BOOL bJoined = FALSE; - ScRange& rp1 = p->GetRange(0); - ScRange& rp2 = p->GetRange(1); - if ( rp2 == r2 ) - { // nur wenn Range2 gleich ist - if ( rp1.In( r1 ) ) - { // RangePair r in RangePair p enthalten oder identisch - if ( bIsInList ) - bJoined = TRUE; // weg mit RangePair r - else - { // das war's dann - bJoinedInput = TRUE; // nicht anhaengen - break; // for - } - } - else if ( r1.In( rp1 ) ) - { // RangePair p in RangePair r enthalten, r zum neuen RangePair machen - *p = r; - bJoined = TRUE; - } - } - if ( !bJoined && rp1.aStart.Tab() == nTab1 && rp1.aEnd.Tab() == nTab2 - && rp2.aStart.Tab() == r2.aStart.Tab() - && rp2.aEnd.Tab() == r2.aEnd.Tab() ) - { // 2D, Range2 muss genauso nebeneinander liegen wie Range1 - if ( rp1.aStart.Col() == nCol1 && rp1.aEnd.Col() == nCol2 - && rp2.aStart.Col() == r2.aStart.Col() - && rp2.aEnd.Col() == r2.aEnd.Col() ) - { - if ( rp1.aStart.Row() == nRow2+1 - && rp2.aStart.Row() == r2.aEnd.Row()+1 ) - { // oben - rp1.aStart.SetRow( nRow1 ); - rp2.aStart.SetRow( r2.aStart.Row() ); - bJoined = TRUE; - } - else if ( rp1.aEnd.Row() == nRow1-1 - && rp2.aEnd.Row() == r2.aStart.Row()-1 ) - { // unten - rp1.aEnd.SetRow( nRow2 ); - rp2.aEnd.SetRow( r2.aEnd.Row() ); - bJoined = TRUE; - } - } - else if ( rp1.aStart.Row() == nRow1 && rp1.aEnd.Row() == nRow2 - && rp2.aStart.Row() == r2.aStart.Row() - && rp2.aEnd.Row() == r2.aEnd.Row() ) - { - if ( rp1.aStart.Col() == nCol2+1 - && rp2.aStart.Col() == r2.aEnd.Col()+1 ) - { // links - rp1.aStart.SetCol( nCol1 ); - rp2.aStart.SetCol( r2.aStart.Col() ); - bJoined = TRUE; - } - else if ( rp1.aEnd.Col() == nCol1-1 - && rp2.aEnd.Col() == r2.aEnd.Col()-1 ) - { // rechts - rp1.aEnd.SetCol( nCol2 ); - rp2.aEnd.SetCol( r2.aEnd.Col() ); - bJoined = TRUE; - } - } - } - if ( bJoined ) + if ( Adr == (p = *itr) ) { - if ( bIsInList ) - { // innerhalb der Liste RangePair loeschen - Remove( nOldPos ); - delete pOver; - pOver = NULL; - if ( nOldPos ) - nOldPos--; // Seek richtig aufsetzen - } - bJoinedInput = TRUE; - Join( *p, TRUE ); // rekursiv! + maPairs.erase( itr ); + break; } } - if ( bIsInList ) - Seek( nOldPos ); - else if ( !bJoinedInput ) - Append( r ); + return p; } - -BOOL ScRangePairList::operator==( const ScRangePairList& r ) const +bool ScRangePairList::operator==( const ScRangePairList& r ) const { if ( this == &r ) - return TRUE; // identische Referenz - if ( Count() != r.Count() ) - return FALSE; - ULONG nCnt = Count(); - for ( ULONG nIdx = 0; nIdx < nCnt; nIdx++ ) + return true; // identische Referenz + if ( maPairs.size() != r.size() ) + return false; + for ( size_t nIdx = 0, nCnt = maPairs.size(); nIdx < nCnt; ++nIdx ) { - if ( *GetObject( nIdx ) != *r.GetObject( nIdx ) ) - return FALSE; // auch andere Reihenfolge ist ungleich + if ( *maPairs[ nIdx ] != *r[ nIdx ] ) + return false; // auch andere Reihenfolge ist ungleich } - return TRUE; + return true; +} + +ScRangePair* ScRangePairList::operator [](size_t idx) +{ + return maPairs[idx]; } +const ScRangePair* ScRangePairList::operator [](size_t idx) const +{ + return maPairs[idx]; +} + +size_t ScRangePairList::size() const +{ + return maPairs.size(); +} -BOOL ScRangePairList::UpdateReference( UpdateRefMode eUpdateRefMode, +bool ScRangePairList::UpdateReference( UpdateRefMode eUpdateRefMode, ScDocument* pDoc, const ScRange& rWhere, SCsCOL nDx, SCsROW nDy, SCsTAB nDz ) { - BOOL bChanged = FALSE; - if ( Count() ) + bool bChanged = false; + if ( !maPairs.empty() ) { SCCOL nCol1; SCROW nRow1; @@ -499,8 +600,9 @@ BOOL ScRangePairList::UpdateReference( UpdateRefMode eUpdateRefMode, SCROW nRow2; SCTAB nTab2; rWhere.GetVars( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2 ); - for ( ScRangePair* pR = First(); pR; pR = Next() ) + for ( size_t i = 0, nPairs = maPairs.size(); i < nPairs; ++i ) { + ScRangePair* pR = maPairs[ i ]; for ( USHORT j=0; j<2; j++ ) { ScRange& rRange = pR->GetRange(j); @@ -517,7 +619,7 @@ BOOL ScRangePairList::UpdateReference( UpdateRefMode eUpdateRefMode, theCol1, theRow1, theTab1, theCol2, theRow2, theTab2 ) != UR_NOTHING ) { - bChanged = TRUE; + bChanged = true; rRange.aStart.Set( theCol1, theRow1, theTab1 ); rRange.aEnd.Set( theCol2, theRow2, theTab2 ); } @@ -527,48 +629,45 @@ BOOL ScRangePairList::UpdateReference( UpdateRefMode eUpdateRefMode, return bChanged; } - +//----------------------------------------------------------------------------- +// Delete entries that have the labels (first range) on nTab void ScRangePairList::DeleteOnTab( SCTAB nTab ) { - // Delete entries that have the labels (first range) on nTab - - ULONG nListCount = Count(); - ULONG nPos = 0; + size_t nListCount = maPairs.size(); + size_t nPos = 0; while ( nPos < nListCount ) { - ScRangePair* pR = GetObject( nPos ); + ScRangePair* pR = maPairs[ nPos ]; ScRange aRange = pR->GetRange(0); if ( aRange.aStart.Tab() == nTab && aRange.aEnd.Tab() == nTab ) { Remove( nPos ); delete pR; - nListCount = Count(); + nListCount = maPairs.size(); } else ++nPos; } } - +//----------------------------------------------------------------------------- ScRangePair* ScRangePairList::Find( const ScAddress& rAdr ) const { - ULONG nListCount = Count(); - for ( ULONG j = 0; j < nListCount; j++ ) + for ( size_t j = 0, nListCount = maPairs.size(); j < nListCount; j++ ) { - ScRangePair* pR = GetObject( j ); + ScRangePair* pR = maPairs[ j ]; if ( pR->GetRange(0).In( rAdr ) ) return pR; } return NULL; } - +//----------------------------------------------------------------------------- ScRangePair* ScRangePairList::Find( const ScRange& rRange ) const { - ULONG nListCount = Count(); - for ( ULONG j = 0; j < nListCount; j++ ) + for ( size_t j = 0, nListCount = maPairs.size(); j < nListCount; j++ ) { - ScRangePair* pR = GetObject( j ); + ScRangePair* pR = maPairs[ j ]; if ( pR->GetRange(0) == rRange ) return pR; } @@ -576,25 +675,25 @@ ScRangePair* ScRangePairList::Find( const ScRange& rRange ) const } +//----------------------------------------------------------------------------- ScRangePairList* ScRangePairList::Clone() const { ScRangePairList* pNew = new ScRangePairList; - ULONG nListCount = Count(); - for ( ULONG j = 0; j < nListCount; j++ ) + for ( size_t j = 0, nListCount = maPairs.size(); j < nListCount; j++ ) { - pNew->Append( *GetObject( j ) ); + pNew->Append( *maPairs[ j ] ); } return pNew; } - +//----------------------------------------------------------------------------- struct ScRangePairNameSort { ScRangePair* pPair; ScDocument* pDoc; }; - +//----------------------------------------------------------------------------- extern "C" int #ifdef WNT __cdecl @@ -673,11 +772,130 @@ ScRangePairList_QsortNameCompare( const void* p1, const void* p2 ) return 0; // just in case } +//----------------------------------------------------------------------------- +void ScRangePairList::Join( const ScRangePair& r, bool bIsInList ) +{ + if ( maPairs.empty() ) + { + Append( r ); + return ; + } + const ScRange& r1 = r.GetRange(0); + const ScRange& r2 = r.GetRange(1); + SCCOL nCol1 = r1.aStart.Col(); + SCROW nRow1 = r1.aStart.Row(); + SCTAB nTab1 = r1.aStart.Tab(); + SCCOL nCol2 = r1.aEnd.Col(); + SCROW nRow2 = r1.aEnd.Row(); + SCTAB nTab2 = r1.aEnd.Tab(); + ScRangePair* pOver = (ScRangePair*) &r; // fies aber wahr wenn bInList + size_t nOldPos = 0; + if ( bIsInList ) + { + // Find the current position of this range. + for ( size_t i = 0, nPairs = maPairs.size(); i < nPairs; ++i ) + { + if ( maPairs[i] == pOver ) + { + nOldPos = i; + break; + } + } + } + bool bJoinedInput = false; -ScRangePair** ScRangePairList::CreateNameSortedArray( ULONG& nListCount, + for ( size_t i = 0, nPairs = maPairs.size(); i < nPairs && pOver; ++i ) + { + ScRangePair* p = maPairs[ i ]; + if ( p == pOver ) + continue; // derselbe, weiter mit dem naechsten + bool bJoined = false; + ScRange& rp1 = p->GetRange(0); + ScRange& rp2 = p->GetRange(1); + if ( rp2 == r2 ) + { // nur wenn Range2 gleich ist + if ( rp1.In( r1 ) ) + { // RangePair r in RangePair p enthalten oder identisch + if ( bIsInList ) + bJoined = true; // weg mit RangePair r + else + { // das war's dann + bJoinedInput = true; // nicht anhaengen + break; // for + } + } + else if ( r1.In( rp1 ) ) + { // RangePair p in RangePair r enthalten, r zum neuen RangePair machen + *p = r; + bJoined = true; + } + } + if ( !bJoined && rp1.aStart.Tab() == nTab1 && rp1.aEnd.Tab() == nTab2 + && rp2.aStart.Tab() == r2.aStart.Tab() + && rp2.aEnd.Tab() == r2.aEnd.Tab() ) + { // 2D, Range2 muss genauso nebeneinander liegen wie Range1 + if ( rp1.aStart.Col() == nCol1 && rp1.aEnd.Col() == nCol2 + && rp2.aStart.Col() == r2.aStart.Col() + && rp2.aEnd.Col() == r2.aEnd.Col() ) + { + if ( rp1.aStart.Row() == nRow2+1 + && rp2.aStart.Row() == r2.aEnd.Row()+1 ) + { // oben + rp1.aStart.SetRow( nRow1 ); + rp2.aStart.SetRow( r2.aStart.Row() ); + bJoined = true; + } + else if ( rp1.aEnd.Row() == nRow1-1 + && rp2.aEnd.Row() == r2.aStart.Row()-1 ) + { // unten + rp1.aEnd.SetRow( nRow2 ); + rp2.aEnd.SetRow( r2.aEnd.Row() ); + bJoined = true; + } + } + else if ( rp1.aStart.Row() == nRow1 && rp1.aEnd.Row() == nRow2 + && rp2.aStart.Row() == r2.aStart.Row() + && rp2.aEnd.Row() == r2.aEnd.Row() ) + { + if ( rp1.aStart.Col() == nCol2+1 + && rp2.aStart.Col() == r2.aEnd.Col()+1 ) + { // links + rp1.aStart.SetCol( nCol1 ); + rp2.aStart.SetCol( r2.aStart.Col() ); + bJoined = true; + } + else if ( rp1.aEnd.Col() == nCol1-1 + && rp2.aEnd.Col() == r2.aEnd.Col()-1 ) + { // rechts + rp1.aEnd.SetCol( nCol2 ); + rp2.aEnd.SetCol( r2.aEnd.Col() ); + bJoined = true; + } + } + } + if ( bJoined ) + { + if ( bIsInList ) + { // innerhalb der Liste RangePair loeschen + Remove( nOldPos ); + delete pOver; + pOver = NULL; + if ( nOldPos ) + nOldPos--; // Seek richtig aufsetzen + } + bJoinedInput = true; + Join( *p, true ); // rekursiv! + } + } + if ( !bIsInList && !bJoinedInput ) + Append( r ); +} + +//----------------------------------------------------------------------------- +ScRangePair** ScRangePairList::CreateNameSortedArray( size_t& nListCount, ScDocument* pDoc ) const { - nListCount = Count(); + nListCount = maPairs.size(); DBG_ASSERT( nListCount * sizeof(ScRangePairNameSort) <= (size_t)~0x1F, "ScRangePairList::CreateNameSortedArray nListCount * sizeof(ScRangePairNameSort) > (size_t)~0x1F" ); ScRangePairNameSort* pSortArray = (ScRangePairNameSort*) @@ -685,7 +903,7 @@ ScRangePair** ScRangePairList::CreateNameSortedArray( ULONG& nListCount, ULONG j; for ( j=0; j < nListCount; j++ ) { - pSortArray[j].pPair = GetObject( j ); + pSortArray[j].pPair = maPairs[ j ]; pSortArray[j].pDoc = pDoc; } #if !(defined(ICC ) && defined(OS2)) @@ -702,7 +920,4 @@ ScRangePair** ScRangePairList::CreateNameSortedArray( ULONG& nListCount, return ppSortArray; } - - - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/tool/rangenam.cxx b/sc/source/core/tool/rangenam.cxx index f115f4a4bf62..2976141dcbce 100644 --- a/sc/source/core/tool/rangenam.cxx +++ b/sc/source/core/tool/rangenam.cxx @@ -136,15 +136,6 @@ ScRangeData::ScRangeData( ScDocument* pDok, else eType = eType | RT_ABSAREA; } - // Die Importfilter haben diesen Test nicht, - // da die benannten Bereiche z.T. noch unvollstaendig sind. -// if( !pCode->GetCodeLen() ) -// { -// // ggf. den Fehlercode wg. unvollstaendiger Formel setzen! -// ScCompiler aComp( pDok, aPos, *pCode ); -// aComp.CompileTokenArray(); -// pCode->DelRPN(); -// } } } @@ -233,10 +224,6 @@ void ScRangeData::GuessPosition() } aPos = ScAddress( (SCCOL)(-nMinCol), (SCROW)(-nMinRow), (SCTAB)(-nMinTab) ); - - //! Test -// DBG_ERROR(String("Pos ")+String((SCCOL)(-nMinCol))+String("/")+ -// String((SCROW)(-nMinRow))+String("/")+String((SCTAB)(-nMinTab))); } void ScRangeData::GetSymbol( String& rSymbol, const FormulaGrammar::Grammar eGrammar ) const @@ -439,9 +426,8 @@ void ScRangeData::UpdateTabRef(SCTAB nOldTable, USHORT nFlag, SCTAB nNewTable) } -void ScRangeData::MakeValidName( String& rName ) // static +void ScRangeData::MakeValidName( String& rName ) { - //ScCompiler::InitSymbolsNative(); // strip leading invalid characters xub_StrLen nPos = 0; diff --git a/sc/source/core/tool/rangeseq.cxx b/sc/source/core/tool/rangeseq.cxx index d7b86780e562..10b7f7936528 100644 --- a/sc/source/core/tool/rangeseq.cxx +++ b/sc/source/core/tool/rangeseq.cxx @@ -378,7 +378,6 @@ bool ScApiTypeConversion::ConvertAnyToDouble( double & o_fVal, //------------------------------------------------------------------------ -// static ScMatrixRef ScSequenceToMatrix::CreateMixedMatrix( const com::sun::star::uno::Any & rAny ) { ScMatrixRef xMatrix; @@ -401,9 +400,8 @@ ScMatrixRef ScSequenceToMatrix::CreateMixedMatrix( const com::sun::star::uno::An xMatrix = new ScMatrix( static_cast<SCSIZE>(nMaxColCount), static_cast<SCSIZE>(nRowCount) ); - ScMatrix* pMatrix = xMatrix; SCSIZE nCols, nRows; - pMatrix->GetDimensions( nCols, nRows); + xMatrix->GetDimensions( nCols, nRows); if (nCols != static_cast<SCSIZE>(nMaxColCount) || nRows != static_cast<SCSIZE>(nRowCount)) { DBG_ERRORFILE( "ScSequenceToMatrix::CreateMixedMatrix: matrix exceeded max size, returning NULL matrix"); @@ -420,11 +418,11 @@ ScMatrixRef ScSequenceToMatrix::CreateMixedMatrix( const com::sun::star::uno::An if (ScApiTypeConversion::ConvertAnyToDouble( fVal, eClass, pColArr[nCol])) { if (eClass == uno::TypeClass_BOOLEAN) - pMatrix->PutBoolean( (fVal ? true : false), + xMatrix->PutBoolean( (fVal ? true : false), static_cast<SCSIZE>(nCol), static_cast<SCSIZE>(nRow) ); else - pMatrix->PutDouble( fVal, + xMatrix->PutDouble( fVal, static_cast<SCSIZE>(nCol), static_cast<SCSIZE>(nRow) ); } @@ -432,21 +430,19 @@ ScMatrixRef ScSequenceToMatrix::CreateMixedMatrix( const com::sun::star::uno::An { // Try string, else use empty as last resort. - //Reflection* pRefl = pColArr[nCol].getReflection(); - //if ( pRefl->equals( *OUString_getReflection() ) ) if ( pColArr[nCol] >>= aUStr ) - pMatrix->PutString( String( aUStr ), + xMatrix->PutString( String( aUStr ), static_cast<SCSIZE>(nCol), static_cast<SCSIZE>(nRow) ); else - pMatrix->PutEmpty( + xMatrix->PutEmpty( static_cast<SCSIZE>(nCol), static_cast<SCSIZE>(nRow) ); } } for (nCol=nColCount; nCol<nMaxColCount; nCol++) { - pMatrix->PutEmpty( + xMatrix->PutEmpty( static_cast<SCSIZE>(nCol), static_cast<SCSIZE>(nRow) ); } diff --git a/sc/source/core/tool/rangeutl.cxx b/sc/source/core/tool/rangeutl.cxx index 6cae0b6d2f24..c5199519bf12 100644 --- a/sc/source/core/tool/rangeutl.cxx +++ b/sc/source/core/tool/rangeutl.cxx @@ -566,8 +566,10 @@ sal_Bool ScRangeStringConverter::GetRangeListFromString( while( nOffset >= 0 ) { ScRange* pRange = new ScRange; - if( GetRangeFromString( *pRange, rRangeListStr, pDocument, eConv, nOffset, cSeperator, cQuote ) && (nOffset >= 0) ) - rRangeList.Insert( pRange, LIST_APPEND ); + if ( GetRangeFromString( *pRange, rRangeListStr, pDocument, eConv, nOffset, cSeperator, cQuote ) + && (nOffset >= 0) + ) + rRangeList.push_back( pRange ); else if (nOffset > -1) bRet = sal_False; } @@ -721,10 +723,9 @@ void ScRangeStringConverter::GetStringFromRangeList( OUString sRangeListStr; if( pRangeList ) { - sal_Int32 nCount = pRangeList->Count(); - for( sal_Int32 nIndex = 0; nIndex < nCount; nIndex++ ) + for( size_t nIndex = 0, nCount = pRangeList->size(); nIndex < nCount; nIndex++ ) { - const ScRange* pRange = pRangeList->GetObject( nIndex ); + const ScRange* pRange = (*pRangeList)[nIndex]; if( pRange ) GetStringFromRange( sRangeListStr, *pRange, pDocument, eConv, cSeperator, sal_True, nFormatFlags ); } @@ -881,7 +882,7 @@ static void lcl_appendCellRangeAddress( void ScRangeStringConverter::GetStringFromXMLRangeString( OUString& rString, const OUString& rXMLRange, ScDocument* pDoc ) { FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention(); - const OUString aRangeSep = GetScCompilerNativeSymbol(ocSep); + const OUString aRangeSep = ScCompiler::GetNativeSymbol(ocSep); const sal_Unicode cSep = ' '; const sal_Unicode cQuote = '\''; diff --git a/sc/source/core/tool/reffind.cxx b/sc/source/core/tool/reffind.cxx index 49c91cfa42e8..74c62e51f767 100644 --- a/sc/source/core/tool/reffind.cxx +++ b/sc/source/core/tool/reffind.cxx @@ -43,7 +43,7 @@ // STATIC DATA ----------------------------------------------------------- // incl. Doppelpunkt -> Doppelte Referenzen werden einzeln behandelt -const sal_Unicode __FAR_DATA ScRefFinder::pDelimiters[] = { +const sal_Unicode ScRefFinder::pDelimiters[] = { '=','(',')','+','-','*','/','^','&',' ','{','}','<','>',':', 0 }; diff --git a/sc/source/core/tool/reftokenhelper.cxx b/sc/source/core/tool/reftokenhelper.cxx index eaf4b8134490..39dade20b41d 100644 --- a/sc/source/core/tool/reftokenhelper.cxx +++ b/sc/source/core/tool/reftokenhelper.cxx @@ -47,9 +47,9 @@ using ::std::auto_ptr; using ::rtl::OUString; void ScRefTokenHelper::compileRangeRepresentation( - vector<ScSharedTokenRef>& rRefTokens, const OUString& rRangeStr, ScDocument* pDoc, FormulaGrammar::Grammar eGrammar) + vector<ScTokenRef>& rRefTokens, const OUString& rRangeStr, ScDocument* pDoc, FormulaGrammar::Grammar eGrammar) { - const sal_Unicode cSep = GetScCompilerNativeSymbol(ocSep).GetChar(0); + const sal_Unicode cSep = ScCompiler::GetNativeSymbol(ocSep).GetChar(0); const sal_Unicode cQuote = '\''; // #i107275# ignore parentheses @@ -109,7 +109,7 @@ void ScRefTokenHelper::compileRangeRepresentation( } if (!bFailure) rRefTokens.push_back( - ScSharedTokenRef(static_cast<ScToken*>(p->Clone()))); + ScTokenRef(static_cast<ScToken*>(p->Clone()))); } } @@ -118,7 +118,7 @@ void ScRefTokenHelper::compileRangeRepresentation( rRefTokens.clear(); } -bool ScRefTokenHelper::getRangeFromToken(ScRange& rRange, const ScSharedTokenRef& pToken, bool bExternal) +bool ScRefTokenHelper::getRangeFromToken(ScRange& rRange, const ScTokenRef& pToken, bool bExternal) { StackVar eType = pToken->GetType(); switch (pToken->GetType()) @@ -159,9 +159,9 @@ bool ScRefTokenHelper::getRangeFromToken(ScRange& rRange, const ScSharedTokenRef return false; } -void ScRefTokenHelper::getRangeListFromTokens(ScRangeList& rRangeList, const vector<ScSharedTokenRef>& rTokens) +void ScRefTokenHelper::getRangeListFromTokens(ScRangeList& rRangeList, const vector<ScTokenRef>& rTokens) { - vector<ScSharedTokenRef>::const_iterator itr = rTokens.begin(), itrEnd = rTokens.end(); + vector<ScTokenRef>::const_iterator itr = rTokens.begin(), itrEnd = rTokens.end(); for (; itr != itrEnd; ++itr) { ScRange aRange; @@ -170,7 +170,7 @@ void ScRefTokenHelper::getRangeListFromTokens(ScRangeList& rRangeList, const vec } } -void ScRefTokenHelper::getTokenFromRange(ScSharedTokenRef& pToken, const ScRange& rRange) +void ScRefTokenHelper::getTokenFromRange(ScTokenRef& pToken, const ScRange& rRange) { ScComplexRefData aData; aData.InitFlags(); @@ -195,26 +195,26 @@ void ScRefTokenHelper::getTokenFromRange(ScSharedTokenRef& pToken, const ScRange pToken.reset(new ScDoubleRefToken(aData)); } -void ScRefTokenHelper::getTokensFromRangeList(vector<ScSharedTokenRef>& pTokens, const ScRangeList& rRanges) +void ScRefTokenHelper::getTokensFromRangeList(vector<ScTokenRef>& pTokens, const ScRangeList& rRanges) { - vector<ScSharedTokenRef> aTokens; - sal_uInt32 nCount = rRanges.Count(); + vector<ScTokenRef> aTokens; + size_t nCount = rRanges.size(); aTokens.reserve(nCount); - for (sal_uInt32 i = 0; i < nCount; ++i) + for (size_t i = 0; i < nCount; ++i) { - ScRange* pRange = static_cast<ScRange*>(rRanges.GetObject(i)); + const ScRange* pRange = rRanges[i]; if (!pRange) // failed. return; - ScSharedTokenRef pToken; + ScTokenRef pToken; ScRefTokenHelper::getTokenFromRange(pToken,* pRange); aTokens.push_back(pToken); } pTokens.swap(aTokens); } -bool ScRefTokenHelper::isRef(const ScSharedTokenRef& pToken) +bool ScRefTokenHelper::isRef(const ScTokenRef& pToken) { switch (pToken->GetType()) { @@ -229,7 +229,7 @@ bool ScRefTokenHelper::isRef(const ScSharedTokenRef& pToken) return false; } -bool ScRefTokenHelper::isExternalRef(const ScSharedTokenRef& pToken) +bool ScRefTokenHelper::isExternalRef(const ScTokenRef& pToken) { switch (pToken->GetType()) { @@ -242,7 +242,7 @@ bool ScRefTokenHelper::isExternalRef(const ScSharedTokenRef& pToken) return false; } -bool ScRefTokenHelper::intersects(const vector<ScSharedTokenRef>& rTokens, const ScSharedTokenRef& pToken) +bool ScRefTokenHelper::intersects(const vector<ScTokenRef>& rTokens, const ScTokenRef& pToken) { if (!isRef(pToken)) return false; @@ -253,10 +253,10 @@ bool ScRefTokenHelper::intersects(const vector<ScSharedTokenRef>& rTokens, const ScRange aRange; getRangeFromToken(aRange, pToken, bExternal); - vector<ScSharedTokenRef>::const_iterator itr = rTokens.begin(), itrEnd = rTokens.end(); + vector<ScTokenRef>::const_iterator itr = rTokens.begin(), itrEnd = rTokens.end(); for (; itr != itrEnd; ++itr) { - const ScSharedTokenRef& p = *itr; + const ScTokenRef& p = *itr; if (!isRef(p)) continue; @@ -288,7 +288,7 @@ public: * @param rTokens existing list of reference tokens * @param rToken new token */ - void operator() (vector<ScSharedTokenRef>& rTokens, const ScSharedTokenRef& pToken) + void operator() (vector<ScTokenRef>& rTokens, const ScTokenRef& pToken) { join(rTokens, pToken); } @@ -331,7 +331,7 @@ private: return (bRowsContained && bColsContained); } - void join(vector<ScSharedTokenRef>& rTokens, const ScSharedTokenRef& pToken) + void join(vector<ScTokenRef>& rTokens, const ScTokenRef& pToken) { // Normalize the token to a double reference. ScComplexRefData aData; @@ -344,10 +344,10 @@ private: String aTabName = bExternal ? pToken->GetString() : String(); bool bJoined = false; - vector<ScSharedTokenRef>::iterator itr = rTokens.begin(), itrEnd = rTokens.end(); + vector<ScTokenRef>::iterator itr = rTokens.begin(), itrEnd = rTokens.end(); for (; itr != itrEnd; ++itr) { - ScSharedTokenRef& pOldToken = *itr; + ScTokenRef& pOldToken = *itr; if (!ScRefTokenHelper::isRef(pOldToken)) // A non-ref token should not have been added here in the first @@ -417,7 +417,7 @@ private: return; // Pop the last token from the list, and keep joining recursively. - ScSharedTokenRef p = rTokens.back(); + ScTokenRef p = rTokens.back(); rTokens.pop_back(); join(rTokens, p); } @@ -428,13 +428,13 @@ private: } -void ScRefTokenHelper::join(vector<ScSharedTokenRef>& rTokens, const ScSharedTokenRef& pToken) +void ScRefTokenHelper::join(vector<ScTokenRef>& rTokens, const ScTokenRef& pToken) { JoinRefTokenRanges join; join(rTokens, pToken); } -bool ScRefTokenHelper::getDoubleRefDataFromToken(ScComplexRefData& rData, const ScSharedTokenRef& pToken) +bool ScRefTokenHelper::getDoubleRefDataFromToken(ScComplexRefData& rData, const ScTokenRef& pToken) { switch (pToken->GetType()) { @@ -459,19 +459,19 @@ bool ScRefTokenHelper::getDoubleRefDataFromToken(ScComplexRefData& rData, const return true; } -ScSharedTokenRef ScRefTokenHelper::createRefToken(const ScAddress& rAddr) +ScTokenRef ScRefTokenHelper::createRefToken(const ScAddress& rAddr) { ScSingleRefData aRefData; aRefData.InitAddress(rAddr); - ScSharedTokenRef pRef(new ScSingleRefToken(aRefData)); + ScTokenRef pRef(new ScSingleRefToken(aRefData)); return pRef; } -ScSharedTokenRef ScRefTokenHelper::createRefToken(const ScRange& rRange) +ScTokenRef ScRefTokenHelper::createRefToken(const ScRange& rRange) { ScComplexRefData aRefData; aRefData.InitRange(rRange); - ScSharedTokenRef pRef(new ScDoubleRefToken(aRefData)); + ScTokenRef pRef(new ScDoubleRefToken(aRefData)); return pRef; } diff --git a/sc/source/core/tool/scmatrix.cxx b/sc/source/core/tool/scmatrix.cxx index c7232c3adebc..7c113bfa3652 100644 --- a/sc/source/core/tool/scmatrix.cxx +++ b/sc/source/core/tool/scmatrix.cxx @@ -42,411 +42,460 @@ #include <math.h> -//------------------------------------------------------------------------ +#define MDDS_HASH_CONTAINER_STLPORT 1 +#include <mdds/mixed_type_matrix.hpp> -void ScMatrix::CreateMatrix(SCSIZE nC, SCSIZE nR) // nur fuer ctor +using ::std::pair; +using ::std::for_each; +using ::std::count_if; +using ::std::advance; +using ::std::unary_function; +using ::mdds::matrix_element_t; + +// ============================================================================ + +namespace { + +typedef ::mdds::mixed_type_matrix<String, sal_uInt8> MatrixImplType; + +struct ElemEqual : public unary_function<double, bool> { - pErrorInterpreter = NULL; - nColCount = nC; - nRowCount = nR; - SCSIZE nCount = nColCount * nRowCount; - if ( !nCount || nCount > GetElementsMax() ) + bool operator() (double val) const { - DBG_ERRORFILE("ScMatrix::CreateMatrix: dimension error"); - nColCount = nRowCount = 1; - pMat = new ScMatrixValue[1]; - pMat[0].fVal = CreateDoubleError( errStackOverflow); + return val == 0.0; } - else - pMat = new ScMatrixValue[nCount]; - mnValType = NULL; - mnNonValue = 0; -} +}; + +struct ElemNotEqual : public unary_function<double, bool> +{ + bool operator() (double val) const + { + return val != 0.0; + } +}; + +struct ElemGreater : public unary_function<double, bool> +{ + bool operator() (double val) const + { + return val > 0.0; + } +}; -void ScMatrix::Clear() +struct ElemLess : public unary_function<double, bool> { - DeleteIsString(); - delete [] pMat; + bool operator() (double val) const + { + return val < 0.0; + } +}; + +struct ElemGreaterEqual : public unary_function<double, bool> +{ + bool operator() (double val) const + { + return val >= 0.0; + } +}; + +struct ElemLessEqual : public unary_function<double, bool> +{ + bool operator() (double val) const + { + return val <= 0.0; + } +}; + +template<typename _Comp> +void compareMatrix(MatrixImplType& rMat) +{ + pair<size_t,size_t> aDim = rMat.size(); + _Comp aComp; + for (size_t i = 0; i < aDim.first; ++i) + { + for (size_t j = 0; j < aDim.second; ++j) + { + matrix_element_t eType = rMat.get_type(i, j); + if (eType != mdds::element_numeric && eType == mdds::element_boolean) + continue; + + double fVal = rMat.get_numeric(i, j); + if (!::rtl::math::isFinite(fVal)) + continue; + + rMat.set_boolean(i, j, aComp(fVal)); + } + } } -ScMatrix::~ScMatrix() +::mdds::matrix_density_t toMddsDensityType(ScMatrix::DensityType eType) { - Clear(); + switch (eType) + { + case ScMatrix::FILLED_EMPTY: + return mdds::matrix_density_filled_empty; + case ScMatrix::FILLED_ZERO: + return mdds::matrix_density_filled_zero; + case ScMatrix::SPARSE_EMPTY: + return mdds::matrix_density_sparse_empty; + case ScMatrix::SPARSE_ZERO: + return mdds::matrix_density_sparse_zero; + default: + ; + } + + // default density type + return mdds::matrix_density_filled_zero; } -ScMatrix* ScMatrix::Clone() const +/** + * Return a numeric value from a matrix element no matter what its type is. + */ +double getNumericValue(const MatrixImplType::element& elem) { - ScMatrix* pScMat = new ScMatrix( nColCount, nRowCount); - MatCopy(*pScMat); - pScMat->SetErrorInterpreter( pErrorInterpreter); // TODO: really? - return pScMat; + switch (elem.m_type) + { + case mdds::element_boolean: + return static_cast<double>(elem.m_boolean); + case mdds::element_numeric: + return elem.m_numeric; + default: + ; + } + return 0.0; } -ScMatrix* ScMatrix::CloneIfConst() +} + +class ScMatrixImpl +{ + MatrixImplType maMat; + ScMatrix::DensityType meType; + ScInterpreter* pErrorInterpreter; + bool mbCloneIfConst; // Whether the matrix is cloned with a CloneIfConst() call. + + ScMatrixImpl(); + ScMatrixImpl(const ScMatrixImpl&); +public: + ScMatrixImpl(SCSIZE nC, SCSIZE nR, ScMatrix::DensityType eType); + ~ScMatrixImpl(); + + void Clear(); + void SetImmutable(bool bVal); + bool IsImmutable() const; + void Resize(SCSIZE nC, SCSIZE nR); + ScMatrix::DensityType GetDensityType() const; + void SetErrorInterpreter( ScInterpreter* p); + ScInterpreter* GetErrorInterpreter() const { return pErrorInterpreter; } + + void GetDimensions( SCSIZE& rC, SCSIZE& rR) const; + SCSIZE GetElementCount() const; + bool ValidColRow( SCSIZE nC, SCSIZE nR) const; + SCSIZE CalcOffset( SCSIZE nC, SCSIZE nR) const; + bool ValidColRowReplicated( SCSIZE & rC, SCSIZE & rR ) const; + bool ValidColRowOrReplicated( SCSIZE & rC, SCSIZE & rR ) const; + void SetErrorAtInterpreter( USHORT nError ) const; + void PutDouble(double fVal, SCSIZE nC, SCSIZE nR); + void PutDouble( double fVal, SCSIZE nIndex); + void PutString(const String& rStr, SCSIZE nC, SCSIZE nR); + void PutString(const String& rStr, SCSIZE nIndex); + + void PutEmpty(SCSIZE nC, SCSIZE nR); + void PutEmptyPath(SCSIZE nC, SCSIZE nR); + void PutError( USHORT nErrorCode, SCSIZE nC, SCSIZE nR ); + void PutBoolean(bool bVal, SCSIZE nC, SCSIZE nR); + USHORT GetError( SCSIZE nC, SCSIZE nR) const; + double GetDouble(SCSIZE nC, SCSIZE nR) const; + double GetDouble( SCSIZE nIndex) const; + const String& GetString(SCSIZE nC, SCSIZE nR) const; + const String& GetString( SCSIZE nIndex) const; + String GetString( SvNumberFormatter& rFormatter, SCSIZE nC, SCSIZE nR) const; + ScMatrixValue Get(SCSIZE nC, SCSIZE nR) const; + bool IsString( SCSIZE nIndex ) const; + bool IsString( SCSIZE nC, SCSIZE nR ) const; + bool IsEmpty( SCSIZE nC, SCSIZE nR ) const; + bool IsEmptyPath( SCSIZE nC, SCSIZE nR ) const; + bool IsValue( SCSIZE nIndex ) const; + bool IsValue( SCSIZE nC, SCSIZE nR ) const; + bool IsValueOrEmpty( SCSIZE nC, SCSIZE nR ) const; + bool IsBoolean( SCSIZE nC, SCSIZE nR ) const; + bool IsNumeric() const; + void MatCopy(ScMatrixImpl& mRes) const; + void MatTrans(ScMatrixImpl& mRes) const; + void FillDouble( double fVal, SCSIZE nC1, SCSIZE nR1, SCSIZE nC2, SCSIZE nR2 ); + void CompareEqual(); + void CompareNotEqual(); + void CompareLess(); + void CompareGreater(); + void CompareLessEqual(); + void CompareGreaterEqual(); + double And() const; + double Or() const; + + ScMatrix::IterateResult Sum(bool bTextAsZero) const; + ScMatrix::IterateResult SumSquare(bool bTextAsZero) const; + ScMatrix::IterateResult Product(bool bTextAsZero) const; + size_t Count(bool bCountStrings) const; + +private: + void CalcPosition(SCSIZE nIndex, SCSIZE& rC, SCSIZE& rR) const; +}; + +ScMatrixImpl::ScMatrixImpl(SCSIZE nC, SCSIZE nR, ScMatrix::DensityType eType) : + maMat(nR, nC, toMddsDensityType(eType)), + meType(eType), + mbCloneIfConst(true) { - return (mbCloneIfConst || IsEternalRef()) ? Clone() : this; } -void ScMatrix::Resize( SCSIZE nC, SCSIZE nR) +ScMatrixImpl::~ScMatrixImpl() { Clear(); - CreateMatrix(nC, nR); } -ScMatrix* ScMatrix::CloneAndExtend( SCSIZE nNewCols, SCSIZE nNewRows ) const +void ScMatrixImpl::Clear() { - ScMatrix* pScMat = new ScMatrix( nNewCols, nNewRows); - MatCopy(*pScMat); - pScMat->SetErrorInterpreter( pErrorInterpreter); - return pScMat; + maMat.clear(); } -void ScMatrix::SetErrorAtInterpreter( USHORT nError ) const +void ScMatrixImpl::SetImmutable(bool bVal) { - if ( pErrorInterpreter ) - pErrorInterpreter->SetError( nError); + mbCloneIfConst = bVal; } -// -// File format: USHORT columns, USHORT rows, (columns*rows) entries: -// BYTE type ( CELLTYPE_NONE, CELLTYPE_VALUE, CELLTYPE_STRING ); nothing, double or String -// +bool ScMatrixImpl::IsImmutable() const +{ + return mbCloneIfConst; +} -ScMatrix::ScMatrix(SvStream& /* rStream */) - : pErrorInterpreter( NULL) - , nRefCnt(0) +void ScMatrixImpl::Resize(SCSIZE nC, SCSIZE nR) { -#if SC_ROWLIMIT_STREAM_ACCESS -#error address types changed! - USHORT nC; - USHORT nR; + maMat.resize(nR, nC); +} - rStream >> nC; - rStream >> nR; +ScMatrix::DensityType ScMatrixImpl::GetDensityType() const +{ + return meType; +} - CreateMatrix(nC, nR); - DBG_ASSERT( pMat, "pMat == NULL" ); +void ScMatrixImpl::SetErrorInterpreter( ScInterpreter* p) +{ + pErrorInterpreter = p; +} - String aMatStr; - double fVal; - rtl_TextEncoding eCharSet = rStream.GetStreamCharSet(); - SCSIZE nCount = nColCount * nRowCount; - SCSIZE nReadCount = (SCSIZE) nC * nR; - for (SCSIZE i=0; i<nReadCount; i++) - { - BYTE nType; - rStream >> nType; - if ( nType == CELLTYPE_VALUE ) - { - if ( i < nCount ) - rStream >> pMat[i].fVal; - else - rStream >> fVal; - } - else - { - // For unknown types read and forget string (upwards compatibility) - - if ( nType != CELLTYPE_NONE ) - rStream.ReadByteString( aMatStr, eCharSet ); - - if ( i < nCount ) - { - if (!mnValType) - ResetIsString(); // init string flags - mnValType[i] = ( nType == CELLTYPE_NONE ? SC_MATVAL_EMPTY : SC_MATVAL_STRING ); - mnNonValue++; - - if ( nType == CELLTYPE_STRING ) - pMat[i].pS = new String(aMatStr); - else - pMat[i].pS = NULL; - } - } - } -#else - CreateMatrix(0,0); -#endif // SC_ROWLIMIT_STREAM_ACCESS -} - -void ScMatrix::Store(SvStream& /* rStream */) const -{ -#if SC_ROWLIMIT_STREAM_ACCESS -#error address types changed! - SCSIZE nCount = nColCount * nRowCount; - // Don't store matrix with more than USHORT max elements, old versions - // might get confused in loops for(USHORT i=0; i<nC*nR; i++) - if ( !pMat || nCount > ((USHORT)(~0)) ) - { - DBG_ASSERT( pMat, "ScMatrix::Store: pMat == NULL" ); - // We can't store a 0 dimension because old versions rely on some - // matrix being present, e.g. DDE link results, and old versions didn't - // create a matrix if dimension was 0. Store an error result. - rStream << (USHORT) 1; - rStream << (USHORT) 1; - rStream << (BYTE) CELLTYPE_VALUE; - double fVal; - ::rtl::math::setNan( &fVal ); - rStream << fVal; - return; - } +void ScMatrixImpl::GetDimensions( SCSIZE& rC, SCSIZE& rR) const +{ + MatrixImplType::size_pair_type aDims = maMat.size(); + rR = aDims.first; + rC = aDims.second; +} - rStream << (USHORT) nColCount; -#if SC_ROWLIMIT_MORE_THAN_32K - #error row32k -#endif - rStream << (USHORT) nRowCount; +SCSIZE ScMatrixImpl::GetElementCount() const +{ + MatrixImplType::size_pair_type aDims = maMat.size(); + return aDims.first * aDims.second; +} - String aMatStr; - rtl_TextEncoding eCharSet = rStream.GetStreamCharSet(); - for (SCSIZE i=0; i<nCount; i++) - { - BYTE nType = CELLTYPE_VALUE; - if ( mnValType && IsNonValueType( mnValType[i])) - { - if ( pMat[i].pS ) - aMatStr = *pMat[i].pS; - else - aMatStr.Erase(); - - if ( mnValType[i] == SC_MATVAL_STRING ) - nType = CELLTYPE_STRING; - else - nType = CELLTYPE_NONE; - } - rStream << nType; - if ( nType == CELLTYPE_VALUE ) - rStream << pMat[i].fVal; - else if ( nType == CELLTYPE_STRING ) - rStream.WriteByteString( aMatStr, eCharSet ); - } -#endif // SC_ROWLIMIT_STREAM_ACCESS +bool ScMatrixImpl::ValidColRow( SCSIZE nC, SCSIZE nR) const +{ + MatrixImplType::size_pair_type aDims = maMat.size(); + return nR < aDims.first && nC < aDims.second; } -void ScMatrix::ResetIsString() +SCSIZE ScMatrixImpl::CalcOffset( SCSIZE nC, SCSIZE nR) const { - SCSIZE nCount = nColCount * nRowCount; - if (mnValType) - { - for (SCSIZE i = 0; i < nCount; i++) - { - if ( IsNonValueType( mnValType[i])) - delete pMat[i].pS; - } - } - else - mnValType = new BYTE[nCount]; - memset( mnValType, 0, nCount * sizeof( BYTE ) ); - mnNonValue = 0; + return nC * maMat.size().first + nR; } -void ScMatrix::DeleteIsString() +bool ScMatrixImpl::ValidColRowReplicated( SCSIZE & rC, SCSIZE & rR ) const { - if ( mnValType ) + pair<size_t, size_t> aDims = maMat.size(); + + if (aDims.second == 1 && aDims.first == 1) { - SCSIZE nCount = nColCount * nRowCount; - for ( SCSIZE i = 0; i < nCount; i++ ) - { - if (IsNonValueType( mnValType[i])) - delete pMat[i].pS; - } - delete [] mnValType; - mnValType = NULL; - mnNonValue = 0; + rC = 0; + rR = 0; + return true; + } + else if (aDims.second == 1 && rR < aDims.first) + { + // single column matrix. + rC = 0; + return true; } + else if (aDims.first == 1 && rC < aDims.second) + { + // single row matrix. + rR = 0; + return true; + } + return false; } -void ScMatrix::PutDouble(double fVal, SCSIZE nC, SCSIZE nR) +bool ScMatrixImpl::ValidColRowOrReplicated( SCSIZE & rC, SCSIZE & rR ) const { - if (ValidColRow( nC, nR)) - PutDouble( fVal, CalcOffset( nC, nR) ); - else - { - DBG_ERRORFILE("ScMatrix::PutDouble: dimension error"); - } + return ValidColRow( rC, rR) || ValidColRowReplicated( rC, rR); } -void ScMatrix::PutString(const String& rStr, SCSIZE nC, SCSIZE nR) +void ScMatrixImpl::SetErrorAtInterpreter( USHORT nError ) const { - if (ValidColRow( nC, nR)) - PutString( rStr, CalcOffset( nC, nR) ); - else - { - DBG_ERRORFILE("ScMatrix::PutString: dimension error"); - } + if ( pErrorInterpreter ) + pErrorInterpreter->SetError( nError); } -void ScMatrix::PutString(const String& rStr, SCSIZE nIndex) +void ScMatrixImpl::PutDouble(double fVal, SCSIZE nC, SCSIZE nR) { - if (mnValType == NULL) - ResetIsString(); - if ( IsNonValueType( mnValType[nIndex]) && pMat[nIndex].pS ) - *(pMat[nIndex].pS) = rStr; + if (ValidColRow( nC, nR)) + maMat.set_numeric(nR, nC, fVal); else { - pMat[nIndex].pS = new String(rStr); - mnNonValue++; + DBG_ERRORFILE("ScMatrixImpl::PutDouble: dimension error"); } - mnValType[nIndex] = SC_MATVAL_STRING; } -void ScMatrix::PutStringEntry( const String* pStr, BYTE bFlag, SCSIZE nIndex ) +void ScMatrixImpl::PutDouble( double fVal, SCSIZE nIndex) { - DBG_ASSERT( bFlag, "ScMatrix::PutStringEntry: bFlag == 0" ); - if (mnValType == NULL) - ResetIsString(); - // Make sure all bytes of the union are initialized to be able to access - // the value with if (IsValueOrEmpty()) GetDouble(). Backup pS first. - String* pS = pMat[nIndex].pS; - pMat[nIndex].fVal = 0.0; - // An EMPTY or EMPTYPATH entry must not have a string pointer therefor. - DBG_ASSERT( (((bFlag & SC_MATVAL_EMPTY) == SC_MATVAL_EMPTY) && !pStr) || TRUE, - "ScMatrix::PutStringEntry: pStr passed through EMPTY entry"); - if ( IsNonValueType( mnValType[nIndex]) && pS ) - { - if ((bFlag & SC_MATVAL_EMPTY) == SC_MATVAL_EMPTY) - delete pS, pS = NULL; - if ( pStr ) - *pS = *pStr; - else if (pS) - pS->Erase(); - pMat[nIndex].pS = pS; - } - else - { - pMat[nIndex].pS = (pStr ? new String(*pStr) : NULL); - mnNonValue++; - } - mnValType[nIndex] = bFlag; + SCSIZE nC, nR; + CalcPosition(nIndex, nC, nR); + PutDouble(fVal, nC, nR); } -void ScMatrix::PutEmpty(SCSIZE nC, SCSIZE nR) +void ScMatrixImpl::PutString(const String& rStr, SCSIZE nC, SCSIZE nR) { if (ValidColRow( nC, nR)) - PutEmpty( CalcOffset( nC, nR) ); + maMat.set_string(nR, nC, new String(rStr)); else { - DBG_ERRORFILE("ScMatrix::PutEmpty: dimension error"); + DBG_ERRORFILE("ScMatrixImpl::PutString: dimension error"); } } -void ScMatrix::PutEmpty(SCSIZE nIndex) +void ScMatrixImpl::PutString(const String& rStr, SCSIZE nIndex) { - if (mnValType == NULL) - ResetIsString(); - if ( IsNonValueType( mnValType[nIndex]) && pMat[nIndex].pS ) - { - delete pMat[nIndex].pS; - } - else - { - mnNonValue++; - } - mnValType[nIndex] = SC_MATVAL_EMPTY; - pMat[nIndex].pS = NULL; - pMat[nIndex].fVal = 0.0; + SCSIZE nC, nR; + CalcPosition(nIndex, nC, nR); + PutString(rStr, nC, nR); } -void ScMatrix::PutEmptyPath(SCSIZE nC, SCSIZE nR) +void ScMatrixImpl::PutEmpty(SCSIZE nC, SCSIZE nR) { if (ValidColRow( nC, nR)) - PutEmptyPath( CalcOffset( nC, nR) ); + { + maMat.set_empty(nR, nC); + maMat.clear_flag(nR, nC); // zero flag to indicate that this is 'empty', not 'empty path'. + } else { - DBG_ERRORFILE("ScMatrix::PutEmptyPath: dimension error"); + DBG_ERRORFILE("ScMatrixImpl::PutEmpty: dimension error"); } } -void ScMatrix::PutEmptyPath(SCSIZE nIndex) +void ScMatrixImpl::PutEmptyPath(SCSIZE nC, SCSIZE nR) { - if (mnValType == NULL) - ResetIsString(); - if ( IsNonValueType( mnValType[nIndex]) && pMat[nIndex].pS ) + if (ValidColRow( nC, nR)) { - delete pMat[nIndex].pS; + maMat.set_empty(nR, nC); + maMat.set_flag(nR, nC, 1); // non-zero flag to indicate empty 'path'. } else { - mnNonValue++; + DBG_ERRORFILE("ScMatrixImpl::PutEmptyPath: dimension error"); } - mnValType[nIndex] = SC_MATVAL_EMPTYPATH; - pMat[nIndex].pS = NULL; - pMat[nIndex].fVal = 0.0; } -void ScMatrix::PutBoolean(bool bVal, SCSIZE nC, SCSIZE nR) +void ScMatrixImpl::PutError( USHORT nErrorCode, SCSIZE nC, SCSIZE nR ) { - if (ValidColRow( nC, nR)) - PutBoolean( bVal, CalcOffset( nC, nR) ); - else - { - DBG_ERRORFILE("ScMatrix::PutBoolean: dimension error"); - } + maMat.set_numeric(nR, nC, CreateDoubleError(nErrorCode)); } -void ScMatrix::PutBoolean( bool bVal, SCSIZE nIndex) +void ScMatrixImpl::PutBoolean(bool bVal, SCSIZE nC, SCSIZE nR) { - if (mnValType == NULL) - ResetIsString(); - if ( IsNonValueType( mnValType[nIndex]) && pMat[nIndex].pS ) + if (ValidColRow( nC, nR)) + maMat.set_boolean(nR, nC, bVal); + else { - delete pMat[nIndex].pS; - mnNonValue--; + DBG_ERRORFILE("ScMatrixImpl::PutBoolean: dimension error"); } - - mnValType[nIndex] = SC_MATVAL_BOOLEAN; - pMat[nIndex].pS = NULL; - pMat[nIndex].fVal = bVal ? 1. : 0.; } -USHORT ScMatrix::GetError( SCSIZE nC, SCSIZE nR) const +USHORT ScMatrixImpl::GetError( SCSIZE nC, SCSIZE nR) const { if (ValidColRowOrReplicated( nC, nR )) - return GetError( CalcOffset( nC, nR) ); + { + double fVal = maMat.get_numeric(nR, nC); + return GetDoubleErrorValue(fVal); + } else { - DBG_ERRORFILE("ScMatrix::GetError: dimension error"); + DBG_ERRORFILE("ScMatrixImpl::GetError: dimension error"); return errNoValue; } } -double ScMatrix::GetDouble(SCSIZE nC, SCSIZE nR) const +double ScMatrixImpl::GetDouble(SCSIZE nC, SCSIZE nR) const { if (ValidColRowOrReplicated( nC, nR )) - return GetDouble( CalcOffset( nC, nR) ); + { + double fVal = maMat.get_numeric(nR, nC); + if ( pErrorInterpreter ) + { + USHORT nError = GetDoubleErrorValue(fVal); + if ( nError ) + SetErrorAtInterpreter( nError); + } + return fVal; + } else { - DBG_ERRORFILE("ScMatrix::GetDouble: dimension error"); + DBG_ERRORFILE("ScMatrixImpl::GetDouble: dimension error"); return CreateDoubleError( errNoValue); } } -const String& ScMatrix::GetString(SCSIZE nC, SCSIZE nR) const +double ScMatrixImpl::GetDouble( SCSIZE nIndex) const +{ + SCSIZE nC, nR; + CalcPosition(nIndex, nC, nR); + return GetDouble(nC, nR); +} + +const String& ScMatrixImpl::GetString(SCSIZE nC, SCSIZE nR) const { if (ValidColRowOrReplicated( nC, nR )) { - SCSIZE nIndex = CalcOffset( nC, nR); - if ( IsString( nIndex ) ) - return GetString( nIndex ); + if (maMat.get_type(nR, nC) == ::mdds::element_string) + return *maMat.get_string(nR, nC); else { - SetErrorAtInterpreter( GetError( nIndex)); - DBG_ERRORFILE("ScMatrix::GetString: access error, no string"); + SetErrorAtInterpreter( GetError(nC, nR)); + DBG_ERRORFILE("ScMatrixImpl::GetString: access error, no string"); } } else { - DBG_ERRORFILE("ScMatrix::GetString: dimension error"); + DBG_ERRORFILE("ScMatrixImpl::GetString: dimension error"); } return ScGlobal::GetEmptyString(); } +const String& ScMatrixImpl::GetString( SCSIZE nIndex) const +{ + SCSIZE nC, nR; + CalcPosition(nIndex, nC, nR); + return GetString(nC, nR); +} -String ScMatrix::GetString( SvNumberFormatter& rFormatter, SCSIZE nIndex) const +String ScMatrixImpl::GetString( SvNumberFormatter& rFormatter, SCSIZE nC, SCSIZE nR) const { - if (IsString( nIndex)) + if (!ValidColRowOrReplicated( nC, nR )) { - if (IsEmptyPath( nIndex)) + DBG_ERRORFILE("ScMatrixImpl::GetString: dimension error"); + return String(); + } + + if (IsString( nC, nR)) + { + if (IsEmptyPath( nC, nR)) { // result of empty FALSE jump path ULONG nKey = rFormatter.GetStandardFormat( NUMBERFORMAT_LOGICAL, ScGlobal::eLnge); @@ -455,17 +504,17 @@ String ScMatrix::GetString( SvNumberFormatter& rFormatter, SCSIZE nIndex) const rFormatter.GetOutputString( 0.0, nKey, aStr, &pColor); return aStr; } - return GetString( nIndex ); + return GetString( nC, nR); } - USHORT nError = GetError( nIndex); + USHORT nError = GetError( nC, nR); if (nError) { SetErrorAtInterpreter( nError); return ScGlobal::GetErrorString( nError); } - double fVal= GetDouble( nIndex); + double fVal= GetDouble( nC, nR); ULONG nKey = rFormatter.GetStandardFormat( NUMBERFORMAT_NUMBER, ScGlobal::eLnge); String aStr; @@ -473,346 +522,686 @@ String ScMatrix::GetString( SvNumberFormatter& rFormatter, SCSIZE nIndex) const return aStr; } - -String ScMatrix::GetString( SvNumberFormatter& rFormatter, SCSIZE nC, SCSIZE nR) const +ScMatrixValue ScMatrixImpl::Get(SCSIZE nC, SCSIZE nR) const { - if (ValidColRowOrReplicated( nC, nR )) + ScMatrixValue aVal; + if (ValidColRowOrReplicated(nC, nR)) { - SCSIZE nIndex = CalcOffset( nC, nR); - return GetString( rFormatter, nIndex); + matrix_element_t eType = maMat.get_type(nR, nC); + switch (eType) + { + case mdds::element_boolean: + aVal.nType = SC_MATVAL_BOOLEAN; + aVal.fVal = maMat.get_boolean(nR, nC); + break; + case mdds::element_numeric: + aVal.nType = SC_MATVAL_VALUE; + aVal.fVal = maMat.get_numeric(nR, nC); + break; + case mdds::element_string: + aVal.nType = SC_MATVAL_STRING; + aVal.pS = maMat.get_string(nR, nC); + break; + case mdds::element_empty: + // Empty path equals empty plus flag. + aVal.nType = maMat.get_flag(nR, nC) ? SC_MATVAL_EMPTYPATH : SC_MATVAL_EMPTY; + aVal.fVal = 0.0; + default: + ; + } } else { - DBG_ERRORFILE("ScMatrix::GetString: dimension error"); + DBG_ERRORFILE("ScMatrixImpl::Get: dimension error"); } - return String(); + return aVal; } +bool ScMatrixImpl::IsString( SCSIZE nIndex ) const +{ + SCSIZE nC, nR; + CalcPosition(nIndex, nC, nR); + return IsString(nC, nR); +} -const ScMatrixValue* ScMatrix::Get(SCSIZE nC, SCSIZE nR, ScMatValType& nType) const +bool ScMatrixImpl::IsString( SCSIZE nC, SCSIZE nR ) const { - if (ValidColRowOrReplicated( nC, nR )) + ValidColRowReplicated( nC, nR ); + switch (maMat.get_type(nR, nC)) { - SCSIZE nIndex = CalcOffset( nC, nR); - if (mnValType) - nType = mnValType[nIndex]; - else - nType = SC_MATVAL_VALUE; - return &pMat[nIndex]; + case mdds::element_empty: + case mdds::element_string: + return true; + default: + ; } - else + return false; +} + +bool ScMatrixImpl::IsEmpty( SCSIZE nC, SCSIZE nR ) const +{ + // Flag must be zero for this to be an empty element, instead of being an + // empty path element. + ValidColRowReplicated( nC, nR ); + return maMat.get_type(nR, nC) == ::mdds::element_empty && maMat.get_flag(nR, nC) == 0; +} + +bool ScMatrixImpl::IsEmptyPath( SCSIZE nC, SCSIZE nR ) const +{ + // 'Empty path' is empty plus non-zero flag. + ValidColRowReplicated( nC, nR ); + return maMat.get_type(nR, nC) == ::mdds::element_empty && maMat.get_flag(nR, nC) != 0; +} + +bool ScMatrixImpl::IsValue( SCSIZE nIndex ) const +{ + SCSIZE nC, nR; + CalcPosition(nIndex, nC, nR); + return IsValue(nC, nR); +} + +bool ScMatrixImpl::IsValue( SCSIZE nC, SCSIZE nR ) const +{ + ValidColRowReplicated(nC, nR); + switch (maMat.get_type(nR, nC)) { - DBG_ERRORFILE("ScMatrix::Get: dimension error"); + case mdds::element_boolean: + case mdds::element_numeric: + return true; + default: + ; } - nType = SC_MATVAL_EMPTY; - return NULL; + return false; } -void ScMatrix::MatCopy(ScMatrix& mRes) const +bool ScMatrixImpl::IsValueOrEmpty( SCSIZE nC, SCSIZE nR ) const { - if (nColCount > mRes.nColCount || nRowCount > mRes.nRowCount) + ValidColRowReplicated(nC, nR); + switch (maMat.get_type(nR, nC)) { - DBG_ERRORFILE("ScMatrix::MatCopy: dimension error"); + case mdds::element_boolean: + case mdds::element_numeric: + case mdds::element_empty: + return true; + default: + ; } - else if ( nColCount == mRes.nColCount && nRowCount == mRes.nRowCount ) + return false; +} + +bool ScMatrixImpl::IsBoolean( SCSIZE nC, SCSIZE nR ) const +{ + ValidColRowReplicated( nC, nR ); + return maMat.get_type(nR, nC) == ::mdds::element_boolean; +} + +bool ScMatrixImpl::IsNumeric() const +{ + return maMat.numeric(); +} + +void ScMatrixImpl::MatCopy(ScMatrixImpl& mRes) const +{ + MatrixImplType::size_pair_type s1 = maMat.size(), s2 = mRes.maMat.size(); + if (s1.first > s2.first || s1.second > s2.second) { - if (mnValType) - { - ScMatValType nType; - mRes.ResetIsString(); - for (SCSIZE i = 0; i < nColCount; i++) - { - SCSIZE nStart = i * nRowCount; - for (SCSIZE j = 0; j < nRowCount; j++) - { - if (IsNonValueType( (nType = mnValType[nStart+j]))) - mRes.PutStringEntry( pMat[nStart+j].pS, nType, nStart+j ); - else - { - mRes.pMat[nStart+j].fVal = pMat[nStart+j].fVal; - mRes.mnValType[nStart+j] = nType; - } - } - } - } - else - { - mRes.DeleteIsString(); - SCSIZE nCount = nColCount * nRowCount; - for (SCSIZE i = 0; i < nCount; i++) - mRes.pMat[i].fVal = pMat[i].fVal; - } + // destination matrix is not large enough. + DBG_ERRORFILE("ScMatrixImpl::MatCopy: dimension error"); + return; + } + + mRes.maMat.assign(maMat); +} + +void ScMatrixImpl::MatTrans(ScMatrixImpl& mRes) const +{ + mRes.maMat = maMat; + mRes.maMat.transpose(); +} + +void ScMatrixImpl::FillDouble( double fVal, SCSIZE nC1, SCSIZE nR1, SCSIZE nC2, SCSIZE nR2 ) +{ + if (ValidColRow( nC1, nR1) && ValidColRow( nC2, nR2)) + { + for (SCSIZE i = nR1; i <= nR2; ++i) + for (SCSIZE j = nC1; j <= nC2; ++j) + maMat.set(i, j, fVal); } else { - // Copy this matrix to upper left rectangle of result matrix. - if (mnValType) - { - ScMatValType nType; - mRes.ResetIsString(); - for (SCSIZE i = 0; i < nColCount; i++) - { - SCSIZE nStart = i * nRowCount; - SCSIZE nResStart = i * mRes.nRowCount; - for (SCSIZE j = 0; j < nRowCount; j++) - { - if (IsNonValueType( (nType = mnValType[nStart+j]))) - mRes.PutStringEntry( pMat[nStart+j].pS, nType, nResStart+j ); - else - { - mRes.pMat[nResStart+j].fVal = pMat[nStart+j].fVal; - mRes.mnValType[nResStart+j] = nType; - } - } - } - } - else - { - mRes.DeleteIsString(); - for (SCSIZE i = 0; i < nColCount; i++) - { - SCSIZE nStart = i * nRowCount; - SCSIZE nResStart = i * mRes.nRowCount; - for (SCSIZE j = 0; j < nRowCount; j++) - mRes.pMat[nResStart+j].fVal = pMat[nStart+j].fVal; - } - } + DBG_ERRORFILE("ScMatrixImpl::FillDouble: dimension error"); } } -void ScMatrix::MatTrans(ScMatrix& mRes) const +void ScMatrixImpl::CompareEqual() { - if (nColCount != mRes.nRowCount || nRowCount != mRes.nColCount) + compareMatrix<ElemEqual>(maMat); +} + +void ScMatrixImpl::CompareNotEqual() +{ + compareMatrix<ElemNotEqual>(maMat); +} + +void ScMatrixImpl::CompareLess() +{ + compareMatrix<ElemLess>(maMat); +} + +void ScMatrixImpl::CompareGreater() +{ + compareMatrix<ElemGreater>(maMat); +} + +void ScMatrixImpl::CompareLessEqual() +{ + compareMatrix<ElemLessEqual>(maMat); +} + +void ScMatrixImpl::CompareGreaterEqual() +{ + compareMatrix<ElemGreaterEqual>(maMat); +} + +namespace { + +struct AndEvaluator +{ + bool isBadElem(double fVal) const { return fVal == 0; } + bool returnOnElem() const { return false; } + bool returnOnAllElems() const { return true; } +}; + +struct OrEvaluator +{ + bool isBadElem(double fVal) const { return fVal != 0; } + bool returnOnElem() const { return true; } + bool returnOnAllElems() const { return false; } +}; + +template <typename _Evaluator> +bool EvalMatrix(const MatrixImplType& rMat) +{ + _Evaluator aEval; + pair<size_t,size_t> aDim = rMat.size(); + size_t nRows = aDim.first, nCols = aDim.second; + for (size_t i = 0; i < nRows; ++i) { - DBG_ERRORFILE("ScMatrix::MatTrans: dimension error"); + for (size_t j = 0; j < nCols; ++j) + { + matrix_element_t eType = rMat.get_type(i, j); + if (eType != mdds::element_numeric && eType == mdds::element_boolean) + // assuming a CompareMat this is an error + return CreateDoubleError(errIllegalArgument); + + double fVal = rMat.get_numeric(i, j); + if (!::rtl::math::isFinite(fVal)) + // DoubleError + return fVal; + + if (aEval.isBadElem(fVal)) + return aEval.returnOnElem(); + } } - else + return aEval.returnOnAllElems(); +} + +} + +double ScMatrixImpl::And() const +{ + // All elements must be of value type. + // True only if all the elements have non-zero values. + return EvalMatrix<AndEvaluator>(maMat); +} + +double ScMatrixImpl::Or() const +{ + // All elements must be of value type. + // True if at least one element has a non-zero value. + return EvalMatrix<OrEvaluator>(maMat); +} + +namespace { + +/** + * Function object to sum all numeric elements (including boolean). It + * stores the first non-zero element value into maRes.mfFirst while the rest + * into maRes.mfRest. This weird requirement comes from + * ScInterpreter::IterateParameters. + */ +class SumElements : public unary_function<void, MatrixImplType::element> +{ + ScMatrix::IterateResult maRes; + bool mbTextAsZero; +public: + SumElements(bool bTextAsZero) : maRes(0.0, 0.0, 0), mbTextAsZero(bTextAsZero) {} + + ScMatrix::IterateResult getResult() const { return maRes; } + void operator() (const MatrixImplType::element& elem) { - if (mnValType) + switch (elem.m_type) { - ScMatValType nType; - mRes.ResetIsString(); - for ( SCSIZE i = 0; i < nColCount; i++ ) - { - SCSIZE nStart = i * nRowCount; - for ( SCSIZE j = 0; j < nRowCount; j++ ) + case mdds::element_boolean: + if (elem.m_boolean) { - if (IsNonValueType( (nType = mnValType[nStart+j]))) - mRes.PutStringEntry( pMat[nStart+j].pS, nType, j*mRes.nRowCount+i ); + if (maRes.mfFirst) + maRes.mfFirst = 1.0; else - { - mRes.pMat[j*mRes.nRowCount+i].fVal = pMat[nStart+j].fVal; - mRes.mnValType[j*mRes.nRowCount+i] = nType; - } + maRes.mfRest += 1.0; } - } - } - else - { - mRes.DeleteIsString(); - for ( SCSIZE i = 0; i < nColCount; i++ ) - { - SCSIZE nStart = i * nRowCount; - for ( SCSIZE j = 0; j < nRowCount; j++ ) + ++maRes.mnCount; + break; + case mdds::element_numeric: + if (elem.m_numeric != 0.0) { - mRes.pMat[j*mRes.nRowCount+i].fVal = pMat[nStart+j].fVal; + if (maRes.mfFirst) + maRes.mfFirst = elem.m_numeric; + else + maRes.mfRest += elem.m_numeric; } - } + ++maRes.mnCount; + break; + case mdds::element_string: + if (mbTextAsZero) + ++maRes.mnCount; + default: + ; } } -} +}; -void ScMatrix::FillDouble( double fVal, SCSIZE nC1, SCSIZE nR1, SCSIZE nC2, SCSIZE nR2 ) +class SumSquareElements : public unary_function<void, MatrixImplType::element> { - if (ValidColRow( nC1, nR1) && ValidColRow( nC2, nR2)) + ScMatrix::IterateResult maRes; + bool mbTextAsZero; +public: + SumSquareElements(bool bTextAsZero) : maRes(0.0, 0.0, 0), mbTextAsZero(bTextAsZero) {} + ScMatrix::IterateResult getResult() const { return maRes; } + void operator() (const MatrixImplType::element& elem) { - if ( nC1 == 0 && nR1 == 0 && nC2 == nColCount-1 && nR2 == nRowCount-1 ) + if (elem.m_type == ::mdds::element_empty) + return; + + if (elem.m_type == ::mdds::element_string) { - SCSIZE nEnd = nColCount * nRowCount; - for ( SCSIZE j=0; j<nEnd; j++ ) - pMat[j].fVal = fVal; + if (mbTextAsZero) + ++maRes.mnCount; + return; } - else + + double val = getNumericValue(elem); + maRes.mfRest += val*val; + ++maRes.mnCount; + } +}; + +/** + * Multiply all boolean and numeric elements. It skips empty elements, and + * optionally string elements if specified. When text as zero option is + * specified, it treats string elements as if they have values of zero. + */ +class MultiplyElements : public unary_function<void, MatrixImplType::element> +{ + ScMatrix::IterateResult maRes; + bool mbTextAsZero; +public: + MultiplyElements(bool bTextAsZero) : maRes(0.0, 1.0, 0), mbTextAsZero(bTextAsZero) {} + ScMatrix::IterateResult getResult() const { return maRes; } + + void operator() (const MatrixImplType::element& elem) + { + if (elem.m_type == ::mdds::element_string) + { + ++maRes.mnCount; + if (mbTextAsZero) + maRes.mfRest = 0.0; + } + else if (elem.m_type != ::mdds::element_empty) { - for ( SCSIZE i=nC1; i<=nC2; i++ ) - { - SCSIZE nOff1 = i * nRowCount + nR1; - SCSIZE nOff2 = nOff1 + nR2 - nR1; - for ( SCSIZE j=nOff1; j<=nOff2; j++ ) - pMat[j].fVal = fVal; - } + ++maRes.mnCount; + maRes.mfRest *= getNumericValue(elem); } } - else +}; + +/** + * Predicate for counting only boolean, numeric, and optionally string + * elements. + */ +class CountNonEmptyElements : public unary_function<bool, MatrixImplType::element> +{ + const bool mbCountString; +public: + CountNonEmptyElements(bool bCountString) : mbCountString(bCountString) {} + bool operator() (const MatrixImplType::element& elem) const { - DBG_ERRORFILE("ScMatrix::FillDouble: dimension error"); + switch (elem.m_type) + { + case mdds::element_boolean: + case mdds::element_numeric: + return true; + case mdds::element_string: + return mbCountString; + default: + ; + } + return false; } +}; + +} + +ScMatrix::IterateResult ScMatrixImpl::Sum(bool bTextAsZero) const +{ + return for_each(maMat.begin(), maMat.end(), SumElements(bTextAsZero)).getResult(); +} + +ScMatrix::IterateResult ScMatrixImpl::SumSquare(bool bTextAsZero) const +{ + return for_each(maMat.begin(), maMat.end(), SumSquareElements(bTextAsZero)).getResult(); +} + +ScMatrix::IterateResult ScMatrixImpl::Product(bool bTextAsZero) const +{ + return for_each(maMat.begin(), maMat.end(), MultiplyElements(bTextAsZero)).getResult(); +} + +size_t ScMatrixImpl::Count(bool bCountStrings) const +{ + return count_if(maMat.begin(), maMat.end(), CountNonEmptyElements(bCountStrings)); +} + +void ScMatrixImpl::CalcPosition(SCSIZE nIndex, SCSIZE& rC, SCSIZE& rR) const +{ + SCSIZE nRowSize = maMat.size().first; + rC = nIndex / nRowSize; + rR = nIndex - rC*nRowSize; +} + +// ============================================================================ + +ScMatrix::ScMatrix( SCSIZE nC, SCSIZE nR, DensityType eType) : + pImpl(new ScMatrixImpl(nC, nR, eType)), + nRefCnt(0) +{ +} +ScMatrix::~ScMatrix() +{ + delete pImpl; +} + +ScMatrix* ScMatrix::Clone() const +{ + return Clone(GetDensityType()); +} + +ScMatrix* ScMatrix::Clone( DensityType eType) const +{ + SCSIZE nC, nR; + pImpl->GetDimensions(nC, nR); + ScMatrix* pScMat = new ScMatrix(nC, nR, eType); + MatCopy(*pScMat); + pScMat->SetErrorInterpreter(pImpl->GetErrorInterpreter()); // TODO: really? + return pScMat; +} + +ScMatrix* ScMatrix::CloneIfConst() +{ + return pImpl->IsImmutable() ? Clone() : this; +} + +void ScMatrix::SetImmutable( bool bVal ) +{ + pImpl->SetImmutable(bVal); +} + +void ScMatrix::Resize( SCSIZE nC, SCSIZE nR) +{ + pImpl->Resize(nC, nR); +} + +ScMatrix* ScMatrix::CloneAndExtend( SCSIZE nNewCols, SCSIZE nNewRows, DensityType eType ) const +{ + ScMatrix* pScMat = new ScMatrix( nNewCols, nNewRows, eType); + MatCopy(*pScMat); + pScMat->SetErrorInterpreter(pImpl->GetErrorInterpreter()); + return pScMat; +} + +ScMatrix::DensityType ScMatrix::GetDensityType() const +{ + return pImpl->GetDensityType(); +} + +void ScMatrix::SetErrorInterpreter( ScInterpreter* p) +{ + pImpl->SetErrorInterpreter(p); +} + +void ScMatrix::GetDimensions( SCSIZE& rC, SCSIZE& rR) const +{ + pImpl->GetDimensions(rC, rR); +} + +SCSIZE ScMatrix::GetElementCount() const +{ + return pImpl->GetElementCount(); +} + +bool ScMatrix::ValidColRow( SCSIZE nC, SCSIZE nR) const +{ + return pImpl->ValidColRow(nC, nR); +} + +SCSIZE ScMatrix::CalcOffset( SCSIZE nC, SCSIZE nR) const +{ + return pImpl->CalcOffset(nC, nR); +} + +bool ScMatrix::ValidColRowReplicated( SCSIZE & rC, SCSIZE & rR ) const +{ + return pImpl->ValidColRowReplicated(rC, rR); +} + +bool ScMatrix::ValidColRowOrReplicated( SCSIZE & rC, SCSIZE & rR ) const +{ + return ValidColRow( rC, rR) || ValidColRowReplicated( rC, rR); +} + +void ScMatrix::PutDouble(double fVal, SCSIZE nC, SCSIZE nR) +{ + pImpl->PutDouble(fVal, nC, nR); +} + +void ScMatrix::PutDouble( double fVal, SCSIZE nIndex) +{ + pImpl->PutDouble(fVal, nIndex); +} + +void ScMatrix::PutString(const String& rStr, SCSIZE nC, SCSIZE nR) +{ + pImpl->PutString(rStr, nC, nR); +} + +void ScMatrix::PutString(const String& rStr, SCSIZE nIndex) +{ + pImpl->PutString(rStr, nIndex); +} + +void ScMatrix::PutEmpty(SCSIZE nC, SCSIZE nR) +{ + pImpl->PutEmpty(nC, nR); +} + +void ScMatrix::PutEmptyPath(SCSIZE nC, SCSIZE nR) +{ + pImpl->PutEmptyPath(nC, nR); +} + +void ScMatrix::PutError( USHORT nErrorCode, SCSIZE nC, SCSIZE nR ) +{ + pImpl->PutError(nErrorCode, nC, nR); +} + +void ScMatrix::PutBoolean(bool bVal, SCSIZE nC, SCSIZE nR) +{ + pImpl->PutBoolean(bVal, nC, nR); +} + +USHORT ScMatrix::GetError( SCSIZE nC, SCSIZE nR) const +{ + return pImpl->GetError(nC, nR); +} + +double ScMatrix::GetDouble(SCSIZE nC, SCSIZE nR) const +{ + return pImpl->GetDouble(nC, nR); +} + +double ScMatrix::GetDouble( SCSIZE nIndex) const +{ + return pImpl->GetDouble(nIndex); +} + +const String& ScMatrix::GetString(SCSIZE nC, SCSIZE nR) const +{ + return pImpl->GetString(nC, nR); +} + +const String& ScMatrix::GetString( SCSIZE nIndex) const +{ + return pImpl->GetString(nIndex); +} + +String ScMatrix::GetString( SvNumberFormatter& rFormatter, SCSIZE nC, SCSIZE nR) const +{ + return pImpl->GetString(rFormatter, nC, nR); +} + +ScMatrixValue ScMatrix::Get(SCSIZE nC, SCSIZE nR) const +{ + return pImpl->Get(nC, nR); +} + +BOOL ScMatrix::IsString( SCSIZE nIndex ) const +{ + return pImpl->IsString(nIndex); +} + +BOOL ScMatrix::IsString( SCSIZE nC, SCSIZE nR ) const +{ + return pImpl->IsString(nC, nR); +} + +BOOL ScMatrix::IsEmpty( SCSIZE nC, SCSIZE nR ) const +{ + return pImpl->IsEmpty(nC, nR); +} + +BOOL ScMatrix::IsEmptyPath( SCSIZE nC, SCSIZE nR ) const +{ + return pImpl->IsEmptyPath(nC, nR); +} + +BOOL ScMatrix::IsValue( SCSIZE nIndex ) const +{ + return pImpl->IsValue(nIndex); +} + +BOOL ScMatrix::IsValue( SCSIZE nC, SCSIZE nR ) const +{ + return pImpl->IsValue(nC, nR); +} + +BOOL ScMatrix::IsValueOrEmpty( SCSIZE nC, SCSIZE nR ) const +{ + return pImpl->IsValueOrEmpty(nC, nR); +} + +BOOL ScMatrix::IsBoolean( SCSIZE nC, SCSIZE nR ) const +{ + return pImpl->IsBoolean(nC, nR); +} + +BOOL ScMatrix::IsNumeric() const +{ + return pImpl->IsNumeric(); +} + +void ScMatrix::MatCopy(ScMatrix& mRes) const +{ + pImpl->MatCopy(*mRes.pImpl); +} + +void ScMatrix::MatTrans(ScMatrix& mRes) const +{ + pImpl->MatTrans(*mRes.pImpl); +} + +void ScMatrix::FillDouble( double fVal, SCSIZE nC1, SCSIZE nR1, SCSIZE nC2, SCSIZE nR2 ) +{ + pImpl->FillDouble(fVal, nC1, nR1, nC2, nR2); } void ScMatrix::CompareEqual() { - SCSIZE n = nColCount * nRowCount; - if ( mnValType ) - { - for ( SCSIZE j=0; j<n; j++ ) - if ( IsValueType( mnValType[j]) ) // else: #WERT! - if ( ::rtl::math::isFinite( pMat[j].fVal)) // else: DoubleError - pMat[j].fVal = (pMat[j].fVal == 0.0); - } - else - { - for ( SCSIZE j=0; j<n; j++ ) - if ( ::rtl::math::isFinite( pMat[j].fVal)) // else: DoubleError - pMat[j].fVal = (pMat[j].fVal == 0.0); - } + pImpl->CompareEqual(); } void ScMatrix::CompareNotEqual() { - SCSIZE n = nColCount * nRowCount; - if ( mnValType ) - { - for ( SCSIZE j=0; j<n; j++ ) - if ( IsValueType( mnValType[j]) ) // else: #WERT! - if ( ::rtl::math::isFinite( pMat[j].fVal)) // else: DoubleError - pMat[j].fVal = (pMat[j].fVal != 0.0); - } - else - { - for ( SCSIZE j=0; j<n; j++ ) - if ( ::rtl::math::isFinite( pMat[j].fVal)) // else: DoubleError - pMat[j].fVal = (pMat[j].fVal != 0.0); - } + pImpl->CompareNotEqual(); } void ScMatrix::CompareLess() { - SCSIZE n = nColCount * nRowCount; - if ( mnValType ) - { - for ( SCSIZE j=0; j<n; j++ ) - if ( IsValueType( mnValType[j]) ) // else: #WERT! - if ( ::rtl::math::isFinite( pMat[j].fVal)) // else: DoubleError - pMat[j].fVal = (pMat[j].fVal < 0.0); - } - else - { - for ( SCSIZE j=0; j<n; j++ ) - if ( ::rtl::math::isFinite( pMat[j].fVal)) // else: DoubleError - pMat[j].fVal = (pMat[j].fVal < 0.0); - } + pImpl->CompareLess(); } void ScMatrix::CompareGreater() { - SCSIZE n = nColCount * nRowCount; - if ( mnValType ) - { - for ( SCSIZE j=0; j<n; j++ ) - if ( IsValueType( mnValType[j]) ) // else: #WERT! - if ( ::rtl::math::isFinite( pMat[j].fVal)) // else: DoubleError - pMat[j].fVal = (pMat[j].fVal > 0.0); - } - else - { - for ( SCSIZE j=0; j<n; j++ ) - if ( ::rtl::math::isFinite( pMat[j].fVal)) // else: DoubleError - pMat[j].fVal = (pMat[j].fVal > 0.0); - } + pImpl->CompareGreater(); } void ScMatrix::CompareLessEqual() { - SCSIZE n = nColCount * nRowCount; - if ( mnValType ) - { - for ( SCSIZE j=0; j<n; j++ ) - if ( IsValueType( mnValType[j]) ) // else: #WERT! - if ( ::rtl::math::isFinite( pMat[j].fVal)) // else: DoubleError - pMat[j].fVal = (pMat[j].fVal <= 0.0); - } - else - { - for ( SCSIZE j=0; j<n; j++ ) - if ( ::rtl::math::isFinite( pMat[j].fVal)) // else: DoubleError - pMat[j].fVal = (pMat[j].fVal <= 0.0); - } + pImpl->CompareLessEqual(); } void ScMatrix::CompareGreaterEqual() { - SCSIZE n = nColCount * nRowCount; - if ( mnValType ) - { - for ( SCSIZE j=0; j<n; j++ ) - if ( IsValueType( mnValType[j]) ) // else: #WERT! - if ( ::rtl::math::isFinite( pMat[j].fVal)) // else: DoubleError - pMat[j].fVal = (pMat[j].fVal >= 0.0); - } - else - { - for ( SCSIZE j=0; j<n; j++ ) - if ( ::rtl::math::isFinite( pMat[j].fVal)) // else: DoubleError - pMat[j].fVal = (pMat[j].fVal >= 0.0); - } + pImpl->CompareGreaterEqual(); } -double ScMatrix::And() +double ScMatrix::And() const { - SCSIZE n = nColCount * nRowCount; - bool bAnd = true; - if ( mnValType ) - { - for ( SCSIZE j=0; bAnd && j<n; j++ ) - { - if ( !IsValueType( mnValType[j]) ) - { // assuming a CompareMat this is an error - return CreateDoubleError( errIllegalArgument ); - } - else if ( ::rtl::math::isFinite( pMat[j].fVal)) - bAnd = (pMat[j].fVal != 0.0); - else - return pMat[j].fVal; // DoubleError - } - } - else - { - for ( SCSIZE j=0; bAnd && j<n; j++ ) - { - if ( ::rtl::math::isFinite( pMat[j].fVal)) - bAnd = (pMat[j].fVal != 0.0); - else - return pMat[j].fVal; // DoubleError - } - } - return bAnd; + return pImpl->And(); } -double ScMatrix::Or() +double ScMatrix::Or() const { - SCSIZE n = nColCount * nRowCount; - bool bOr = false; - if ( mnValType ) - { - for ( SCSIZE j=0; !bOr && j<n; j++ ) - if ( !IsValueType( mnValType[j]) ) - { // assuming a CompareMat this is an error - return CreateDoubleError( errIllegalArgument ); - } - else if ( ::rtl::math::isFinite( pMat[j].fVal)) - bOr = (pMat[j].fVal != 0.0); - else - return pMat[j].fVal; // DoubleError - } - else - { - for ( SCSIZE j=0; !bOr && j<n; j++ ) - if ( ::rtl::math::isFinite( pMat[j].fVal)) - bOr = (pMat[j].fVal != 0.0); - else - return pMat[j].fVal; // DoubleError - } - return bOr; + return pImpl->Or(); +} + +ScMatrix::IterateResult ScMatrix::Sum(bool bTextAsZero) const +{ + return pImpl->Sum(bTextAsZero); +} + +ScMatrix::IterateResult ScMatrix::SumSquare(bool bTextAsZero) const +{ + return pImpl->SumSquare(bTextAsZero); +} + +ScMatrix::IterateResult ScMatrix::Product(bool bTextAsZero) const +{ + return pImpl->Product(bTextAsZero); +} + +size_t ScMatrix::Count(bool bCountStrings) const +{ + return pImpl->Count(bCountStrings); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx index 7c972250c7d2..a57c2dad928d 100644 --- a/sc/source/core/tool/token.cxx +++ b/sc/source/core/tool/token.cxx @@ -109,10 +109,6 @@ namespace } // } // namespace -// -// ImpTokenIterator wird je Interpreter angelegt, mehrfache auch durch -// SubCode via FormulaTokenIterator Push/Pop moeglich -IMPL_FIXEDMEMPOOL_NEWDEL( ImpTokenIterator, 32, 16 ) // Align MemPools on 4k boundaries - 64 bytes (4k is a MUST for OS/2) @@ -531,7 +527,6 @@ BOOL ScToken::Is3DRef() const return FALSE; } -// static FormulaTokenRef ScToken::ExtendRangeReference( FormulaToken & rTok1, FormulaToken & rTok2, const ScAddress & rPos, bool bReuseDoubleRef ) { @@ -793,8 +788,8 @@ BOOL ScRefListToken::operator==( const FormulaToken& r ) const } -const ScMatrix* ScMatrixToken::GetMatrix() const { return pMatrix; } -ScMatrix* ScMatrixToken::GetMatrix() { return pMatrix; } +const ScMatrix* ScMatrixToken::GetMatrix() const { return pMatrix.get(); } +ScMatrix* ScMatrixToken::GetMatrix() { return pMatrix.get(); } BOOL ScMatrixToken::operator==( const FormulaToken& r ) const { return FormulaToken::operator==( r ) && pMatrix == static_cast<const ScToken&>(r).GetMatrix(); @@ -1031,7 +1026,7 @@ BOOL ScEmptyCellToken::operator==( const FormulaToken& r ) const double ScMatrixCellResultToken::GetDouble() const { return xUpperLeft->GetDouble(); } const String & ScMatrixCellResultToken::GetString() const { return xUpperLeft->GetString(); } -const ScMatrix* ScMatrixCellResultToken::GetMatrix() const { return xMatrix; } +const ScMatrix* ScMatrixCellResultToken::GetMatrix() const { return xMatrix.get(); } // Non-const GetMatrix() is private and unused but must be implemented to // satisfy vtable linkage. ScMatrix* ScMatrixCellResultToken::GetMatrix() @@ -1478,8 +1473,6 @@ FormulaToken* ScTokenArray::MergeArray( ) if( nCol <= 0 || nRow <= 0 ) return NULL; - // fprintf (stderr, "Array (cols = %d, rows = %d)\n", nCol, nRow ); - int nSign = 1; ScMatrix* pArray = new ScMatrix( nCol, nRow ); for ( i = nStart, nCol = 0, nRow = 0 ; i < nLen ; i++ ) @@ -1555,7 +1548,7 @@ FormulaToken* ScTokenArray::MergeRangeReference( const ScAddress & rPos ) p2->DecRef(); p3->DecRef(); nLen -= 2; - pCode[ nLen-1 ] = p; + pCode[ nLen-1 ] = p.get(); nRefs--; } } @@ -1584,7 +1577,7 @@ FormulaToken* ScTokenArray::AddDoubleReference( const ScComplexRefData& rRef ) return Add( new ScDoubleRefToken( rRef ) ); } -FormulaToken* ScTokenArray::AddMatrix( ScMatrix* p ) +FormulaToken* ScTokenArray::AddMatrix( const ScMatrixRef& p ) { return Add( new ScMatrixToken( p ) ); } diff --git a/sc/source/core/tool/unitconv.cxx b/sc/source/core/tool/unitconv.cxx index 918060b12751..58cb4146be01 100644 --- a/sc/source/core/tool/unitconv.cxx +++ b/sc/source/core/tool/unitconv.cxx @@ -75,7 +75,6 @@ ScDataObject* ScUnitConverterData::Clone() const } -// static void ScUnitConverterData::BuildIndexString( String& rStr, const String& rFromUnit, const String& rToUnit ) { @@ -109,7 +108,7 @@ ScUnitConverter::ScUnitConverter( USHORT nInit, USHORT nDeltaP ) : // read from configuration - "convert.ini" is no longer used //! config item as member to allow change of values - ScLinkConfigItem aConfigItem( OUString::createFromAscii( CFGPATH_UNIT ) ); + ScLinkConfigItem aConfigItem( OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_UNIT )) ); // empty node name -> use the config item's path itself OUString aEmptyString; @@ -130,11 +129,11 @@ ScUnitConverter::ScUnitConverter( USHORT nInit, USHORT nDeltaP ) : sPrefix += sSlash; pValNameArray[nIndex] = sPrefix; - pValNameArray[nIndex++] += OUString::createFromAscii( CFGSTR_UNIT_FROM ); + pValNameArray[nIndex++] += OUString(RTL_CONSTASCII_USTRINGPARAM( CFGSTR_UNIT_FROM )); pValNameArray[nIndex] = sPrefix; - pValNameArray[nIndex++] += OUString::createFromAscii( CFGSTR_UNIT_TO ); + pValNameArray[nIndex++] += OUString(RTL_CONSTASCII_USTRINGPARAM( CFGSTR_UNIT_TO )); pValNameArray[nIndex] = sPrefix; - pValNameArray[nIndex++] += OUString::createFromAscii( CFGSTR_UNIT_FACTOR ); + pValNameArray[nIndex++] += OUString(RTL_CONSTASCII_USTRINGPARAM( CFGSTR_UNIT_FACTOR )); } Sequence<Any> aProperties = aConfigItem.GetProperties(aValNames); diff --git a/sc/source/core/tool/userlist.cxx b/sc/source/core/tool/userlist.cxx index deb070005653..edbaf7aba3c0 100644 --- a/sc/source/core/tool/userlist.cxx +++ b/sc/source/core/tool/userlist.cxx @@ -78,7 +78,7 @@ ScUserListData::ScUserListData(const ScUserListData& rData) : InitTokens(); } -__EXPORT ScUserListData::~ScUserListData() +ScUserListData::~ScUserListData() { delete[] pSubStrings; delete[] pUpperSub; diff --git a/sc/source/core/tool/viewopti.cxx b/sc/source/core/tool/viewopti.cxx index 4c01f443d0db..3372e1f55768 100644 --- a/sc/source/core/tool/viewopti.cxx +++ b/sc/source/core/tool/viewopti.cxx @@ -141,7 +141,7 @@ ScViewOptions::ScViewOptions( const ScViewOptions& rCpy ) //------------------------------------------------------------------------ -__EXPORT ScViewOptions::~ScViewOptions() +ScViewOptions::~ScViewOptions() { } @@ -261,20 +261,20 @@ ScTpViewItem::ScTpViewItem( const ScTpViewItem& rItem ) //------------------------------------------------------------------------ -__EXPORT ScTpViewItem::~ScTpViewItem() +ScTpViewItem::~ScTpViewItem() { } //------------------------------------------------------------------------ -String __EXPORT ScTpViewItem::GetValueText() const +String ScTpViewItem::GetValueText() const { return String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM("ScTpViewItem") ); } //------------------------------------------------------------------------ -int __EXPORT ScTpViewItem::operator==( const SfxPoolItem& rItem ) const +int ScTpViewItem::operator==( const SfxPoolItem& rItem ) const { DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" ); @@ -285,7 +285,7 @@ int __EXPORT ScTpViewItem::operator==( const SfxPoolItem& rItem ) const //------------------------------------------------------------------------ -SfxPoolItem* __EXPORT ScTpViewItem::Clone( SfxItemPool * ) const +SfxPoolItem* ScTpViewItem::Clone( SfxItemPool * ) const { return new ScTpViewItem( *this ); } @@ -406,10 +406,10 @@ Sequence<OUString> ScViewCfg::GetGridPropertyNames() // adjust for metric system if (ScOptionsUtil::IsMetricSystem()) { - pNames[SCGRIDOPT_RESOLU_X] = OUString::createFromAscii( "Resolution/XAxis/Metric" ); - pNames[SCGRIDOPT_RESOLU_Y] = OUString::createFromAscii( "Resolution/YAxis/Metric" ); - pNames[SCGRIDOPT_OPTION_X] = OUString::createFromAscii( "Option/XAxis/Metric" ); - pNames[SCGRIDOPT_OPTION_Y] = OUString::createFromAscii( "Option/YAxis/Metric" ); + pNames[SCGRIDOPT_RESOLU_X] = OUString(RTL_CONSTASCII_USTRINGPARAM( "Resolution/XAxis/Metric" )); + pNames[SCGRIDOPT_RESOLU_Y] = OUString(RTL_CONSTASCII_USTRINGPARAM( "Resolution/YAxis/Metric" )); + pNames[SCGRIDOPT_OPTION_X] = OUString(RTL_CONSTASCII_USTRINGPARAM( "Option/XAxis/Metric" )); + pNames[SCGRIDOPT_OPTION_Y] = OUString(RTL_CONSTASCII_USTRINGPARAM( "Option/YAxis/Metric" )); } return aNames; @@ -417,9 +417,9 @@ Sequence<OUString> ScViewCfg::GetGridPropertyNames() ScViewCfg::ScViewCfg() : - aLayoutItem( OUString::createFromAscii( CFGPATH_LAYOUT ) ), - aDisplayItem( OUString::createFromAscii( CFGPATH_DISPLAY ) ), - aGridItem( OUString::createFromAscii( CFGPATH_GRID ) ) + aLayoutItem( OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_LAYOUT )) ), + aDisplayItem( OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_DISPLAY )) ), + aGridItem( OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_GRID )) ) { sal_Int32 nIntVal = 0; diff --git a/sc/source/core/tool/zforauto.cxx b/sc/source/core/tool/zforauto.cxx index 0b9f116aa153..1b990aa475e8 100644 --- a/sc/source/core/tool/zforauto.cxx +++ b/sc/source/core/tool/zforauto.cxx @@ -37,7 +37,7 @@ #include "zforauto.hxx" #include "global.hxx" -static const sal_Char __FAR_DATA pStandardName[] = "Standard"; +static const sal_Char pStandardName[] = "Standard"; //------------------------------------------------------------------------ diff --git a/sc/source/filter/dif/makefile.mk b/sc/source/filter/dif/makefile.mk index 70944b9f9536..495a7ab5edf3 100644 --- a/sc/source/filter/dif/makefile.mk +++ b/sc/source/filter/dif/makefile.mk @@ -42,10 +42,14 @@ PROJECTPCHSOURCE=..\pch\filt_pch # --- Files -------------------------------------------------------- -SLOFILES = \ +SLOFILES = \ + $(EXCEPTIONSFILES) + +EXCEPTIONSFILES = \ $(SLO)$/difimp.obj \ $(SLO)$/difexp.obj + # --- Targets ------------------------------------------------------- .INCLUDE : target.mk diff --git a/sc/source/filter/excel/colrowst.cxx b/sc/source/filter/excel/colrowst.cxx index 6905d295009d..aa63702c3921 100644 --- a/sc/source/filter/excel/colrowst.cxx +++ b/sc/source/filter/excel/colrowst.cxx @@ -143,7 +143,7 @@ void XclImpColRowSettings::SetHeight( SCROW nScRow, sal_uInt16 nHeight ) bool bDefHeight = ::get_flag( nHeight, EXC_ROW_FLAGDEFHEIGHT ) || (nRawHeight == 0); maRowHeights.insert_back(nScRow, nScRow+1, nRawHeight); sal_uInt8 nFlagVal = 0; - if (!maRowFlags.search(nScRow, nFlagVal)) + if (!maRowFlags.search(nScRow, nFlagVal).second) return; ::set_flag(nFlagVal, EXC_COLROW_USED); @@ -166,7 +166,7 @@ void XclImpColRowSettings::SetRowSettings( SCROW nScRow, sal_uInt16 nHeight, sal SetHeight(nScRow, nHeight); sal_uInt8 nFlagVal = 0; - if (!maRowFlags.search(nScRow, nFlagVal)) + if (!maRowFlags.search(nScRow, nFlagVal).second) return; if (::get_flag(nFlags, EXC_ROW_UNSYNCED)) @@ -184,7 +184,7 @@ void XclImpColRowSettings::SetManualRowHeight( SCROW nScRow ) return; sal_uInt8 nFlagVal = 0; - if (!maRowFlags.search(nScRow, nFlagVal)) + if (!maRowFlags.search(nScRow, nFlagVal).second) return; ::set_flag(nFlagVal, EXC_COLROW_MAN); @@ -242,7 +242,6 @@ void XclImpColRowSettings::Convert( SCTAB nScTab ) RowFlagsType::const_iterator itrFlags = maRowFlags.begin(), itrFlagsEnd = maRowFlags.end(); SCROW nPrevRow = -1; sal_uInt8 nPrevFlags = 0; - sal_uInt16 nPrevHeight = 0; for (; itrFlags != itrFlagsEnd; ++itrFlags) { SCROW nRow = itrFlags->first; @@ -274,7 +273,6 @@ void XclImpColRowSettings::Convert( SCTAB nScTab ) rDoc.SetRowHeightOnly(i, nLast-1, nScTab, nHeight); i = nLast-1; - nPrevHeight = nHeight; } } @@ -286,7 +284,6 @@ void XclImpColRowSettings::Convert( SCTAB nScTab ) nHeight = mnDefHeight; rDoc.SetRowHeightOnly(nPrevRow, nRow-1, nScTab, nHeight); } - nPrevHeight = nHeight; } nPrevRow = nRow; @@ -328,7 +325,7 @@ void XclImpColRowSettings::ConvertHiddenFlags( SCTAB nScTab ) if (nLastXLRow < MAXROW) { bool bHidden = false; - if (!maHiddenRows.search(nLastXLRow, bHidden)) + if (!maHiddenRows.search(nLastXLRow, bHidden).second) return; maHiddenRows.insert_back(nLastXLRow, MAXROWCOUNT, bHidden); diff --git a/sc/source/filter/excel/excdoc.cxx b/sc/source/filter/excel/excdoc.cxx index 085f38129c33..6bd9a1388513 100644 --- a/sc/source/filter/excel/excdoc.cxx +++ b/sc/source/filter/excel/excdoc.cxx @@ -88,6 +88,7 @@ #include <com/sun/star/document/XDocumentProperties.hpp> #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> #include <oox/core/tokens.hxx> +#include <boost/shared_ptr.hpp> using ::rtl::OString; @@ -131,9 +132,7 @@ static void lcl_AddWorkbookProtection( XclExpRecordList<>& aRecList, ExcTable& s { aRecList.AppendNewRecord( new XclExpWindowProtection(pProtect->isOptionEnabled(ScDocProtection::WINDOWS)) ); aRecList.AppendNewRecord( new XclExpProtection(pProtect->isOptionEnabled(ScDocProtection::STRUCTURE)) ); -#if ENABLE_SHEET_PROTECTION aRecList.AppendNewRecord( new XclExpPassHash(pProtect->getPasswordHash(PASSHASH_XL)) ); -#endif } aRecList.AppendNewRecord( new XclExpXmlEndSingleElementRecord() ); // XML_workbookProtection @@ -439,7 +438,7 @@ void ExcTable::FillAsTable( SCTAB nCodeNameIdx ) // WSBOOL needs data from page settings, create it here, add it later - ScfRef< XclExpPageSettings > xPageSett( new XclExpPageSettings( GetRoot() ) ); + boost::shared_ptr< XclExpPageSettings > xPageSett( new XclExpPageSettings( GetRoot() ) ); bool bFitToPages = xPageSett->GetPageData().mbFitToPages; if( eBiff <= EXC_BIFF5 ) @@ -473,9 +472,7 @@ void ExcTable::FillAsTable( SCTAB nCodeNameIdx ) Add( new XclExpProtection(true) ); Add( new XclExpBoolRecord(0x00DD, pTabProtect->isOptionEnabled(ScTableProtection::SCENARIOS)) ); Add( new XclExpBoolRecord(0x0063, pTabProtect->isOptionEnabled(ScTableProtection::OBJECTS)) ); -#if ENABLE_SHEET_PROTECTION Add( new XclExpPassHash(pTabProtect->getPasswordHash(PASSHASH_XL)) ); -#endif } // local link table: EXTERNCOUNT, EXTERNSHEET @@ -548,7 +545,7 @@ void ExcTable::FillAsXmlTable( SCTAB nCodeNameIdx ) RootData& rR = GetOldRoot(); // WSBOOL needs data from page settings, create it here, add it later - ScfRef< XclExpPageSettings > xPageSett( new XclExpPageSettings( GetRoot() ) ); + boost::shared_ptr< XclExpPageSettings > xPageSett( new XclExpPageSettings( GetRoot() ) ); bool bFitToPages = xPageSett->GetPageData().mbFitToPages; Add( new ExcBof8 ); @@ -760,7 +757,7 @@ void ExcDocument::Write( SvStream& rSvStrm ) aHeader.Write( aXclStrm ); - DBG_ASSERT( maTableList.GetSize() == maBoundsheetList.GetSize(), + OSL_ENSURE( maTableList.GetSize() == maBoundsheetList.GetSize(), "ExcDocument::Write - different number of sheets and BOUNDSHEET records" ); for( size_t nTab = 0, nTabCount = maTableList.GetSize(); nTab < nTabCount; ++nTab ) diff --git a/sc/source/filter/excel/excform.cxx b/sc/source/filter/excel/excform.cxx index 16807b7bf4ad..870eeb38ad38 100644 --- a/sc/source/filter/excel/excform.cxx +++ b/sc/source/filter/excel/excform.cxx @@ -696,7 +696,7 @@ ConvErr ExcelToSc::Convert( const ScTokenArray*& pErgebnis, XclImpStream& aIn, s aPool << ocDde << ocOpen << nPar1 << ocSep << nPar2 << ocSep << nMerk0 << ocClose; - GetDoc().CreateDdeLink( aAppl, aExtDoc, pExtName->aName, SC_DDE_DEFAULT ); + GetDoc().CreateDdeLink( aAppl, aExtDoc, pExtName->aName, SC_DDE_DEFAULT, ScMatrixRef() ); } else aPool << ocBad; @@ -1524,7 +1524,7 @@ BOOL ExcelToSc::GetAbsRefs( ScRangeList& rRangeList, XclImpStream& rStrm, sal_Si } rStrm.Seek( nEndPos ); - return rRangeList.Count() != 0; + return !rRangeList.empty(); } void ExcelToSc::DoMulArgs( DefTokenId eId, sal_uInt8 nAnz, sal_uInt8 nMinParamCount ) diff --git a/sc/source/filter/excel/excform8.cxx b/sc/source/filter/excel/excform8.cxx index b542a9bdd580..ccbdd9d2cb97 100644 --- a/sc/source/filter/excel/excform8.cxx +++ b/sc/source/filter/excel/excform8.cxx @@ -1586,7 +1586,7 @@ BOOL ExcelToSc8::GetAbsRefs( ScRangeList& r, XclImpStream& aIn, sal_Size nLen ) } aIn.Seek( nEndPos ); - return r.Count() != 0; + return !r.empty(); } diff --git a/sc/source/filter/excel/excimp8.cxx b/sc/source/filter/excel/excimp8.cxx index 92eb3b565666..9c7634e443c1 100644 --- a/sc/source/filter/excel/excimp8.cxx +++ b/sc/source/filter/excel/excimp8.cxx @@ -105,13 +105,99 @@ #include <com/sun/star/document/XDocumentProperties.hpp> #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> #include <com/sun/star/script/ModuleInfo.hpp> +#include <com/sun/star/container/XIndexContainer.hpp> +#include <com/sun/star/document/XFilter.hpp> +#include <com/sun/star/document/XImporter.hpp> +#include <comphelper/mediadescriptor.hxx> #include <cppuhelper/component_context.hxx> #include <sfx2/app.hxx> #include "xltoolbar.hxx" + using namespace com::sun::star; +using namespace ::comphelper; using ::rtl::OUString; +//OleNameOverrideContainer + +typedef ::cppu::WeakImplHelper1< container::XNameContainer > OleNameOverrideContainer_BASE; + +class OleNameOverrideContainer : public OleNameOverrideContainer_BASE +{ +private: + typedef std::hash_map< rtl::OUString, uno::Reference< container::XIndexContainer >, ::rtl::OUStringHash, + ::std::equal_to< ::rtl::OUString > > NamedIndexToOleName; + NamedIndexToOleName IdToOleNameHash; + ::osl::Mutex m_aMutex; +public: + // XElementAccess + virtual uno::Type SAL_CALL getElementType( ) throw (uno::RuntimeException) { return container::XIndexContainer::static_type(0); } + virtual ::sal_Bool SAL_CALL hasElements( ) throw (uno::RuntimeException) + { + ::osl::MutexGuard aGuard( m_aMutex ); + return ( IdToOleNameHash.size() > 0 ); + } + // XNameAcess + virtual uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) + { + ::osl::MutexGuard aGuard( m_aMutex ); + if ( !hasByName(aName) ) + throw container::NoSuchElementException(); + return uno::makeAny( IdToOleNameHash[ aName ] ); + } + virtual uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames( ) throw (uno::RuntimeException) + { + ::osl::MutexGuard aGuard( m_aMutex ); + uno::Sequence< ::rtl::OUString > aResult( IdToOleNameHash.size() ); + NamedIndexToOleName::iterator it = IdToOleNameHash.begin(); + NamedIndexToOleName::iterator it_end = IdToOleNameHash.end(); + rtl::OUString* pName = aResult.getArray(); + for (; it != it_end; ++it, ++pName ) + *pName = it->first; + return aResult; + } + virtual ::sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw (uno::RuntimeException) + { + ::osl::MutexGuard aGuard( m_aMutex ); + return ( IdToOleNameHash.find( aName ) != IdToOleNameHash.end() ); + } + + // XElementAccess + virtual ::sal_Int32 SAL_CALL getCount( ) throw (uno::RuntimeException) + { + ::osl::MutexGuard aGuard( m_aMutex ); + return IdToOleNameHash.size(); + } + // XNameContainer + virtual void SAL_CALL insertByName( const ::rtl::OUString& aName, const uno::Any& aElement ) throw(lang::IllegalArgumentException, container::ElementExistException, lang::WrappedTargetException, uno::RuntimeException) + { + ::osl::MutexGuard aGuard( m_aMutex ); + if ( hasByName( aName ) ) + throw container::ElementExistException(); + uno::Reference< container::XIndexContainer > xElement; + if ( ! ( aElement >>= xElement ) ) + throw lang::IllegalArgumentException(); + IdToOleNameHash[ aName ] = xElement; + } + virtual void SAL_CALL removeByName( const ::rtl::OUString& aName ) throw(container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) + { + ::osl::MutexGuard aGuard( m_aMutex ); + if ( !hasByName( aName ) ) + throw container::NoSuchElementException(); + IdToOleNameHash.erase( IdToOleNameHash.find( aName ) ); + } + virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName, const uno::Any& aElement ) throw(lang::IllegalArgumentException, container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) + { + ::osl::MutexGuard aGuard( m_aMutex ); + if ( !hasByName( aName ) ) + throw container::NoSuchElementException(); + uno::Reference< container::XIndexContainer > xElement; + if ( ! ( aElement >>= xElement ) ) + throw lang::IllegalArgumentException(); + IdToOleNameHash[ aName ] = xElement; + } +}; + // defined in docfunc.cxx ( really this needs a new name ) script::ModuleInfo lcl_InitModuleInfo( SfxObjectShell& rDocSh, String& sModule ); @@ -244,9 +330,10 @@ void ImportExcel8::ReadBasic( void ) bool bLoadCode = pFilterOpt->IsLoadExcelBasicCode(); bool bLoadExecutable = pFilterOpt->IsLoadExcelBasicExecutable(); bool bLoadStrg = pFilterOpt->IsLoadExcelBasicStorage(); + // #FIXME need to get rid of this, we can also do this from within oox + // via the "ooo.vba.VBAGlobals" service if( bLoadCode || bLoadStrg ) { - SvxImportMSVBasic aBasicImport( *pShell, *xRootStrg, bLoadCode, bLoadStrg ); bool bAsComment = !bLoadExecutable; if ( !bAsComment ) @@ -268,9 +355,45 @@ void ImportExcel8::ReadBasic( void ) #endif } - aBasicImport.Import( EXC_STORAGE_VBA_PROJECT, EXC_STORAGE_VBA, bAsComment ); - if ( !bAsComment ) - GetObjectManager().SetOleNameOverrideInfo( aBasicImport.ControlNameForObjectId() ); + } + try + { + uno::Reference< lang::XComponent > xComponent( pShell->GetModel(), uno::UNO_QUERY_THROW ); + uno::Sequence< beans::NamedValue > aArgSeq( 1 ); + + // collect names of embedded form controls, as specified in the VBA project + aArgSeq[ 0 ].Name = CREATE_OUSTRING( "OleNameOverrideInfo" ); + uno::Reference< container::XNameContainer > xOleNameOverrideSink( new OleNameOverrideContainer ); + aArgSeq[ 0 ].Value <<= xOleNameOverrideSink; + + uno::Sequence< uno::Any > aArgs( 2 ); + // framework calls filter objects with factory as first argument + aArgs[ 0 ] <<= getProcessServiceFactory(); + aArgs[ 1 ] <<= aArgSeq; + + uno::Reference< document::XImporter > xImporter( ScfApiHelper::CreateInstanceWithArgs( CREATE_OUSTRING( "com.sun.star.comp.oox.ExcelVBAProjectFilter" ), aArgs ), uno::UNO_QUERY_THROW ); + xImporter->setTargetDocument( xComponent ); + + MediaDescriptor aMediaDesc; + SfxMedium& rMedium = GetMedium(); + SfxItemSet* pItemSet = rMedium.GetItemSet(); + if( pItemSet ) + { + if( const SfxStringItem* pItem = static_cast< const SfxStringItem* >( pItemSet->GetItem( SID_FILE_NAME ) ) ) + aMediaDesc[ MediaDescriptor::PROP_URL() ] <<= ::rtl::OUString( pItem->GetValue() ); + if( const SfxStringItem* pItem = static_cast< const SfxStringItem* >( pItemSet->GetItem( SID_PASSWORD ) ) ) + aMediaDesc[ MediaDescriptor::PROP_PASSWORD() ] <<= ::rtl::OUString( pItem->GetValue() ); + } + aMediaDesc[ MediaDescriptor::PROP_INPUTSTREAM() ] <<= rMedium.GetInputStream(); + aMediaDesc[ MediaDescriptor::PROP_INTERACTIONHANDLER() ] <<= rMedium.GetInteractionHandler(); + + // call the filter + uno::Reference< document::XFilter > xFilter( xImporter, uno::UNO_QUERY_THROW ); + xFilter->filter( aMediaDesc.getAsConstPropertyValueList() ); + GetObjectManager().SetOleNameOverrideInfo( xOleNameOverrideSink ); + } + catch( uno::Exception& ) + { } } } diff --git a/sc/source/filter/excel/impop.cxx b/sc/source/filter/excel/impop.cxx index 0ca50c16a52c..d6d330848619 100644 --- a/sc/source/filter/excel/impop.cxx +++ b/sc/source/filter/excel/impop.cxx @@ -1168,11 +1168,11 @@ void ImportExcel::NeueTabelle( void ) InitializeTable( nTab ); - pOutlineListBuffer->Append( new XclImpOutlineDataBuffer( GetRoot(), nTab ) ); - - pExcRoot->pColRowBuff = pColRowBuff = pOutlineListBuffer->Last()->GetColRowBuff(); - pColOutlineBuff = pOutlineListBuffer->Last()->GetColOutline(); - pRowOutlineBuff = pOutlineListBuffer->Last()->GetRowOutline(); + XclImpOutlineDataBuffer* pNewItem = new XclImpOutlineDataBuffer( GetRoot(), nTab ); + pOutlineListBuffer->push_back( pNewItem ); + pExcRoot->pColRowBuff = pColRowBuff = pNewItem->GetColRowBuff(); + pColOutlineBuff = pNewItem->GetColOutline(); + pRowOutlineBuff = pNewItem->GetRowOutline(); } @@ -1202,8 +1202,8 @@ void ImportExcel::PostDocLoad( void ) pStyleSheet->GetItemSet().Put( SfxUInt16Item( ATTR_PAGE_FIRSTPAGENO, 0 ) ); // outlines for all sheets, sets hidden rows and columns (#i11776# after filtered ranges) - for( XclImpOutlineDataBuffer* pBuffer = pOutlineListBuffer->First(); pBuffer; pBuffer = pOutlineListBuffer->Next() ) - pBuffer->Convert(); + for (XclImpOutlineListBuffer::iterator itBuffer = pOutlineListBuffer->begin(); itBuffer != pOutlineListBuffer->end(); ++itBuffer) + itBuffer->Convert(); // document view settings (before visible OLE area) GetDocViewSettings().Finalize(); diff --git a/sc/source/filter/excel/makefile.mk b/sc/source/filter/excel/makefile.mk index c9618737a516..636181c66446 100644 --- a/sc/source/filter/excel/makefile.mk +++ b/sc/source/filter/excel/makefile.mk @@ -45,63 +45,7 @@ VISIBILITY_HIDDEN=TRUE # --- Files -------------------------------------------------------- SLOFILES = \ - $(SLO)$/colrowst.obj \ - $(SLO)$/excdoc.obj \ - $(SLO)$/excel.obj \ - $(SLO)$/excform.obj \ - $(SLO)$/excform8.obj \ - $(SLO)$/excimp8.obj \ - $(SLO)$/excrecds.obj \ - $(SLO)$/exctools.obj \ - $(SLO)$/expop2.obj \ - $(SLO)$/fontbuff.obj \ - $(SLO)$/frmbase.obj \ - $(SLO)$/impop.obj \ - $(SLO)$/namebuff.obj \ - $(SLO)$/read.obj \ - $(SLO)$/tokstack.obj \ - $(SLO)$/xechart.obj \ - $(SLO)$/xecontent.obj \ - $(SLO)$/xeescher.obj \ - $(SLO)$/xeformula.obj \ - $(SLO)$/xehelper.obj \ - $(SLO)$/xelink.obj \ - $(SLO)$/xename.obj \ - $(SLO)$/xepage.obj \ - $(SLO)$/xepivot.obj \ - $(SLO)$/xerecord.obj \ - $(SLO)$/xeroot.obj \ - $(SLO)$/xestream.obj \ - $(SLO)$/xestring.obj \ - $(SLO)$/xestyle.obj \ - $(SLO)$/xetable.obj \ - $(SLO)$/xeview.obj \ - $(SLO)$/xichart.obj \ - $(SLO)$/xicontent.obj \ - $(SLO)$/xiescher.obj \ - $(SLO)$/xiformula.obj \ - $(SLO)$/xihelper.obj \ - $(SLO)$/xilink.obj \ - $(SLO)$/xiname.obj \ - $(SLO)$/xipage.obj \ - $(SLO)$/xipivot.obj \ - $(SLO)$/xiroot.obj \ - $(SLO)$/xistream.obj \ - $(SLO)$/xistring.obj \ - $(SLO)$/xistyle.obj \ - $(SLO)$/xiview.obj \ - $(SLO)$/xladdress.obj \ - $(SLO)$/xlchart.obj \ - $(SLO)$/xlescher.obj \ - $(SLO)$/xlformula.obj \ - $(SLO)$/xlpage.obj \ - $(SLO)$/xlpivot.obj \ - $(SLO)$/xlroot.obj \ - $(SLO)$/xlstyle.obj \ - $(SLO)$/xltools.obj \ - $(SLO)$/xltracer.obj \ - $(SLO)$/xlview.obj \ - $(SLO)$/xltoolbar.obj \ + $(EXCEPTIONSFILES) .IF "$(OS)$(COM)$(CPUNAME)"=="LINUXGCCSPARC" NOOPTFILES = \ @@ -109,49 +53,62 @@ NOOPTFILES = \ .ENDIF EXCEPTIONSFILES = \ - $(SLO)$/excdoc.obj \ - $(SLO)$/excel.obj \ - $(SLO)$/excform.obj \ + $(SLO)$/colrowst.obj \ + $(SLO)$/excdoc.obj \ + $(SLO)$/excel.obj \ + $(SLO)$/excform.obj \ $(SLO)$/excform8.obj \ - $(SLO)$/excimp8.obj \ + $(SLO)$/excimp8.obj \ $(SLO)$/excrecds.obj \ - $(SLO)$/expop2.obj \ - $(SLO)$/impop.obj \ + $(SLO)$/exctools.obj \ + $(SLO)$/expop2.obj \ + $(SLO)$/fontbuff.obj \ + $(SLO)$/frmbase.obj \ + $(SLO)$/impop.obj \ $(SLO)$/namebuff.obj \ + $(SLO)$/read.obj \ $(SLO)$/tokstack.obj \ + $(SLO)$/xechart.obj \ $(SLO)$/xecontent.obj \ $(SLO)$/xeescher.obj \ $(SLO)$/xeformula.obj \ $(SLO)$/xehelper.obj \ - $(SLO)$/xelink.obj \ - $(SLO)$/xename.obj \ - $(SLO)$/xepage.obj \ - $(SLO)$/xepivot.obj \ - $(SLO)$/xechart.obj \ + $(SLO)$/xelink.obj \ + $(SLO)$/xename.obj \ + $(SLO)$/xepage.obj \ + $(SLO)$/xepivot.obj \ + $(SLO)$/xerecord.obj \ + $(SLO)$/xeroot.obj \ $(SLO)$/xestream.obj \ $(SLO)$/xestring.obj \ - $(SLO)$/xestyle.obj \ - $(SLO)$/xetable.obj \ - $(SLO)$/xeview.obj \ - $(SLO)$/xichart.obj \ + $(SLO)$/xestyle.obj \ + $(SLO)$/xetable.obj \ + $(SLO)$/xeview.obj \ + $(SLO)$/xichart.obj \ $(SLO)$/xicontent.obj \ $(SLO)$/xiescher.obj \ + $(SLO)$/xiformula.obj \ $(SLO)$/xihelper.obj \ - $(SLO)$/xilink.obj \ - $(SLO)$/xipage.obj \ - $(SLO)$/xipivot.obj \ + $(SLO)$/xilink.obj \ + $(SLO)$/xiname.obj \ + $(SLO)$/xipage.obj \ + $(SLO)$/xipivot.obj \ + $(SLO)$/xiroot.obj \ $(SLO)$/xistream.obj \ $(SLO)$/xistring.obj \ - $(SLO)$/xistyle.obj \ + $(SLO)$/xistyle.obj \ + $(SLO)$/xiview.obj \ $(SLO)$/xladdress.obj \ - $(SLO)$/xiescher.obj \ - $(SLO)$/xlchart.obj \ + $(SLO)$/xlchart.obj \ + $(SLO)$/xlescher.obj \ $(SLO)$/xlformula.obj \ - $(SLO)$/xlpivot.obj \ - $(SLO)$/xlroot.obj \ - $(SLO)$/xlstyle.obj \ - $(SLO)$/xltoolbar.obj \ - $(SLO)$/xltools.obj \ + $(SLO)$/xlpage.obj \ + $(SLO)$/xlpivot.obj \ + $(SLO)$/xlroot.obj \ + $(SLO)$/xlstyle.obj \ + $(SLO)$/xltoolbar.obj \ + $(SLO)$/xltools.obj \ + $(SLO)$/xltracer.obj \ $(SLO)$/xlview.obj # --- Targets ------------------------------------------------------- diff --git a/sc/source/filter/excel/read.cxx b/sc/source/filter/excel/read.cxx index 706aa9318622..516fd65cc27b 100644 --- a/sc/source/filter/excel/read.cxx +++ b/sc/source/filter/excel/read.cxx @@ -865,7 +865,6 @@ FltError ImportExcel8::Read( void ) eAkt = EXC_STATE_SHEET; aIn.SeekGlobalPosition(); continue; // next iteration in while loop -// break; // unxsols warning: statement unreachable case EXC_STATE_SHEET: Eof(); eAkt = EXC_STATE_END; diff --git a/sc/source/filter/excel/xechart.cxx b/sc/source/filter/excel/xechart.cxx index 26d42d6c353b..3929c4289ff8 100644 --- a/sc/source/filter/excel/xechart.cxx +++ b/sc/source/filter/excel/xechart.cxx @@ -134,7 +134,7 @@ XclExpStream& operator<<( XclExpStream& rStrm, const XclChRectangle& rRect ) inline void lclSaveRecord( XclExpStream& rStrm, XclExpRecordRef xRec ) { - if( xRec.is() ) + if( xRec ) xRec->Save( rStrm ); } @@ -142,7 +142,7 @@ inline void lclSaveRecord( XclExpStream& rStrm, XclExpRecordRef xRec ) template< typename Type > void lclSaveRecord( XclExpStream& rStrm, XclExpRecordRef xRec, sal_uInt16 nRecId, Type nValue ) { - if( xRec.is() ) + if( xRec ) { XclExpValueRecord< Type >( nRecId, nValue ).Save( rStrm ); xRec->Save( rStrm ); @@ -639,12 +639,12 @@ void XclExpChEscherFormat::Convert( const ScfPropertySet& rPropSet, XclChObjectT bool XclExpChEscherFormat::IsValid() const { - return maData.mxEscherSet.is(); + return maData.mxEscherSet; } void XclExpChEscherFormat::Save( XclExpStream& rStrm ) { - if( maData.mxEscherSet.is() ) + if( maData.mxEscherSet ) { // replace RGB colors with palette indexes in the Escher container const XclExpPalette& rPal = GetPalette(); @@ -672,7 +672,7 @@ void XclExpChEscherFormat::WriteSubRecords( XclExpStream& rStrm ) sal_uInt32 XclExpChEscherFormat::RegisterColor( sal_uInt16 nPropId ) { sal_uInt32 nBGRValue; - if( maData.mxEscherSet.is() && maData.mxEscherSet->GetOpt( nPropId, nBGRValue ) ) + if( maData.mxEscherSet && maData.mxEscherSet->GetOpt( nPropId, nBGRValue ) ) { // swap red and blue Color aColor( RGB_COLORDATA( @@ -686,7 +686,7 @@ sal_uInt32 XclExpChEscherFormat::RegisterColor( sal_uInt16 nPropId ) void XclExpChEscherFormat::WriteBody( XclExpStream& rStrm ) { - DBG_ASSERT( maData.mxEscherSet.is(), "XclExpChEscherFormat::WriteBody - missing property container" ); + DBG_ASSERT( maData.mxEscherSet, "XclExpChEscherFormat::WriteBody - missing property container" ); // write Escher property container via temporary memory stream SvMemoryStream aMemStrm; maData.mxEscherSet->Commit( aMemStrm ); @@ -1020,7 +1020,7 @@ void XclExpChSourceLink::ConvertNumFmt( const ScfPropertySet& rPropSet, bool bPe void XclExpChSourceLink::AppendString( const String& rStr ) { - if (!mxString.is()) + if (!mxString) return; XclExpStringHelper::AppendString( *mxString, GetRoot(), rStr ); } @@ -1028,7 +1028,7 @@ void XclExpChSourceLink::AppendString( const String& rStr ) void XclExpChSourceLink::Save( XclExpStream& rStrm ) { // CHFORMATRUNS record - if( mxString.is() && mxString->IsRich() ) + if( mxString && mxString->IsRich() ) { sal_Size nRecSize = (1 + mxString->GetFormatsCount()) * ((GetBiff() == EXC_BIFF8) ? 2 : 1); rStrm.StartRecord( EXC_ID_CHFORMATRUNS, nRecSize ); @@ -1038,7 +1038,7 @@ void XclExpChSourceLink::Save( XclExpStream& rStrm ) // CHSOURCELINK record XclExpRecord::Save( rStrm ); // CHSTRING record - if( mxString.is() && !mxString->IsEmpty() ) + if( mxString && !mxString->IsEmpty() ) { rStrm.StartRecord( EXC_ID_CHSTRING, 2 + mxString->GetSize() ); rStrm << sal_uInt16( 0 ) << *mxString; @@ -1861,7 +1861,7 @@ bool XclExpChSeries::ConvertDataSeries( maData.mnCategCount = mxCategLink->ConvertDataSequence( xXValueSeq, false, maData.mnValueCount ); // size values of bubble charts - if( mxBubbleLink.is() ) + if( mxBubbleLink ) mxBubbleLink->ConvertDataSequence( xBubbleSeq, false, maData.mnValueCount ); // series formatting @@ -2042,7 +2042,7 @@ void XclExpChSeries::CreateTrendLines( XDataSeriesRef xDataSeries ) for( const Reference< XRegressionCurve >* pIt = pBeg; pIt != pEnd; ++pIt ) { XclExpChSeriesRef xSeries = GetChartData().CreateSeries(); - if( xSeries.is() && !xSeries->ConvertTrendLine( *this, *pIt ) ) + if( xSeries && !xSeries->ConvertTrendLine( *this, *pIt ) ) GetChartData().RemoveLastSeries(); } } @@ -2066,7 +2066,7 @@ void XclExpChSeries::CreateErrorBar( const ScfPropertySet& rPropSet, if( rPropSet.GetBoolProperty( rShowPropName ) ) { XclExpChSeriesRef xSeries = GetChartData().CreateSeries(); - if( xSeries.is() && !xSeries->ConvertErrorBar( *this, rPropSet, nBarId ) ) + if( xSeries && !xSeries->ConvertErrorBar( *this, rPropSet, nBarId ) ) GetChartData().RemoveLastSeries(); } } @@ -2420,8 +2420,18 @@ void XclExpChTypeGroup::ConvertSeries( maType.SetStacked( bPercent ); // connected data points (only in stacked bar charts) - if( bConnectBars && (maTypeInfo.meTypeCateg == EXC_CHTYPECATEG_BAR) ) - maChartLines[ EXC_CHCHARTLINE_CONNECT ].reset( new XclExpChLineFormat( GetChRoot() ) ); + if (bConnectBars && (maTypeInfo.meTypeCateg == EXC_CHTYPECATEG_BAR)) + { + sal_uInt16 nKey = EXC_CHCHARTLINE_CONNECT; + XclExpChLineFormatRef p(new XclExpChLineFormat(GetChRoot())); + XclExpChLineFormatMap::iterator itr = maChartLines.lower_bound(nKey); + if (itr != maChartLines.end() && !(maChartLines.key_comp()(nKey, itr->first))) + // Overwrite the existing element. + itr->second = p; + else + // Insert new element. + maChartLines.insert(itr, XclExpChLineFormatMap::value_type(nKey, p)); + } } else { @@ -2486,7 +2496,7 @@ void XclExpChTypeGroup::CreateDataSeries( { // let chart create series object with correct series index XclExpChSeriesRef xSeries = GetChartData().CreateSeries(); - if( xSeries.is() ) + if( xSeries ) { if( xSeries->ConvertDataSeries( xDiagram, xDataSeries, maTypeInfo, GetGroupIdx(), GetFreeFormatIdx() ) ) maSeries.AppendRecord( xSeries ); @@ -2538,7 +2548,7 @@ bool XclExpChTypeGroup::CreateStockSeries( Reference< XDataSeries > xDataSeries, bool bOk = false; // let chart create series object with correct series index XclExpChSeriesRef xSeries = GetChartData().CreateSeries(); - if( xSeries.is() ) + if( xSeries ) { bOk = xSeries->ConvertStockSeries( xDataSeries, rValueRole, GetGroupIdx(), GetFreeFormatIdx(), bCloseSymbol ); @@ -2794,13 +2804,13 @@ XclExpChAxis::XclExpChAxis( const XclExpChRoot& rRoot, sal_uInt16 nAxisType ) : void XclExpChAxis::SetFont( XclExpChFontRef xFont, const Color& rColor, sal_uInt32 nColorId ) { mxFont = xFont; - if( mxTick.is() ) + if( mxTick ) mxTick->SetFontColor( rColor, nColorId ); } void XclExpChAxis::SetRotation( sal_uInt16 nRotation ) { - if( mxTick.is() ) + if( mxTick ) mxTick->SetRotation( nRotation ); } @@ -2986,7 +2996,7 @@ sal_uInt16 XclExpChAxesSet::Convert( Reference< XDiagram > xDiagram, sal_uInt16 chart with existing type groups, insert all series into last contained chart type group instead of creating a new group. */ XclExpChTypeGroupRef xLastGroup = GetLastTypeGroup(); - if( xLastGroup.is() && !(xTypeGroup->IsCombinable2d() && xLastGroup->IsCombinable2d()) ) + if( xLastGroup && !(xTypeGroup->IsCombinable2d() && xLastGroup->IsCombinable2d()) ) { xLastGroup->ConvertSeries( xDiagram, *pIt, nApiAxesSetIdx, bPercent, bConnectBars ); } @@ -3041,12 +3051,12 @@ sal_uInt16 XclExpChAxesSet::Convert( Reference< XDiagram > xDiagram, sal_uInt16 if( xDiagram.is() && (GetAxesSetId() == EXC_CHAXESSET_PRIMARY) ) { XclExpChTypeGroupRef xTypeGroup = GetFirstTypeGroup(); - if( xTypeGroup.is() && xTypeGroup->Is3dWallChart() ) + if( xTypeGroup && xTypeGroup->Is3dWallChart() ) { // wall/floor formatting (3D charts) - if( mxXAxis.is() ) + if( mxXAxis ) mxXAxis->ConvertWall( xDiagram ); - if( mxYAxis.is() ) + if( mxYAxis ) mxYAxis->ConvertWall( xDiagram ); } else @@ -3086,7 +3096,7 @@ sal_uInt16 XclExpChAxesSet::Convert( Reference< XDiagram > xDiagram, sal_uInt16 bool XclExpChAxesSet::Is3dChart() const { XclExpChTypeGroupRef xTypeGroup = GetFirstTypeGroup(); - return xTypeGroup.is() && xTypeGroup->Is3dChart(); + return xTypeGroup && xTypeGroup->Is3dChart(); } void XclExpChAxesSet::WriteSubRecords( XclExpStream& rStrm ) @@ -3098,7 +3108,7 @@ void XclExpChAxesSet::WriteSubRecords( XclExpStream& rStrm ) lclSaveRecord( rStrm, mxXAxisTitle ); lclSaveRecord( rStrm, mxYAxisTitle ); lclSaveRecord( rStrm, mxZAxisTitle ); - if( mxPlotFrame.is() ) + if( mxPlotFrame ) { XclExpEmptyRecord( EXC_ID_CHPLOTFRAME ).Save( rStrm ); mxPlotFrame->Save( rStrm ); @@ -3154,7 +3164,7 @@ static void lcl_getChartSubTitle(const Reference<XChartDocument>& xChartDoc, return; OUString aTitle; - Any any = xProp->getPropertyValue( OUString::createFromAscii("String") ); + Any any = xProp->getPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("String")) ); if (any >>= aTitle) rSubTitle = aTitle; } @@ -3245,7 +3255,7 @@ void XclExpChChart::RemoveLastSeries() void XclExpChChart::SetDataLabel( XclExpChTextRef xText ) { - if( xText.is() ) + if( xText ) maLabels.AppendRecord( xText ); } @@ -3318,7 +3328,7 @@ XclExpChartDrawing::~XclExpChartDrawing() void XclExpChartDrawing::Save( XclExpStream& rStrm ) { - if( mxObjRecs.is() ) + if( mxObjRecs ) mxObjRecs->Save( rStrm ); } diff --git a/sc/source/filter/excel/xecontent.cxx b/sc/source/filter/excel/xecontent.cxx index 139f9c4e4af7..226668a7b834 100644 --- a/sc/source/filter/excel/xecontent.cxx +++ b/sc/source/filter/excel/xecontent.cxx @@ -263,8 +263,8 @@ void XclExpSstImpl::SaveXml( XclExpXmlStream& rStrm ) return; sax_fastparser::FSHelperPtr pSst = rStrm.CreateOutputStream( - OUString::createFromAscii( "xl/sharedStrings.xml" ), - OUString::createFromAscii( "sharedStrings.xml" ), + OUString(RTL_CONSTASCII_USTRINGPARAM( "xl/sharedStrings.xml") ), + OUString(RTL_CONSTASCII_USTRINGPARAM( "sharedStrings.xml" )), rStrm.GetCurrentStream()->getOutputStream(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" ); @@ -332,12 +332,15 @@ void XclExpMergedcells::AppendRange( const ScRange& rRange, sal_uInt32 nBaseXFId sal_uInt32 XclExpMergedcells::GetBaseXFId( const ScAddress& rPos ) const { - DBG_ASSERT( maBaseXFIds.size() == maMergedRanges.Count(), "XclExpMergedcells::GetBaseXFId - invalid lists" ); + DBG_ASSERT( maBaseXFIds.size() == maMergedRanges.size(), "XclExpMergedcells::GetBaseXFId - invalid lists" ); ScfUInt32Vec::const_iterator aIt = maBaseXFIds.begin(); ScRangeList& rNCRanges = const_cast< ScRangeList& >( maMergedRanges ); - for( const ScRange* pScRange = rNCRanges.First(); pScRange; pScRange = rNCRanges.Next(), ++aIt ) + for ( size_t i = 0, nRanges = rNCRanges.size(); i < nRanges; ++i, ++aIt ) + { + const ScRange* pScRange = rNCRanges[ i ]; if( pScRange->In( rPos ) ) return *aIt; + } return EXC_XFID_NOTFOUND; } @@ -363,16 +366,16 @@ void XclExpMergedcells::Save( XclExpStream& rStrm ) void XclExpMergedcells::SaveXml( XclExpXmlStream& rStrm ) { - ULONG nCount = maMergedRanges.Count(); + size_t nCount = maMergedRanges.size(); if( !nCount ) return; sax_fastparser::FSHelperPtr& rWorksheet = rStrm.GetCurrentStream(); rWorksheet->startElement( XML_mergeCells, XML_count, OString::valueOf( (sal_Int32) nCount ).getStr(), FSEND ); - for( ULONG i = 0; i < nCount; ++i ) + for( size_t i = 0; i < nCount; ++i ) { - if( const ScRange* pRange = maMergedRanges.GetObject( i ) ) + if( const ScRange* pRange = maMergedRanges[ i ] ) { rWorksheet->singleElement( XML_mergeCell, XML_ref, XclXmlUtils::ToOString( *pRange ).getStr(), @@ -410,12 +413,20 @@ XclExpHyperlink::XclExpHyperlink( const XclExpRoot& rRoot, const SvxURLField& rU } // file link or URL - if( eProtocol == INET_PROT_FILE ) + if( eProtocol == INET_PROT_FILE || eProtocol == INET_PROT_SMB ) { sal_uInt16 nLevel; bool bRel; String aFileName( BuildFileName( nLevel, bRel, rUrl, rRoot ) ); + if( eProtocol == INET_PROT_SMB ) + { + // #n382718# (and #n261623#) Convert smb notation to '\\' + aFileName = aUrlObj.GetMainURL( INetURLObject::NO_DECODE ); + aFileName = String( aFileName.GetBuffer() + 4 ); // skip the 'smb:' part + aFileName.SearchAndReplaceAll( '/', '\\' ); + } + if( !bRel ) mnFlags |= EXC_HLINK_ABS; mnFlags |= EXC_HLINK_BODY; @@ -568,9 +579,12 @@ XclExpLabelranges::XclExpLabelranges( const XclExpRoot& rRoot ) : // row label ranges FillRangeList( maRowRanges, rRoot.GetDoc().GetRowNameRangesRef(), nScTab ); // row labels only over 1 column (restriction of Excel97/2000/XP) - for( ScRange* pScRange = maRowRanges.First(); pScRange; pScRange = maRowRanges.Next() ) + for ( size_t i = 0, nRanges = maRowRanges.size(); i < nRanges; ++i ) + { + ScRange* pScRange = maRowRanges[ i ]; if( pScRange->aStart.Col() != pScRange->aEnd.Col() ) pScRange->aEnd.SetCol( pScRange->aStart.Col() ); + } // col label ranges FillRangeList( maColRanges, rRoot.GetDoc().GetColNameRangesRef(), nScTab ); } @@ -578,8 +592,9 @@ XclExpLabelranges::XclExpLabelranges( const XclExpRoot& rRoot ) : void XclExpLabelranges::FillRangeList( ScRangeList& rScRanges, ScRangePairListRef xLabelRangesRef, SCTAB nScTab ) { - for( const ScRangePair* pRangePair = xLabelRangesRef->First(); pRangePair; pRangePair = xLabelRangesRef->Next() ) + for ( size_t i = 0, nPairs = xLabelRangesRef->size(); i < nPairs; ++i ) { + ScRangePair* pRangePair = (*xLabelRangesRef)[i]; const ScRange& rScRange = pRangePair->GetRange( 0 ); if( rScRange.aStart.Tab() == nScTab ) rScRanges.Append( rScRange ); diff --git a/sc/source/filter/excel/xeescher.cxx b/sc/source/filter/excel/xeescher.cxx index 43abdbec64b8..a915aea33b79 100644 --- a/sc/source/filter/excel/xeescher.cxx +++ b/sc/source/filter/excel/xeescher.cxx @@ -89,6 +89,7 @@ #include <oox/export/drawingml.hxx> #include <oox/export/chartexport.hxx> #include <oox/export/utils.hxx> +#include <boost/shared_ptr.hpp> using ::rtl::OString; using ::rtl::OUString; @@ -117,6 +118,8 @@ using ::oox::drawingml::ChartExport; #define HMM2XL(x) ((x)/26.5)+0.5 +#ifdef XLSX_OOXML_FUTURE +// these function are only used within that context // Static Function Helpers static const char *ToHorizAlign( SdrTextHorzAdjust eAdjust ) { @@ -167,6 +170,7 @@ static void lcl_WriteAnchorVertex( sax_fastparser::FSHelperPtr rComments, Rectan rComments->writeEscaped( OUString::valueOf( aRect.Bottom() ) ); rComments->endElement( FSNS( XML_xdr, XML_rowOff ) ); } +#endif static void lcl_GetFromTo( const XclExpRoot& rRoot, const Rectangle &aRect, INT32 nTab, Rectangle &aFrom, Rectangle &aTo ) { @@ -873,17 +877,6 @@ XclExpTbxControlObj::XclExpTbxControlObj( XclExpObjectManager& rRoot, Reference< bool XclExpTbxControlObj::SetMacroLink( const ScriptEventDescriptor& rEvent ) { return XclMacroHelper::SetMacroLink( rEvent, meEventType ); -/* - String aMacroName = XclControlHelper::ExtractFromMacroDescriptor( rEvent, meEventType ); - if( aMacroName.Len() ) - { - sal_uInt16 nExtSheet = GetLocalLinkManager().FindExtSheet( EXC_EXTSH_OWNDOC ); - sal_uInt16 nNameIdx = GetNameManager().InsertMacroCall( aMacroName, true, false ); - mxMacroLink = GetFormulaCompiler().CreateNameXFormula( nExtSheet, nNameIdx ); - return true; - } - return false; -*/ } void XclExpTbxControlObj::WriteSubRecs( XclExpStream& rStrm ) @@ -1126,7 +1119,6 @@ void XclExpChartObj::SaveXml( XclExpXmlStream& rStrm ) nChartCount++; aChartExport.WriteChartObj( mxShape, nChartCount ); // TODO: get the correcto chart number - //WriteChartObj( pDrawing, rStrm ); } pDrawing->singleElement( FSNS( XML_xdr, XML_clientData), @@ -1162,9 +1154,7 @@ void XclExpChartObj::WriteChartObj( sax_fastparser::FSHelperPtr pDrawing, XclExp pDrawing->endElement( FSNS( XML_xdr, XML_nvGraphicFramePr ) ); // visual chart properties - //pDrawing->startElement( FSNS( XML_xdr, XML_xfrm ), FSEND ); WriteShapeTransformation( pDrawing, mxShape ); - //pDrawing->endElement( FSNS( XML_xdr, XML_xfrm ) ); // writer chart object pDrawing->startElement( FSNS( XML_a, XML_graphic ), FSEND ); @@ -1267,13 +1257,6 @@ XclExpNote::XclExpNote( const XclExpRoot& rRoot, const ScAddress& rScPos, // AutoFill style would change if Postit.cxx object creation values are changed OUString aCol(((XFillColorItem &)GETITEM(aItemSet, XFillColorItem , XATTR_FILLCOLOR)).GetValue()); mbAutoFill = !aCol.getLength() && (GETITEMVALUE(aItemSet, XFillStyleItem, XATTR_FILLSTYLE, ULONG) == XFILL_SOLID); -#if 0 - // TODO: Get AutoLine bool - aCol = OUString(((XLineStartItem &)GETITEM(aItemSet, XLineStartItem, XATTR_LINESTART)).GetValue()); - mbAutoLine = !aCol.getLength() && - (GETITEMVALUE(aItemSet, XLineStartWidthItem, XATTR_LINESTARTWIDTH, ULONG) == 200) && - (GETITEMBOOL(aItemSet, XATTR_LINESTARTCENTER) == FALSE); -#endif mbAutoLine = true; mbRowHidden = (rRoot.GetDoc().RowHidden(maScPos.Row(),maScPos.Tab())); mbColHidden = (rRoot.GetDoc().ColHidden(maScPos.Col(),maScPos.Tab())); @@ -1361,14 +1344,8 @@ void XclExpNote::WriteXml( sal_Int32 nAuthorId, XclExpXmlStream& rStrm ) FSEND ); rComments->startElement( XML_text, FSEND ); // OOXTODO: phoneticPr, rPh, r -#if 0 - rComments->startElement( XML_t, FSEND ); - rComments->writeEscaped( XclXmlUtils::ToOUString( maOrigNoteText ) ); - rComments->endElement ( XML_t ); -#else - if( mpNoteContents.is() ) + if( mpNoteContents ) mpNoteContents->WriteXml( rStrm ); -#endif rComments->endElement( XML_text ); /* @@ -1381,9 +1358,7 @@ void XclExpNote::WriteXml( sal_Int32 nAuthorId, XclExpXmlStream& rStrm ) rComments->startElement( XML_commentPr, XML_autoFill, XclXmlUtils::ToPsz( mbAutoFill ), XML_autoScale, XclXmlUtils::ToPsz( mbAutoScale ), - // XML_autoLine, XclXmlUtils::ToPsz( mbAutoLine ), XML_colHidden, XclXmlUtils::ToPsz( mbColHidden ), - // XML_defaultSize, "true", XML_locked, XclXmlUtils::ToPsz( mbLocked ), XML_rowHidden, XclXmlUtils::ToPsz( mbRowHidden ), XML_textHAlign, ToHorizAlign( meTHA ), @@ -1419,7 +1394,7 @@ XclMacroHelper::~XclMacroHelper() void XclMacroHelper::WriteMacroSubRec( XclExpStream& rStrm ) { - if( mxMacroLink.is() ) + if( mxMacroLink ) WriteFormulaSubRec( rStrm, EXC_ID_OBJMACRO, *mxMacroLink ); } @@ -1565,9 +1540,9 @@ XclExpDffAnchorBase* XclExpObjectManager::CreateDffAnchor() const return new XclExpDffSheetAnchor( GetRoot() ); } -ScfRef< XclExpRecordBase > XclExpObjectManager::CreateDrawingGroup() +boost::shared_ptr< XclExpRecordBase > XclExpObjectManager::CreateDrawingGroup() { - return ScfRef< XclExpRecordBase >( new XclExpMsoDrawingGroup( *mxEscherEx ) ); + return boost::shared_ptr< XclExpRecordBase >( new XclExpMsoDrawingGroup( *mxEscherEx ) ); } void XclExpObjectManager::StartSheet() @@ -1575,7 +1550,7 @@ void XclExpObjectManager::StartSheet() mxObjList.reset( new XclExpObjList( GetRoot(), *mxEscherEx ) ); } -ScfRef< XclExpRecordBase > XclExpObjectManager::ProcessDrawing( SdrPage* pSdrPage ) +boost::shared_ptr< XclExpRecordBase > XclExpObjectManager::ProcessDrawing( SdrPage* pSdrPage ) { if( pSdrPage ) mxEscherEx->AddSdrPage( *pSdrPage ); @@ -1587,7 +1562,7 @@ ScfRef< XclExpRecordBase > XclExpObjectManager::ProcessDrawing( SdrPage* pSdrPag return mxObjList; } -ScfRef< XclExpRecordBase > XclExpObjectManager::ProcessDrawing( const Reference< XShapes >& rxShapes ) +boost::shared_ptr< XclExpRecordBase > XclExpObjectManager::ProcessDrawing( const Reference< XShapes >& rxShapes ) { if( rxShapes.is() ) mxEscherEx->AddUnoShapes( rxShapes ); diff --git a/sc/source/filter/excel/xeformula.cxx b/sc/source/filter/excel/xeformula.cxx index 9e2b69f33bb0..4c51e0c44d5f 100644 --- a/sc/source/filter/excel/xeformula.cxx +++ b/sc/source/filter/excel/xeformula.cxx @@ -117,7 +117,7 @@ void XclExpOperandList::AppendOperand( sal_uInt16 nTokPos, XclFuncParamConv eCon rConvInfo.mbValType = bValType; } -typedef ScfRef< XclExpOperandList > XclExpOperandListRef; +typedef boost::shared_ptr< XclExpOperandList > XclExpOperandListRef; typedef ::std::vector< XclExpOperandListRef > XclExpOperandListVector; // ---------------------------------------------------------------------------- @@ -279,7 +279,7 @@ static const XclExpCompConfig spConfigTable[] = /** Working data of the formula compiler. Used to push onto a stack for recursive calls. */ struct XclExpCompData { - typedef ScfRef< ScTokenArray > ScTokenArrayRef; + typedef boost::shared_ptr< ScTokenArray > ScTokenArrayRef; const XclExpCompConfig& mrCfg; /// Configuration for current formula type. ScTokenArrayRef mxOwnScTokArr; /// Own clone of a Calc token array. @@ -479,7 +479,7 @@ private: // ------------------------------------------------------------------------ private: typedef ::std::map< XclFormulaType, XclExpCompConfig > XclExpCompConfigMap; - typedef ScfRef< XclExpCompData > XclExpCompDataRef; + typedef boost::shared_ptr< XclExpCompData > XclExpCompDataRef; typedef ::std::vector< XclExpCompDataRef > XclExpCompDataVector; XclExpCompConfigMap maCfgMap; /// Compiler configuration map for all formula types. @@ -635,7 +635,7 @@ void XclExpFmlaCompImpl::Init( XclFormulaType eType, const ScTokenArray& rScTokA mxData->mpLinkMgr = mxData->mrCfg.mbLocalLinkMgr ? &GetLocalLinkManager() : &GetGlobalLinkManager(); // token array iterator (use cloned token array if present) - mxData->maTokArrIt.Init( mxData->mxOwnScTokArr.is() ? *mxData->mxOwnScTokArr : rScTokArr, false ); + mxData->maTokArrIt.Init( mxData->mxOwnScTokArr ? *mxData->mxOwnScTokArr : rScTokArr, false ); mxData->mpRefLog = pRefLog; } } @@ -1317,18 +1317,16 @@ void XclExpFmlaCompImpl::ProcessMatrix( const XclExpScToken& rTokData ) { for( SCSIZE nScCol = 0; nScCol < nScCols; ++nScCol ) { - ScMatValType nType; - const ScMatrixValue* pMatVal = pMatrix->Get( nScCol, nScRow, nType ); - DBG_ASSERT( pMatVal, "XclExpFmlaCompImpl::ProcessMatrix - missing matrix value" ); - if( ScMatrix::IsValueType( nType ) ) // value, boolean, or error + ScMatrixValue nMatVal = pMatrix->Get( nScCol, nScRow ); + if( ScMatrix::IsValueType( nMatVal.nType ) ) // value, boolean, or error { - if( ScMatrix::IsBooleanType( nType ) ) + if( ScMatrix::IsBooleanType( nMatVal.nType ) ) { AppendExt( EXC_CACHEDVAL_BOOL ); - AppendExt( static_cast< sal_uInt8 >( pMatVal->GetBoolean() ? 1 : 0 ) ); + AppendExt( static_cast< sal_uInt8 >( nMatVal.GetBoolean() ? 1 : 0 ) ); AppendExt( 0, 7 ); } - else if( USHORT nErr = pMatVal->GetError() ) + else if( USHORT nErr = nMatVal.GetError() ) { AppendExt( EXC_CACHEDVAL_ERROR ); AppendExt( XclTools::GetXclErrorCode( nErr ) ); @@ -1337,12 +1335,12 @@ void XclExpFmlaCompImpl::ProcessMatrix( const XclExpScToken& rTokData ) else { AppendExt( EXC_CACHEDVAL_DOUBLE ); - AppendExt( pMatVal->fVal ); + AppendExt( nMatVal.fVal ); } } else // string or empty { - const String& rStr = pMatVal->GetString(); + const String& rStr = nMatVal.GetString(); if( rStr.Len() == 0 ) { AppendExt( EXC_CACHEDVAL_EMPTY ); @@ -2603,18 +2601,18 @@ XclTokenArrayRef XclExpFormulaCompiler::CreateFormula( XclFormulaType eType, con XclTokenArrayRef XclExpFormulaCompiler::CreateFormula( XclFormulaType eType, const ScRangeList& rScRanges ) { - ULONG nCount = rScRanges.Count(); + size_t nCount = rScRanges.size(); if( nCount == 0 ) return XclTokenArrayRef(); ScTokenArray aScTokArr; SCTAB nCurrScTab = GetCurrScTab(); bool b3DRefOnly = mxImpl->Is3DRefOnly( eType ); - for( ULONG nIdx = 0; nIdx < nCount; ++nIdx ) + for( size_t nIdx = 0; nIdx < nCount; ++nIdx ) { if( nIdx > 0 ) aScTokArr.AddOpCode( ocUnion ); - lclPutRangeToTokenArray( aScTokArr, *rScRanges.GetObject( nIdx ), nCurrScTab, b3DRefOnly ); + lclPutRangeToTokenArray( aScTokArr, *rScRanges[ nIdx ], nCurrScTab, b3DRefOnly ); } return mxImpl->CreateFormula( eType, aScTokArr ); } diff --git a/sc/source/filter/excel/xehelper.cxx b/sc/source/filter/excel/xehelper.cxx index f715b781fa4a..93eb4e54cb63 100644 --- a/sc/source/filter/excel/xehelper.cxx +++ b/sc/source/filter/excel/xehelper.cxx @@ -260,13 +260,11 @@ bool XclExpAddressConverter::ConvertRange( XclRange& rXclRange, void XclExpAddressConverter::ValidateRangeList( ScRangeList& rScRanges, bool bWarn ) { - ULONG nIdx = rScRanges.Count(); - while( nIdx ) + for ( size_t nRange = rScRanges.size(); nRange > 0; ) { - --nIdx; // backwards to keep nIdx valid - ScRange* pScRange = rScRanges.GetObject( nIdx ); - if( pScRange && !CheckRange( *pScRange, bWarn ) ) - delete rScRanges.Remove( nIdx ); + ScRange* pScRange = rScRanges[ --nRange ]; + if( !CheckRange( *pScRange, bWarn ) ) + delete rScRanges.Remove(nRange); } } @@ -274,9 +272,9 @@ void XclExpAddressConverter::ConvertRangeList( XclRangeList& rXclRanges, const ScRangeList& rScRanges, bool bWarn ) { rXclRanges.clear(); - for( ULONG nPos = 0, nCount = rScRanges.Count(); nPos < nCount; ++nPos ) + for( size_t nPos = 0, nCount = rScRanges.size(); nPos < nCount; ++nPos ) { - if( const ScRange* pScRange = rScRanges.GetObject( nPos ) ) + if( const ScRange* pScRange = rScRanges[ nPos ] ) { XclRange aXclRange( ScAddress::UNINITIALIZED ); if( ConvertRange( aXclRange, *pScRange, bWarn ) ) @@ -318,7 +316,7 @@ String XclExpHyperlinkHelper::ProcessUrlField( const SvxURLField& rUrlField ) if( GetBiff() == EXC_BIFF8 ) // no HLINK records in BIFF2-BIFF7 { // there was/is already a HLINK record - mbMultipleUrls = mxLinkRec.is(); + mbMultipleUrls = mxLinkRec; mxLinkRec.reset( new XclExpHyperlink( GetRoot(), rUrlField, maScPos ) ); @@ -335,7 +333,7 @@ String XclExpHyperlinkHelper::ProcessUrlField( const SvxURLField& rUrlField ) bool XclExpHyperlinkHelper::HasLinkRecord() const { - return !mbMultipleUrls && mxLinkRec.is(); + return !mbMultipleUrls && mxLinkRec; } XclExpHyperlinkHelper::XclExpHyperlinkRef XclExpHyperlinkHelper::GetLinkRecord() @@ -1087,29 +1085,28 @@ void XclExpCachedMatrix::Save( XclExpStream& rStrm ) const { for( SCSIZE nCol = 0; nCol < nCols; ++nCol ) { - ScMatValType nMatValType = SC_MATVAL_VALUE; - const ScMatrixValue* pMatVal = mrMatrix.Get( nCol, nRow, nMatValType ); + ScMatrixValue nMatVal = mrMatrix.Get( nCol, nRow ); - if( !pMatVal || SC_MATVAL_EMPTY == nMatValType ) + if( SC_MATVAL_EMPTY == nMatVal.nType ) { rStrm.SetSliceSize( 9 ); rStrm << EXC_CACHEDVAL_EMPTY; rStrm.WriteZeroBytes( 8 ); } - else if( ScMatrix::IsNonValueType( nMatValType ) ) + else if( ScMatrix::IsNonValueType( nMatVal.nType ) ) { - XclExpString aStr( pMatVal->GetString(), EXC_STR_DEFAULT ); + XclExpString aStr( nMatVal.GetString(), EXC_STR_DEFAULT ); rStrm.SetSliceSize( 6 ); rStrm << EXC_CACHEDVAL_STRING << aStr; } - else if( SC_MATVAL_BOOLEAN == nMatValType ) + else if( SC_MATVAL_BOOLEAN == nMatVal.nType ) { - sal_Int8 nBool = pMatVal->GetBoolean(); + sal_Int8 nBool = nMatVal.GetBoolean(); rStrm.SetSliceSize( 9 ); rStrm << EXC_CACHEDVAL_BOOL << nBool; rStrm.WriteZeroBytes( 7 ); } - else if( USHORT nScError = pMatVal->GetError() ) + else if( USHORT nScError = nMatVal.GetError() ) { sal_Int8 nError ( XclTools::GetXclErrorCode( nScError ) ); rStrm.SetSliceSize( 9 ); @@ -1119,7 +1116,7 @@ void XclExpCachedMatrix::Save( XclExpStream& rStrm ) const else { rStrm.SetSliceSize( 9 ); - rStrm << EXC_CACHEDVAL_DOUBLE << pMatVal->fVal; + rStrm << EXC_CACHEDVAL_DOUBLE << nMatVal.fVal; } } } diff --git a/sc/source/filter/excel/xelink.cxx b/sc/source/filter/excel/xelink.cxx index 49520c08e0de..e419955936e4 100644 --- a/sc/source/filter/excel/xelink.cxx +++ b/sc/source/filter/excel/xelink.cxx @@ -106,7 +106,7 @@ private: virtual void WriteAddData( XclExpStream& rStrm ); private: - typedef ScfRef< XclExpCachedMatrix > XclExpCachedMatRef; + typedef boost::shared_ptr< XclExpCachedMatrix > XclExpCachedMatRef; XclExpCachedMatRef mxMatrix; /// Cached results of the DDE link. }; @@ -247,7 +247,7 @@ protected: void WriteExtNameBuffer( XclExpStream& rStrm ); private: - typedef ScfRef< XclExpExtNameBuffer > XclExpExtNameBfrRef; + typedef boost::shared_ptr< XclExpExtNameBuffer > XclExpExtNameBfrRef; XclExpExtNameBfrRef mxExtNameBfr; /// List of EXTERNNAME records. }; @@ -936,7 +936,7 @@ XclExpExtNameDde::XclExpExtNameDde( const XclExpRoot& rRoot, void XclExpExtNameDde::WriteAddData( XclExpStream& rStrm ) { - if( mxMatrix.is() ) + if( mxMatrix ) mxMatrix->Save( rStrm ); } @@ -1232,7 +1232,7 @@ public: bool XclExpCrnList::InsertValue( SCCOL nScCol, SCROW nScRow, const Any& rValue ) { RecordRefType xLastRec = GetLastRecord(); - if( xLastRec.is() && xLastRec->InsertValue( nScCol, nScRow, rValue ) ) + if( xLastRec && xLastRec->InsertValue( nScCol, nScRow, rValue ) ) return true; if( GetSize() == SAL_MAX_UINT16 ) return false; @@ -1326,7 +1326,7 @@ XclExpExtNameBuffer& XclExpExternSheetBase::GetExtNameBuffer() void XclExpExternSheetBase::WriteExtNameBuffer( XclExpStream& rStrm ) { - if( mxExtNameBfr.is() ) + if( mxExtNameBfr ) mxExtNameBfr->Save( rStrm ); } @@ -1530,7 +1530,7 @@ void XclExpSupbook::Save( XclExpStream& rStrm ) const XclExpString* XclExpSupbook::GetTabName( sal_uInt16 nSBTab ) const { XclExpXctRef xXct = maXctList.GetRecord( nSBTab ); - return xXct.is() ? &xXct->GetTabName() : 0; + return xXct ? &xXct->GetTabName() : 0; } void XclExpSupbook::WriteBody( XclExpStream& rStrm ) @@ -1611,7 +1611,7 @@ XclExpXti XclExpSupbookBuffer::GetXti( sal_uInt16 nFirstXclTab, sal_uInt16 nLast pRefLogEntry->mnFirstXclTab = nFirstXclTab; pRefLogEntry->mnLastXclTab = nLastXclTab; XclExpSupbookRef xSupbook = maSupbookList.GetRecord( aXti.mnSupbook ); - if( xSupbook.is() ) + if( xSupbook ) xSupbook->FillRefLogEntry( *pRefLogEntry, aXti.mnFirstSBTab, aXti.mnLastSBTab ); } } @@ -1633,8 +1633,8 @@ void XclExpSupbookBuffer::StoreCellRange( const ScRange& rRange ) { const XclExpSBIndex& rSBIndex = maSBIndexVec[ nXclTab ]; XclExpSupbookRef xSupbook = maSupbookList.GetRecord( rSBIndex.mnSupbook ); - DBG_ASSERT( xSupbook.is(), "XclExpSupbookBuffer::StoreCellRange - missing SUPBOOK record" ); - if( xSupbook.is() ) + DBG_ASSERT( xSupbook , "XclExpSupbookBuffer::StoreCellRange - missing SUPBOOK record" ); + if( xSupbook ) xSupbook->StoreCellRange( rRange, rSBIndex.mnSBTab ); } } @@ -1775,7 +1775,7 @@ bool XclExpSupbookBuffer::InsertAddIn( } else xSupbook = maSupbookList.GetRecord( mnAddInSB ); - DBG_ASSERT( xSupbook.is(), "XclExpSupbookBuffer::InsertAddin - missing add-in supbook" ); + DBG_ASSERT( xSupbook, "XclExpSupbookBuffer::InsertAddin - missing add-in supbook" ); rnSupbook = mnAddInSB; rnExtName = xSupbook->InsertAddIn( rName ); return rnExtName > 0; @@ -1874,7 +1874,7 @@ XclExpXti XclExpSupbookBuffer::GetXti( sal_uInt16 nFileId, const String& rTabNam { pRefLogEntry->mnFirstXclTab = 0; pRefLogEntry->mnLastXclTab = 0; - if (xSupbook.is()) + if (xSupbook) xSupbook->FillRefLogEntry(*pRefLogEntry, aXti.mnFirstSBTab, aXti.mnLastSBTab); } @@ -1989,7 +1989,7 @@ bool XclExpLinkManagerImpl5::InsertAddIn( sal_uInt16& rnExtSheet, sal_uInt16& rnExtName, const String& rName ) { XclExpExtSheetRef xExtSheet = FindInternal( rnExtSheet, EXC_EXTSH_ADDIN ); - if( xExtSheet.is() ) + if( xExtSheet ) { rnExtName = xExtSheet->InsertAddIn( rName ); return rnExtName > 0; diff --git a/sc/source/filter/excel/xename.cxx b/sc/source/filter/excel/xename.cxx index 0a244a2109a6..abfc3ccc7d6e 100644 --- a/sc/source/filter/excel/xename.cxx +++ b/sc/source/filter/excel/xename.cxx @@ -293,7 +293,7 @@ void XclExpName::SetSymbol( String sSymbol ) bool XclExpName::IsVolatile() const { - return mxTokArr.is() && mxTokArr->IsVolatile(); + return mxTokArr && mxTokArr->IsVolatile(); } bool XclExpName::IsHidden() const @@ -310,9 +310,9 @@ bool XclExpName::IsMacroCall( bool bVBasic, bool bFunc ) const void XclExpName::Save( XclExpStream& rStrm ) { - DBG_ASSERT( mxName.is() && (mxName->Len() > 0), "XclExpName::Save - missing name" ); + DBG_ASSERT( mxName && (mxName->Len() > 0), "XclExpName::Save - missing name" ); DBG_ASSERT( !(IsGlobal() && ::get_flag( mnFlags, EXC_NAME_BUILTIN )), "XclExpName::Save - global built-in name" ); - SetRecSize( 11 + mxName->GetSize() + (mxTokArr.is() ? mxTokArr->GetSize() : 2) ); + SetRecSize( 11 + mxName->GetSize() + (mxTokArr ? mxTokArr->GetSize() : 2) ); XclExpRecord::Save( rStrm ); } @@ -346,7 +346,7 @@ void XclExpName::SaveXml( XclExpXmlStream& rStrm ) void XclExpName::WriteBody( XclExpStream& rStrm ) { - sal_uInt16 nFmlaSize = mxTokArr.is() ? mxTokArr->GetSize() : 0; + sal_uInt16 nFmlaSize = mxTokArr ? mxTokArr->GetSize() : 0; rStrm << mnFlags // flags << sal_uInt8( 0 ); // keyboard shortcut @@ -357,7 +357,7 @@ void XclExpName::WriteBody( XclExpStream& rStrm ) << sal_uInt32( 0 ); // length of menu/descr/help/status text mxName->WriteFlagField( rStrm ); // BIFF8 flag field (no-op in <=BIFF7) mxName->WriteBuffer( rStrm ); // character array of the name - if( mxTokArr.is() ) + if( mxTokArr ) mxTokArr->WriteArray( rStrm ); // token array without size } @@ -505,7 +505,7 @@ sal_uInt16 XclExpNameManagerImpl::FindBuiltInNameIdx( if( xName->GetBuiltInName() == cBuiltIn ) { XclTokenArrayRef xTokArr = xName->GetTokenArray(); - if( xTokArr.is() && (*xTokArr == rTokArr) ) + if( xTokArr && (*xTokArr == rTokArr) ) return static_cast< sal_uInt16 >( nPos + 1 ); } } @@ -639,7 +639,7 @@ void XclExpNameManagerImpl::CreateBuiltInNames() } // create the NAME record (do not warn if ranges are shrunken) GetAddressConverter().ValidateRangeList( aRangeList, false ); - if( aRangeList.Count() > 0 ) + if( !aRangeList.empty() ) GetNameManager().InsertBuiltInName( EXC_BUILTIN_PRINTAREA, aRangeList ); } @@ -658,7 +658,7 @@ void XclExpNameManagerImpl::CreateBuiltInNames() GetXclMaxPos().Col(), pRowRange->aEnd.Row(), nScTab ) ); // create the NAME record GetAddressConverter().ValidateRangeList( aTitleList, false ); - if( aTitleList.Count() > 0 ) + if( !aTitleList.empty() ) GetNameManager().InsertBuiltInName( EXC_BUILTIN_PRINTTITLES, aTitleList ); // *** 3) filter ranges *** --------------------------------------- @@ -731,10 +731,10 @@ sal_uInt16 XclExpNameManager::InsertBuiltInName( sal_Unicode cBuiltIn, const ScR sal_uInt16 XclExpNameManager::InsertBuiltInName( sal_Unicode cBuiltIn, const ScRangeList& rRangeList ) { sal_uInt16 nNameIdx = 0; - if( rRangeList.Count() ) + if( !rRangeList.empty() ) { XclTokenArrayRef xTokArr = GetFormulaCompiler().CreateFormula( EXC_FMLATYPE_NAME, rRangeList ); - nNameIdx = mxImpl->InsertBuiltInName( cBuiltIn, xTokArr, rRangeList.GetObject( 0 )->aStart.Tab() ); + nNameIdx = mxImpl->InsertBuiltInName( cBuiltIn, xTokArr, rRangeList.front()->aStart.Tab() ); } return nNameIdx; } diff --git a/sc/source/filter/excel/xepivot.cxx b/sc/source/filter/excel/xepivot.cxx index 6a37382d70fe..59cb019b9a16 100644 --- a/sc/source/filter/excel/xepivot.cxx +++ b/sc/source/filter/excel/xepivot.cxx @@ -77,7 +77,7 @@ using ::rtl::OUStringBuffer; namespace { -// constants to track occurence of specific data types +// constants to track occurrence of specific data types const sal_uInt16 EXC_PCITEM_DATA_STRING = 0x0001; /// String, empty, boolean, error. const sal_uInt16 EXC_PCITEM_DATA_DOUBLE = 0x0002; /// Double with fraction. const sal_uInt16 EXC_PCITEM_DATA_INTEGER = 0x0004; /// Integer, double without fraction. @@ -539,21 +539,18 @@ void XclExpPCField::InsertNumDateGroupItems( const ScDPObject& rDPObj, const ScD { // get the string collection with original source elements ScSheetDPData aDPData( GetDocPtr(), *pSrcDesc ); - // Wang Xu Ming - DataPilot migration - // 2009-05-08 const std::vector< SCROW > aOrignial = aDPData.GetColumnEntries( static_cast< long >( GetBaseFieldIndex() ) ); // get the string collection with generated grouping elements ScDPNumGroupDimension aTmpDim( rNumInfo ); if( nDatePart != 0 ) aTmpDim.MakeDateHelper( rNumInfo, nDatePart ); - const std::vector< SCROW > aMemberIds = aTmpDim.GetNumEntries( static_cast< SCCOL >( GetBaseFieldIndex() ), aDPData.GetCacheTable().GetCache(), aOrignial ); + const std::vector< SCROW > aMemberIds = aTmpDim.GetNumEntries( static_cast< SCCOL >( GetBaseFieldIndex() ), aDPData.GetCacheTable().getCache(), aOrignial ); for ( size_t nIdx = 0 ; nIdx < aMemberIds.size(); nIdx++ ) { const ScDPItemData* pData = aDPData.GetMemberById( static_cast< long >( GetBaseFieldIndex() ) , aMemberIds[ nIdx] ); if ( pData ) InsertGroupItem( new XclExpPCItem( pData->GetString() ) ); } -// End Comments } } @@ -1131,7 +1128,7 @@ void XclExpPTField::SetPropertiesFromDim( const ScDPSaveDimension& rSaveDim ) // item properties const ScDPSaveDimension::MemberList &rMembers = rSaveDim.GetMembers(); - for (ScDPSaveDimension::MemberList::const_iterator i=rMembers.begin(); i != rMembers.end() ; i++) + for (ScDPSaveDimension::MemberList::const_iterator i=rMembers.begin(); i != rMembers.end() ; ++i) if( XclExpPTItem* pItem = GetItemAcc( (*i)->GetName() ) ) pItem->SetPropertiesFromMember( **i ); } @@ -1685,7 +1682,7 @@ void XclExpPivotTable::WriteSxpi( XclExpStream& rStrm ) const for( ScfUInt16Vec::const_iterator aIt = maPageFields.begin(), aEnd = maPageFields.end(); aIt != aEnd; ++aIt ) { XclExpPTFieldRef xField = maFieldList.GetRecord( *aIt ); - if( xField.is() ) + if( xField ) xField->WriteSxpiEntry( rStrm ); } rStrm.EndRecord(); @@ -1697,7 +1694,7 @@ void XclExpPivotTable::WriteSxdiList( XclExpStream& rStrm ) const for( XclPTDataFieldPosVec::const_iterator aIt = maDataFields.begin(), aEnd = maDataFields.end(); aIt != aEnd; ++aIt ) { XclExpPTFieldRef xField = maFieldList.GetRecord( aIt->first ); - if( xField.is() ) + if( xField ) xField->WriteSxdi( rStrm, aIt->second ); } } @@ -1852,7 +1849,7 @@ XclExpPivotTableManager::XclExpPivotTableManager( const XclExpRoot& rRoot ) : void XclExpPivotTableManager::CreatePivotTables() { if( ScDPCollection* pDPColl = GetDoc().GetDPCollection() ) - for( USHORT nDPObj = 0, nCount = pDPColl->GetCount(); nDPObj < nCount; ++nDPObj ) + for( size_t nDPObj = 0, nCount = pDPColl->GetCount(); nDPObj < nCount; ++nDPObj ) if( ScDPObject* pDPObj = (*pDPColl)[ nDPObj ] ) if( const XclExpPivotCache* pPCache = CreatePivotCache( *pDPObj ) ) maPTableList.AppendNewRecord( new XclExpPivotTable( GetRoot(), *pDPObj, *pPCache ) ); diff --git a/sc/source/filter/excel/xeroot.cxx b/sc/source/filter/excel/xeroot.cxx index 27c844360f49..4b6169ceb20a 100644 --- a/sc/source/filter/excel/xeroot.cxx +++ b/sc/source/filter/excel/xeroot.cxx @@ -76,91 +76,91 @@ XclExpRoot::XclExpRoot( XclExpRootData& rExpRootData ) : XclExpTabInfo& XclExpRoot::GetTabInfo() const { - DBG_ASSERT( mrExpData.mxTabInfo.is(), "XclExpRoot::GetTabInfo - missing object (wrong BIFF?)" ); + DBG_ASSERT( mrExpData.mxTabInfo, "XclExpRoot::GetTabInfo - missing object (wrong BIFF?)" ); return *mrExpData.mxTabInfo; } XclExpAddressConverter& XclExpRoot::GetAddressConverter() const { - DBG_ASSERT( mrExpData.mxAddrConv.is(), "XclExpRoot::GetAddressConverter - missing object (wrong BIFF?)" ); + DBG_ASSERT( mrExpData.mxAddrConv, "XclExpRoot::GetAddressConverter - missing object (wrong BIFF?)" ); return *mrExpData.mxAddrConv; } XclExpFormulaCompiler& XclExpRoot::GetFormulaCompiler() const { - DBG_ASSERT( mrExpData.mxFmlaComp.is(), "XclExpRoot::GetFormulaCompiler - missing object (wrong BIFF?)" ); + DBG_ASSERT( mrExpData.mxFmlaComp, "XclExpRoot::GetFormulaCompiler - missing object (wrong BIFF?)" ); return *mrExpData.mxFmlaComp; } XclExpProgressBar& XclExpRoot::GetProgressBar() const { - DBG_ASSERT( mrExpData.mxProgress.is(), "XclExpRoot::GetProgressBar - missing object (wrong BIFF?)" ); + DBG_ASSERT( mrExpData.mxProgress, "XclExpRoot::GetProgressBar - missing object (wrong BIFF?)" ); return *mrExpData.mxProgress; } XclExpSst& XclExpRoot::GetSst() const { - DBG_ASSERT( mrExpData.mxSst.is(), "XclExpRoot::GetSst - missing object (wrong BIFF?)" ); + DBG_ASSERT( mrExpData.mxSst, "XclExpRoot::GetSst - missing object (wrong BIFF?)" ); return *mrExpData.mxSst; } XclExpPalette& XclExpRoot::GetPalette() const { - DBG_ASSERT( mrExpData.mxPalette.is(), "XclExpRoot::GetPalette - missing object (wrong BIFF?)" ); + DBG_ASSERT( mrExpData.mxPalette, "XclExpRoot::GetPalette - missing object (wrong BIFF?)" ); return *mrExpData.mxPalette; } XclExpFontBuffer& XclExpRoot::GetFontBuffer() const { - DBG_ASSERT( mrExpData.mxFontBfr.is(), "XclExpRoot::GetFontBuffer - missing object (wrong BIFF?)" ); + DBG_ASSERT( mrExpData.mxFontBfr, "XclExpRoot::GetFontBuffer - missing object (wrong BIFF?)" ); return *mrExpData.mxFontBfr; } XclExpNumFmtBuffer& XclExpRoot::GetNumFmtBuffer() const { - DBG_ASSERT( mrExpData.mxNumFmtBfr.is(), "XclExpRoot::GetNumFmtBuffer - missing object (wrong BIFF?)" ); + DBG_ASSERT( mrExpData.mxNumFmtBfr, "XclExpRoot::GetNumFmtBuffer - missing object (wrong BIFF?)" ); return *mrExpData.mxNumFmtBfr; } XclExpXFBuffer& XclExpRoot::GetXFBuffer() const { - DBG_ASSERT( mrExpData.mxXFBfr.is(), "XclExpRoot::GetXFBuffer - missing object (wrong BIFF?)" ); + DBG_ASSERT( mrExpData.mxXFBfr, "XclExpRoot::GetXFBuffer - missing object (wrong BIFF?)" ); return *mrExpData.mxXFBfr; } XclExpLinkManager& XclExpRoot::GetGlobalLinkManager() const { - DBG_ASSERT( mrExpData.mxGlobLinkMgr.is(), "XclExpRoot::GetGlobalLinkManager - missing object (wrong BIFF?)" ); + DBG_ASSERT( mrExpData.mxGlobLinkMgr, "XclExpRoot::GetGlobalLinkManager - missing object (wrong BIFF?)" ); return *mrExpData.mxGlobLinkMgr; } XclExpLinkManager& XclExpRoot::GetLocalLinkManager() const { - DBG_ASSERT( GetLocalLinkMgrRef().is(), "XclExpRoot::GetLocalLinkManager - missing object (wrong BIFF?)" ); + DBG_ASSERT( GetLocalLinkMgrRef(), "XclExpRoot::GetLocalLinkManager - missing object (wrong BIFF?)" ); return *GetLocalLinkMgrRef(); } XclExpNameManager& XclExpRoot::GetNameManager() const { - DBG_ASSERT( mrExpData.mxNameMgr.is(), "XclExpRoot::GetNameManager - missing object (wrong BIFF?)" ); + DBG_ASSERT( mrExpData.mxNameMgr, "XclExpRoot::GetNameManager - missing object (wrong BIFF?)" ); return *mrExpData.mxNameMgr; } XclExpObjectManager& XclExpRoot::GetObjectManager() const { - DBG_ASSERT( mrExpData.mxObjMgr.is(), "XclExpRoot::GetObjectManager - missing object (wrong BIFF?)" ); + DBG_ASSERT( mrExpData.mxObjMgr, "XclExpRoot::GetObjectManager - missing object (wrong BIFF?)" ); return *mrExpData.mxObjMgr; } XclExpFilterManager& XclExpRoot::GetFilterManager() const { - DBG_ASSERT( mrExpData.mxFilterMgr.is(), "XclExpRoot::GetFilterManager - missing object (wrong BIFF?)" ); + DBG_ASSERT( mrExpData.mxFilterMgr, "XclExpRoot::GetFilterManager - missing object (wrong BIFF?)" ); return *mrExpData.mxFilterMgr; } XclExpPivotTableManager& XclExpRoot::GetPivotTableManager() const { - DBG_ASSERT( mrExpData.mxPTableMgr.is(), "XclExpRoot::GetPivotTableManager - missing object (wrong BIFF?)" ); + DBG_ASSERT( mrExpData.mxPTableMgr, "XclExpRoot::GetPivotTableManager - missing object (wrong BIFF?)" ); return *mrExpData.mxPTableMgr; } @@ -231,7 +231,7 @@ XclExpRecordRef XclExpRoot::CreateRecord( sal_uInt16 nRecId ) const case EXC_ID_EXTERNSHEET: xRec = GetLocalLinkMgrRef(); break; case EXC_ID_NAME: xRec = mrExpData.mxNameMgr; break; } - DBG_ASSERT( xRec.is(), "XclExpRoot::CreateRecord - unknown record ID or missing object" ); + DBG_ASSERT( xRec, "XclExpRoot::CreateRecord - unknown record ID or missing object" ); return xRec; } diff --git a/sc/source/filter/excel/xestream.cxx b/sc/source/filter/excel/xestream.cxx index 660ddd48c014..227e9da14401 100644 --- a/sc/source/filter/excel/xestream.cxx +++ b/sc/source/filter/excel/xestream.cxx @@ -369,7 +369,7 @@ void XclExpStream::SetEncrypter( XclExpEncrypterRef xEncrypter ) bool XclExpStream::HasValidEncrypter() const { - return mxEncrypter.is() && mxEncrypter->IsValid(); + return mxEncrypter && mxEncrypter->IsValid(); } void XclExpStream::EnableEncryption( bool bEnable ) @@ -732,7 +732,10 @@ rtl::OUString XclXmlUtils::GetStreamName( const char* sStreamDir, const char* sS sBuf.appendAscii( sStream ); if( nId ) sBuf.append( nId ); - sBuf.appendAscii( ".xml" ); + if( strstr(sStream, "vml") ) + sBuf.appendAscii( ".vml" ); + else + sBuf.appendAscii( ".xml" ); return sBuf.makeStringAndClear(); } @@ -1110,18 +1113,6 @@ bool XclExpXmlStream::exportDocument() throw() mpRoot = &aRoot; aRoot.GetOldRoot().pER = &aRoot; aRoot.GetOldRoot().eDateiTyp = Biff8; -#if 0 // FIXME: Re-write this block without using SotStorage. - if ( SvtFilterOptions* pOptions = SvtFilterOptions::Get() ) - if ( pShell && pOptions->IsLoadExcelBasicStorage() ) - if ( sal_uInt32 nError - = SvxImportMSVBasic( *pShell, *rStorage, - pOptions->IsLoadExcelBasicCode(), - pOptions->IsLoadExcelBasicStorage() ) - .SaveOrDelMSVBAStorage( true, EXC_STORAGE_VBA_PROJECT) ) - { - pShell->SetError( nError, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) ); - } -#endif // Get the viewsettings before processing if( pShell->GetViewData() ) pShell->GetViewData()->WriteExtOptions( mpRoot->GetExtDocOptions() ); @@ -1200,7 +1191,7 @@ SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo( void* /* pServiceMan { Reference< XRegistryKey > xNewKey1( static_cast< XRegistryKey* >( pRegistryKey )->createKey( - OUString::createFromAscii( IMPL_NAME "/UNO/SERVICES/" ) ) ); + OUString(RTL_CONSTASCII_USTRINGPARAM( IMPL_NAME "/UNO/SERVICES/" )) ) ); xNewKey1->createKey( XlsxExport_getSupportedServiceNames().getConstArray()[0] ); bRet = sal_True; @@ -1225,7 +1216,7 @@ SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory( const sal_Char* pImplN if ( rtl_str_compare( pImplName, IMPL_NAME ) == 0 ) { - const OUString aServiceName( OUString::createFromAscii( IMPL_NAME ) ); + const OUString aServiceName(RTL_CONSTASCII_USTRINGPARAM(IMPL_NAME)); xFactory = Reference< XSingleServiceFactory >( ::cppu::createSingleFactory( reinterpret_cast< XMultiServiceFactory* >( pServiceManager ), diff --git a/sc/source/filter/excel/xestyle.cxx b/sc/source/filter/excel/xestyle.cxx index e4ec2131ba6e..5b8853fad231 100644 --- a/sc/source/filter/excel/xestyle.cxx +++ b/sc/source/filter/excel/xestyle.cxx @@ -58,6 +58,7 @@ #include "xestring.hxx" #include <oox/core/tokens.hxx> +#include <boost/ptr_container/ptr_vector.hpp> using ::rtl::OString; using ::rtl::OUString; @@ -313,10 +314,10 @@ private: const Color& rColor ) const; private: - typedef ScfDelList< XclListColor > XclListColorList; - typedef ScfRef< XclListColorList > XclListColorListRef; - typedef ::std::vector< XclColorIdData > XclColorIdDataVec; - typedef ::std::vector< XclPaletteColor > XclPaletteColorVec; + typedef boost::ptr_vector< XclListColor > XclListColorList; + typedef boost::shared_ptr< XclListColorList > XclListColorListRef; + typedef ::std::vector< XclColorIdData > XclColorIdDataVec; + typedef ::std::vector< XclPaletteColor > XclPaletteColorVec; const XclDefaultPalette& mrDefPal; /// The default palette for the current BIFF version. XclListColorListRef mxColorList; /// Working color list. @@ -367,28 +368,28 @@ void XclExpPaletteImpl::Finalize() { // --- build initial color ID data vector (maColorIdDataVec) --- - sal_uInt32 nCount = mxColorList->Count(); + sal_uInt32 nCount = mxColorList->size(); maColorIdDataVec.resize( nCount ); for( sal_uInt32 nIdx = 0; nIdx < nCount; ++nIdx ) { - XclListColor* pListColor = mxColorList->GetObject( nIdx ); - maColorIdDataVec[ pListColor->GetColorId() ].Set( pListColor->GetColor(), nIdx ); + const XclListColor& listColor = mxColorList->at( nIdx ); + maColorIdDataVec[ listColor.GetColorId() ].Set( listColor.GetColor(), nIdx ); } // --- loop as long as current color count does not fit into palette of current BIFF --- // phase 1: raw reduction (performance reasons, #i36945#) sal_uInt32 nPass = 0; - while( mxColorList->Count() > EXC_PAL_MAXRAWSIZE ) + while( mxColorList->size() > EXC_PAL_MAXRAWSIZE ) RawReducePalette( nPass++ ); // phase 2: precise reduction using advanced color merging based on color weighting - while( mxColorList->Count() > mrDefPal.GetColorCount() ) + while( mxColorList->size() > mrDefPal.GetColorCount() ) ReduceLeastUsedColor(); // --- #104865# use default palette and replace colors with nearest used colors --- - nCount = mxColorList->Count(); + nCount = mxColorList->size(); XclRemapVec aRemapVec( nCount ); XclNearestVec aNearestVec( nCount ); @@ -399,7 +400,7 @@ void XclExpPaletteImpl::Finalize() // find nearest unused default color for each unprocessed list color for( nIndex = 0; nIndex < nCount; ++nIndex ) aNearestVec[ nIndex ].mnDist = aRemapVec[ nIndex ].mbProcessed ? SAL_MAX_INT32 : - GetNearestPaletteColor( aNearestVec[ nIndex ].mnPalIndex, mxColorList->GetObject( nIndex )->GetColor(), true ); + GetNearestPaletteColor( aNearestVec[ nIndex ].mnPalIndex, mxColorList->at( nIndex ).GetColor(), true ); // find the list color which is nearest to a default color sal_uInt32 nFound = 0; for( nIndex = 1; nIndex < nCount; ++nIndex ) @@ -407,9 +408,8 @@ void XclExpPaletteImpl::Finalize() nFound = nIndex; // replace default color with list color sal_uInt32 nNearest = aNearestVec[ nFound ].mnPalIndex; - DBG_ASSERT( mxColorList->GetObject( nFound ), "XclExpPaletteImpl::Finalize - missing a color" ); DBG_ASSERT( nNearest < maPalette.size(), "XclExpPaletteImpl::Finalize - algorithm error" ); - maPalette[ nNearest ].SetColor( mxColorList->GetObject( nFound )->GetColor() ); + maPalette[ nNearest ].SetColor( mxColorList->at( nFound ).GetColor() ); aRemapVec[ nFound ].SetIndex( nNearest ); } @@ -528,20 +528,27 @@ const Color& XclExpPaletteImpl::GetOriginalColor( sal_uInt32 nColorId ) const XclListColor* XclExpPaletteImpl::SearchListEntry( const Color& rColor, sal_uInt32& rnIndex ) { rnIndex = mnLastIdx; - XclListColor* pEntry = mxColorList->GetObject( rnIndex ); + XclListColor* pEntry = NULL; - // search optimization for equal-colored objects occuring repeatedly - if( pEntry && (pEntry->GetColor() == rColor) ) - return pEntry; + if (mxColorList->empty()) + return NULL; + + // search optimization for equal-colored objects occurring repeatedly + if (rnIndex < mxColorList->size()) + { + pEntry = &(*mxColorList)[rnIndex]; + if( pEntry->GetColor() == rColor ) + return pEntry; + } // binary search for color sal_uInt32 nBegIdx = 0; - sal_uInt32 nEndIdx = mxColorList->Count(); + sal_uInt32 nEndIdx = mxColorList->size(); bool bFound = false; while( !bFound && (nBegIdx < nEndIdx) ) { rnIndex = (nBegIdx + nEndIdx) / 2; - pEntry = mxColorList->GetObject( rnIndex ); + pEntry = &(*mxColorList)[rnIndex]; bFound = pEntry->GetColor() == rColor; if( !bFound ) { @@ -551,9 +558,10 @@ XclListColor* XclExpPaletteImpl::SearchListEntry( const Color& rColor, sal_uInt3 nEndIdx = rnIndex; } } + // not found - use end of range as new insertion position if( !bFound ) - pEntry = mxColorList->GetObject( rnIndex = nEndIdx ); + rnIndex = nEndIdx; mnLastIdx = rnIndex; return pEntry; @@ -561,8 +569,10 @@ XclListColor* XclExpPaletteImpl::SearchListEntry( const Color& rColor, sal_uInt3 XclListColor* XclExpPaletteImpl::CreateListEntry( const Color& rColor, sal_uInt32 nIndex ) { - XclListColor* pEntry = new XclListColor( rColor, mxColorList->Count() ); - mxColorList->Insert( pEntry, nIndex ); + XclListColor* pEntry = new XclListColor( rColor, mxColorList->size() ); + XclListColorList::iterator itr = mxColorList->begin(); + ::std::advance(itr, nIndex); + mxColorList->insert(itr, pEntry); return pEntry; } @@ -584,7 +594,7 @@ void XclExpPaletteImpl::RawReducePalette( sal_uInt32 nPass ) // maps old list indexes to new list indexes, used to update maColorIdDataVec ScfUInt32Vec aListIndexMap; - aListIndexMap.reserve( xOldList->Count() ); + aListIndexMap.reserve( xOldList->size() ); // preparations sal_uInt8 nR, nG, nB; @@ -598,10 +608,10 @@ void XclExpPaletteImpl::RawReducePalette( sal_uInt32 nPass ) sal_uInt8 nFactor3 = static_cast< sal_uInt8 >( 0x40 >> nPass ); // process each color in the old color list - for( sal_uInt32 nIdx = 0, nCount = xOldList->Count(); nIdx < nCount; ++nIdx ) + for( sal_uInt32 nIdx = 0, nCount = xOldList->size(); nIdx < nCount; ++nIdx ) { // get the old list entry - const XclListColor* pOldEntry = xOldList->GetObject( nIdx ); + const XclListColor* pOldEntry = &(xOldList->at( nIdx )); nR = pOldEntry->GetColor().GetRed(); nG = pOldEntry->GetColor().GetGreen(); nB = pOldEntry->GetColor().GetBlue(); @@ -639,14 +649,16 @@ void XclExpPaletteImpl::ReduceLeastUsedColor() sal_uInt32 nKeep = GetNearestListColor( nRemove ); // merge both colors to one color, remove one color from list - XclListColor* pKeepEntry = mxColorList->GetObject( nKeep ); - XclListColor* pRemoveEntry = mxColorList->GetObject( nRemove ); + XclListColor* pKeepEntry = &mxColorList->at(nKeep); + XclListColor* pRemoveEntry = &mxColorList->at(nRemove); if( pKeepEntry && pRemoveEntry ) { // merge both colors (if pKeepEntry is a base color, it will not change) pKeepEntry->Merge( *pRemoveEntry ); // remove the less used color, adjust nKeep index if kept color follows removed color - mxColorList->Delete( nRemove ); + XclListColorList::iterator itr = mxColorList->begin(); + ::std::advance(itr, nRemove); + mxColorList->erase(itr); if( nKeep > nRemove ) --nKeep; // recalculate color ID data map (maps color IDs to color list indexes) @@ -665,14 +677,14 @@ sal_uInt32 XclExpPaletteImpl::GetLeastUsedListColor() const sal_uInt32 nFound = 0; sal_uInt32 nMinW = SAL_MAX_UINT32; - for( sal_uInt32 nIdx = 0, nCount = mxColorList->Count(); nIdx < nCount; ++nIdx ) + for( sal_uInt32 nIdx = 0, nCount = mxColorList->size(); nIdx < nCount; ++nIdx ) { - XclListColor* pEntry = mxColorList->GetObject( nIdx ); + XclListColor& pEntry = mxColorList->at( nIdx ); // ignore the base colors - if( !pEntry->IsBaseColor() && (pEntry->GetWeighting() < nMinW) ) + if( !pEntry.IsBaseColor() && (pEntry.GetWeighting() < nMinW) ) { nFound = nIdx; - nMinW = pEntry->GetWeighting(); + nMinW = pEntry.GetWeighting(); } } return nFound; @@ -683,11 +695,11 @@ sal_uInt32 XclExpPaletteImpl::GetNearestListColor( const Color& rColor, sal_uInt sal_uInt32 nFound = 0; sal_Int32 nMinD = SAL_MAX_INT32; - for( sal_uInt32 nIdx = 0, nCount = mxColorList->Count(); nIdx < nCount; ++nIdx ) + for( sal_uInt32 nIdx = 0, nCount = mxColorList->size(); nIdx < nCount; ++nIdx ) { if( nIdx != nIgnore ) { - if( XclListColor* pEntry = mxColorList->GetObject( nIdx ) ) + if( XclListColor* pEntry = &mxColorList->at(nIdx) ) { sal_Int32 nDist = lclGetColorDistance( rColor, pEntry->GetColor() ); if( nDist < nMinD ) @@ -703,8 +715,10 @@ sal_uInt32 XclExpPaletteImpl::GetNearestListColor( const Color& rColor, sal_uInt sal_uInt32 XclExpPaletteImpl::GetNearestListColor( sal_uInt32 nIndex ) const { - XclListColor* pEntry = mxColorList->GetObject( nIndex ); - return pEntry ? GetNearestListColor( pEntry->GetColor(), nIndex ) : 0; + if (nIndex >= mxColorList->size()) + return 0; + XclListColor* pEntry = &mxColorList->at(nIndex); + return GetNearestListColor( pEntry->GetColor(), nIndex ); } sal_Int32 XclExpPaletteImpl::GetNearestPaletteColor( @@ -836,7 +850,7 @@ sal_Int16 lclCheckFontItems( const SfxItemSet& rItemSet, } // namespace -/*static*/ sal_Int16 XclExpFontHelper::GetFirstUsedScript( const XclExpRoot& rRoot, const SfxItemSet& rItemSet ) +sal_Int16 XclExpFontHelper::GetFirstUsedScript( const XclExpRoot& rRoot, const SfxItemSet& rItemSet ) { namespace ApiScriptType = ::com::sun::star::i18n::ScriptType; @@ -878,7 +892,7 @@ sal_Int16 lclCheckFontItems( const SfxItemSet& rItemSet, return nScript; } -/*static*/ Font XclExpFontHelper::GetFontFromItemSet( const XclExpRoot& rRoot, const SfxItemSet& rItemSet, sal_Int16 nScript ) +Font XclExpFontHelper::GetFontFromItemSet( const XclExpRoot& rRoot, const SfxItemSet& rItemSet, sal_Int16 nScript ) { namespace ApiScriptType = ::com::sun::star::i18n::ScriptType; @@ -902,7 +916,7 @@ sal_Int16 lclCheckFontItems( const SfxItemSet& rItemSet, return aFont; } -/*static*/ bool XclExpFontHelper::CheckItems( const XclExpRoot& rRoot, const SfxItemSet& rItemSet, sal_Int16 nScript, bool bDeep ) +bool XclExpFontHelper::CheckItems( const XclExpRoot& rRoot, const SfxItemSet& rItemSet, sal_Int16 nScript, bool bDeep ) { static const USHORT pnCommonIds[] = { ATTR_FONT_UNDERLINE, ATTR_FONT_CROSSEDOUT, ATTR_FONT_CONTOUR, @@ -2819,8 +2833,8 @@ XclExpXmlStyleSheet::XclExpXmlStyleSheet( const XclExpRoot& rRoot ) void XclExpXmlStyleSheet::SaveXml( XclExpXmlStream& rStrm ) { sax_fastparser::FSHelperPtr aStyleSheet = rStrm.CreateOutputStream( - OUString::createFromAscii( "xl/styles.xml" ), - OUString::createFromAscii( "styles.xml" ), + OUString(RTL_CONSTASCII_USTRINGPARAM( "xl/styles.xml") ), + OUString(RTL_CONSTASCII_USTRINGPARAM( "styles.xml" )), rStrm.GetCurrentStream()->getOutputStream(), "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" ); diff --git a/sc/source/filter/excel/xetable.cxx b/sc/source/filter/excel/xetable.cxx index dbc11eefc335..74284b84086a 100644 --- a/sc/source/filter/excel/xetable.cxx +++ b/sc/source/filter/excel/xetable.cxx @@ -680,7 +680,7 @@ bool XclExpLabelCell::IsMultiLineText() const void XclExpLabelCell::Init( const XclExpRoot& rRoot, const ScPatternAttr* pPattern, XclExpStringRef xText ) { - DBG_ASSERT( xText.is() && xText->Len(), "XclExpLabelCell::XclExpLabelCell - empty string passed" ); + DBG_ASSERT( xText && xText->Len(), "XclExpLabelCell::XclExpLabelCell - empty string passed" ); mxText = xText; mnSstIndex = 0; @@ -846,7 +846,7 @@ XclExpFormulaCell::XclExpFormulaCell( // other formula cell covered by a matrix - find the ARRAY record mxAddRec = rArrayBfr.FindArray( rScTokArr ); // should always be found, if Calc document is not broken - DBG_ASSERT( mxAddRec.is(), "XclExpFormulaCell::XclExpFormulaCell - no matrix found" ); + DBG_ASSERT( mxAddRec, "XclExpFormulaCell::XclExpFormulaCell - no matrix found" ); } break; default:; @@ -864,22 +864,22 @@ XclExpFormulaCell::XclExpFormulaCell( void XclExpFormulaCell::Save( XclExpStream& rStrm ) { // create token array for FORMULA cells with additional record - if( mxAddRec.is() ) + if( mxAddRec ) mxTokArr = mxAddRec->CreateCellTokenArray( rStrm.GetRoot() ); // FORMULA record itself - DBG_ASSERT( mxTokArr.is(), "XclExpFormulaCell::Save - missing token array" ); + DBG_ASSERT( mxTokArr, "XclExpFormulaCell::Save - missing token array" ); if( !mxTokArr ) mxTokArr = rStrm.GetRoot().GetFormulaCompiler().CreateErrorFormula( EXC_ERR_NA ); SetContSize( 16 + mxTokArr->GetSize() ); XclExpSingleCellBase::Save( rStrm ); // additional record (ARRAY, SHRFMLA, or TABLEOP), only for first FORMULA record - if( mxAddRec.is() && mxAddRec->IsBasePos( GetXclCol(), GetXclRow() ) ) + if( mxAddRec && mxAddRec->IsBasePos( GetXclCol(), GetXclRow() ) ) mxAddRec->Save( rStrm ); // STRING record for string result - if( mxStringRec.is() ) + if( mxStringRec ) mxStringRec->Save( rStrm ); } @@ -899,7 +899,7 @@ void XclExpFormulaCell::SaveXml( XclExpXmlStream& rStrm ) rWorksheet->startElement( XML_f, // OOXTODO: XML_t, ST_CellFormulaType - XML_aca, XclXmlUtils::ToPsz( (mxTokArr.is() && mxTokArr->IsVolatile()) || (mxAddRec.is() && mxAddRec->IsVolatile()) ), + XML_aca, XclXmlUtils::ToPsz( (mxTokArr && mxTokArr->IsVolatile()) || (mxAddRec && mxAddRec->IsVolatile()) ), // OOXTODO: XML_ref, ST_Ref // OOXTODO: XML_dt2D, bool // OOXTODO: XML_dtr, bool @@ -979,8 +979,8 @@ void XclExpFormulaCell::WriteContents( XclExpStream& rStrm ) // flags and formula token array sal_uInt16 nFlags = EXC_FORMULA_DEFAULTFLAGS; - ::set_flag( nFlags, EXC_FORMULA_RECALC_ALWAYS, mxTokArr->IsVolatile() || (mxAddRec.is() && mxAddRec->IsVolatile()) ); - ::set_flag( nFlags, EXC_FORMULA_SHARED, mxAddRec.is() && (mxAddRec->GetRecId() == EXC_ID_SHRFMLA) ); + ::set_flag( nFlags, EXC_FORMULA_RECALC_ALWAYS, mxTokArr->IsVolatile() || (mxAddRec && mxAddRec->IsVolatile()) ); + ::set_flag( nFlags, EXC_FORMULA_SHARED, mxAddRec && (mxAddRec->GetRecId() == EXC_ID_SHRFMLA) ); rStrm << nFlags << sal_uInt32( 0 ) << *mxTokArr; } @@ -1936,7 +1936,7 @@ void XclExpRow::Save( XclExpStream& rStrm ) void XclExpRow::InsertCell( XclExpCellRef xCell, size_t nPos, bool bIsMergedBase ) { - DBG_ASSERT( xCell.is(), "XclExpRow::InsertCell - missing cell" ); + DBG_ASSERT( xCell, "XclExpRow::InsertCell - missing cell" ); /* #109751# If we have a multi-line text in a merged cell, and the resulting row height has not been confirmed, we need to force the EXC_ROW_UNSYNCED @@ -1946,7 +1946,7 @@ void XclExpRow::InsertCell( XclExpCellRef xCell, size_t nPos, bool bIsMergedBase // try to merge with previous cell, insert the new cell if not successful XclExpCellRef xPrevCell = maCellList.GetRecord( nPos - 1 ); - if( xPrevCell.is() && xPrevCell->TryMerge( *xCell ) ) + if( xPrevCell && xPrevCell->TryMerge( *xCell ) ) xCell = xPrevCell; else maCellList.InsertRecord( xCell, nPos++ ); @@ -1954,7 +1954,7 @@ void XclExpRow::InsertCell( XclExpCellRef xCell, size_t nPos, bool bIsMergedBase // try to merge with following cell, remove it if successful XclExpCellRef xNextCell = maCellList.GetRecord( nPos ); - if( xNextCell.is() && xCell->TryMerge( *xNextCell ) ) + if( xNextCell && xCell->TryMerge( *xNextCell ) ) maCellList.RemoveRecord( nPos ); } @@ -2005,7 +2005,7 @@ XclExpRowBuffer::XclExpRowBuffer( const XclExpRoot& rRoot ) : void XclExpRowBuffer::AppendCell( XclExpCellRef xCell, bool bIsMergedBase ) { - DBG_ASSERT( xCell.is(), "XclExpRowBuffer::AppendCell - missing cell" ); + DBG_ASSERT( xCell, "XclExpRowBuffer::AppendCell - missing cell" ); GetOrCreateRow( xCell->GetXclRow(), false ).AppendCell( xCell, bIsMergedBase ); } @@ -2338,7 +2338,7 @@ XclExpCellTable::XclExpCellTable( const XclExpRoot& rRoot ) : } // insert the cell into the current row - if( xCell.is() ) + if( xCell ) maRowBfr.AppendCell( xCell, bIsMergedBase ); // notes @@ -2358,7 +2358,7 @@ XclExpCellTable::XclExpCellTable( const XclExpRoot& rRoot ) : ScRange aScRange( aScPos ); aScRange.aEnd.IncCol( rMergeItem.GetColMerge() - 1 ); aScRange.aEnd.IncRow( rMergeItem.GetRowMerge() - 1 ); - sal_uInt32 nXFId = xCell.is() ? xCell->GetFirstXFId() : EXC_XFID_NOTFOUND; + sal_uInt32 nXFId = xCell ? xCell->GetFirstXFId() : EXC_XFID_NOTFOUND; // #120156# blank cells merged vertically may occur repeatedly DBG_ASSERT( (aScRange.aStart.Col() == aScRange.aEnd.Col()) || (nScCol == nLastScCol), "XclExpCellTable::XclExpCellTable - invalid repeated blank merged cell" ); diff --git a/sc/source/filter/excel/xichart.cxx b/sc/source/filter/excel/xichart.cxx index 41565381e137..0743321026e1 100644 --- a/sc/source/filter/excel/xichart.cxx +++ b/sc/source/filter/excel/xichart.cxx @@ -135,6 +135,8 @@ using ::com::sun::star::chart2::data::XLabeledDataSequence; using ::formula::FormulaToken; using ::formula::StackVar; +using ::boost::shared_ptr; +using ::std::pair; namespace cssc = ::com::sun::star::chart; namespace cssc2 = ::com::sun::star::chart2; @@ -559,7 +561,7 @@ void XclImpChFrameBase::ReadSubRecord( XclImpStream& rStrm ) void XclImpChFrameBase::ConvertLineBase( const XclImpChRoot& rRoot, ScfPropertySet& rPropSet, XclChObjectType eObjType, sal_uInt16 nFormatIdx ) const { - if( mxLineFmt.is() ) + if( mxLineFmt ) mxLineFmt->Convert( rRoot, rPropSet, eObjType, nFormatIdx ); } @@ -569,9 +571,9 @@ void XclImpChFrameBase::ConvertAreaBase( const XclImpChRoot& rRoot, if( rRoot.GetFormatInfo( eObjType ).mbIsFrame ) { // CHESCHERFORMAT overrides CHAREAFORMAT (even if it is auto) - if( mxEscherFmt.is() ) + if( mxEscherFmt ) mxEscherFmt->Convert( rRoot, rPropSet, eObjType ); - else if( mxAreaFmt.is() ) + else if( mxAreaFmt ) mxAreaFmt->Convert( rRoot, rPropSet, eObjType, nFormatIdx ); } } @@ -659,7 +661,7 @@ Reference< XLabeledDataSequence > lclCreateLabeledDataSequence( { // create data sequence for values and title Reference< XDataSequence > xValueSeq; - if( xValueLink.is() ) + if( xValueLink ) xValueSeq = xValueLink->CreateDataSequence( rValueRole ); Reference< XDataSequence > xTitleSeq; if( pTitleLink ) @@ -729,14 +731,14 @@ void XclImpChSourceLink::SetString( const String& rString ) void XclImpChSourceLink::SetTextFormats( const XclFormatRunVec& rFormats ) { - if( mxString.is() ) + if( mxString ) mxString->SetFormats( rFormats ); } sal_uInt16 XclImpChSourceLink::GetCellCount() const { sal_uInt32 nCellCount = 0; - if( mxTokenArray.is() ) + if( mxTokenArray ) { mxTokenArray->Reset(); for( const FormulaToken* pToken = mxTokenArray->First(); pToken; pToken = mxTokenArray->Next() ) @@ -784,7 +786,7 @@ Reference< XDataSequence > XclImpChSourceLink::CreateDataSequence( const OUStrin { Reference< XDataSequence > xDataSeq; Reference< XDataProvider > xDataProv = GetDataProvider(); - if( xDataProv.is() && mxTokenArray.is() ) + if( xDataProv.is() && mxTokenArray ) { ScCompiler aComp( GetDocPtr(), ScAddress(), *mxTokenArray ); aComp.SetGrammar( ::formula::FormulaGrammar::GRAM_ENGLISH ); @@ -809,7 +811,7 @@ Sequence< Reference< XFormattedString > > XclImpChSourceLink::CreateStringSequen const XclImpChRoot& rRoot, sal_uInt16 nLeadFontIdx, const Color& rLeadFontColor ) const { ::std::vector< Reference< XFormattedString > > aStringVec; - if( mxString.is() ) + if( mxString ) { for( XclImpStringIterator aIt( *mxString ); aIt.Is(); ++aIt ) { @@ -837,16 +839,16 @@ Sequence< Reference< XFormattedString > > XclImpChSourceLink::CreateStringSequen return ScfApiHelper::VectorToSequence( aStringVec ); } -void XclImpChSourceLink::FillSourceLink( ::std::vector< ScSharedTokenRef >& rTokens ) const +void XclImpChSourceLink::FillSourceLink( ::std::vector< ScTokenRef >& rTokens ) const { - if( !mxTokenArray.is() ) + if( !mxTokenArray ) // no links to fill. return; mxTokenArray->Reset(); for (FormulaToken* p = mxTokenArray->First(); p; p = mxTokenArray->Next()) { - ScSharedTokenRef pToken(static_cast<ScToken*>(p->Clone())); + ScTokenRef pToken(static_cast<ScToken*>(p->Clone())); if (ScRefTokenHelper::isRef(pToken)) // This is a reference token. Store it. ScRefTokenHelper::join(rTokens, pToken); @@ -944,7 +946,7 @@ void XclImpChText::ReadSubRecord( XclImpStream& rStrm ) ReadChFrLabelProps( rStrm ); break; case EXC_ID_CHEND: - if( mxSrcLink.is() && !maFormats.empty() ) + if( mxSrcLink && !maFormats.empty() ) mxSrcLink->SetTextFormats( maFormats ); break; } @@ -952,7 +954,7 @@ void XclImpChText::ReadSubRecord( XclImpStream& rStrm ) sal_uInt16 XclImpChText::GetFontIndex() const { - return mxFont.is() ? mxFont->GetFontIndex() : EXC_FONT_NOTFOUND; + return mxFont ? mxFont->GetFontIndex() : EXC_FONT_NOTFOUND; } Color XclImpChText::GetFontColor() const @@ -1010,24 +1012,24 @@ void XclImpChText::ConvertRotation( ScfPropertySet& rPropSet, bool bSupportsStac void XclImpChText::ConvertFrame( ScfPropertySet& rPropSet ) const { - if( mxFrame.is() ) + if( mxFrame ) mxFrame->Convert( rPropSet ); } void XclImpChText::ConvertNumFmt( ScfPropertySet& rPropSet, bool bPercent ) const { - if( mxSrcLink.is() ) + if( mxSrcLink ) mxSrcLink->ConvertNumFmt( rPropSet, bPercent ); } void XclImpChText::ConvertDataLabel( ScfPropertySet& rPropSet, const XclChTypeInfo& rTypeInfo ) const { // existing CHFRLABELPROPS record wins over flags from CHTEXT - sal_uInt16 nShowFlags = mxLabelProps.is() ? mxLabelProps->mnFlags : maData.mnFlags; - sal_uInt16 SHOWANYCATEG = mxLabelProps.is() ? EXC_CHFRLABELPROPS_SHOWCATEG : (EXC_CHTEXT_SHOWCATEGPERC | EXC_CHTEXT_SHOWCATEG); - sal_uInt16 SHOWANYVALUE = mxLabelProps.is() ? EXC_CHFRLABELPROPS_SHOWVALUE : EXC_CHTEXT_SHOWVALUE; - sal_uInt16 SHOWANYPERCENT = mxLabelProps.is() ? EXC_CHFRLABELPROPS_SHOWPERCENT : (EXC_CHTEXT_SHOWPERCENT | EXC_CHTEXT_SHOWCATEGPERC); - sal_uInt16 SHOWANYBUBBLE = mxLabelProps.is() ? EXC_CHFRLABELPROPS_SHOWBUBBLE : EXC_CHTEXT_SHOWBUBBLE; + sal_uInt16 nShowFlags = mxLabelProps ? mxLabelProps->mnFlags : maData.mnFlags; + sal_uInt16 SHOWANYCATEG = mxLabelProps ? EXC_CHFRLABELPROPS_SHOWCATEG : (EXC_CHTEXT_SHOWCATEGPERC | EXC_CHTEXT_SHOWCATEG); + sal_uInt16 SHOWANYVALUE = mxLabelProps ? EXC_CHFRLABELPROPS_SHOWVALUE : EXC_CHTEXT_SHOWVALUE; + sal_uInt16 SHOWANYPERCENT = mxLabelProps ? EXC_CHFRLABELPROPS_SHOWPERCENT : (EXC_CHTEXT_SHOWPERCENT | EXC_CHTEXT_SHOWCATEGPERC); + sal_uInt16 SHOWANYBUBBLE = mxLabelProps ? EXC_CHFRLABELPROPS_SHOWBUBBLE : EXC_CHTEXT_SHOWBUBBLE; // get raw flags for label values bool bShowNone = IsDeleted(); @@ -1047,7 +1049,7 @@ void XclImpChText::ConvertDataLabel( ScfPropertySet& rPropSet, const XclChTypeIn // create API struct for label values, set API label separator cssc2::DataPointLabel aPointLabel( bShowValue, bShowPercent, bShowCateg, bShowSymbol ); rPropSet.SetProperty( EXC_CHPROP_LABEL, aPointLabel ); - String aSep = mxLabelProps.is() ? mxLabelProps->maSeparator : String( sal_Unicode( '\n' ) ); + String aSep = mxLabelProps ? mxLabelProps->maSeparator : String( sal_Unicode( '\n' ) ); if( aSep.Len() == 0 ) aSep = CREATE_STRING( "; " ); rPropSet.SetStringProperty( EXC_CHPROP_LABELSEPARATOR, aSep ); @@ -1083,7 +1085,7 @@ void XclImpChText::ConvertDataLabel( ScfPropertySet& rPropSet, const XclChTypeIn Reference< XTitle > XclImpChText::CreateTitle() const { Reference< XTitle > xTitle; - if( mxSrcLink.is() && mxSrcLink->HasString() ) + if( mxSrcLink && mxSrcLink->HasString() ) { // create the formatted strings Sequence< Reference< XFormattedString > > aStringSeq( @@ -1179,7 +1181,7 @@ namespace { void lclUpdateText( XclImpChTextRef& rxText, XclImpChTextRef xDefText ) { - if( rxText.is() ) + if( rxText ) rxText->UpdateText( xDefText.get() ); else rxText = xDefText; @@ -1189,7 +1191,7 @@ void lclFinalizeTitle( XclImpChTextRef& rxTitle, XclImpChTextRef xDefText, const { /* Do not update a title, if it is not visible (if rxTitle is null). Existing reference indicates enabled title. */ - if( rxTitle.is() ) + if( rxTitle ) { if( !rxTitle->HasString() ) rxTitle->SetString( rAutoTitle ); @@ -1318,7 +1320,7 @@ XclImpChTextRef XclImpChAttachedLabel::CreateDataLabel( XclImpChTextRef xParent const sal_uInt16 EXC_CHATTLABEL_SHOWANYPERCENT = EXC_CHATTLABEL_SHOWPERCENT | EXC_CHATTLABEL_SHOWCATEGPERC; const sal_uInt16 EXC_CHATTLABEL_SHOWANYCATEG = EXC_CHATTLABEL_SHOWCATEG | EXC_CHATTLABEL_SHOWCATEGPERC; - XclImpChTextRef xLabel( xParent.is() ? new XclImpChText( *xParent ) : new XclImpChText( GetChRoot() ) ); + XclImpChTextRef xLabel( xParent ? new XclImpChText( *xParent ) : new XclImpChText( GetChRoot() ) ); xLabel->UpdateDataLabel( ::get_flag( mnFlags, EXC_CHATTLABEL_SHOWANYCATEG ), ::get_flag( mnFlags, EXC_CHATTLABEL_SHOWANYVALUE ), @@ -1468,18 +1470,18 @@ void XclImpChDataFormat::Convert( ScfPropertySet& rPropSet, const XclChExtTypeIn ConvertFrameBase( GetChRoot(), rPropSet, rTypeInfo.GetSeriesObjectType(), maData.mnFormatIdx ); #if EXC_CHART2_3DBAR_HAIRLINES_ONLY // #i83151# only hair lines in 3D charts with filled data points - if( rTypeInfo.mb3dChart && rTypeInfo.IsSeriesFrameFormat() && mxLineFmt.is() && mxLineFmt->HasLine() ) + if( rTypeInfo.mb3dChart && rTypeInfo.IsSeriesFrameFormat() && mxLineFmt && mxLineFmt->HasLine() ) rPropSet.SetProperty< sal_Int32 >( CREATE_OUSTRING( "BorderWidth" ), 0 ); #endif // other formatting - if( mxMarkerFmt.is() ) + if( mxMarkerFmt ) mxMarkerFmt->Convert( GetChRoot(), rPropSet, maData.mnFormatIdx, GetLineWeight() ); - if( mxPieFmt.is() ) + if( mxPieFmt ) mxPieFmt->Convert( rPropSet ); - if( mx3dDataFmt.is() ) + if( mx3dDataFmt ) mx3dDataFmt->Convert( rPropSet ); - if( mxLabel.is() ) + if( mxLabel ) mxLabel->ConvertDataLabel( rPropSet, rTypeInfo ); // 3D settings @@ -1488,7 +1490,7 @@ void XclImpChDataFormat::Convert( ScfPropertySet& rPropSet, const XclChExtTypeIn /* Special case: set marker color as line color, if series line is not visible. This makes the color visible in the marker area. TODO: remove this if OOChart supports own colors in markers. */ - if( !rTypeInfo.IsSeriesFrameFormat() && !HasLine() && mxMarkerFmt.is() ) + if( !rTypeInfo.IsSeriesFrameFormat() && !HasLine() && mxMarkerFmt ) mxMarkerFmt->ConvertColor( GetChRoot(), rPropSet, maData.mnFormatIdx ); } @@ -1527,9 +1529,9 @@ void XclImpChDataFormat::UpdateDataLabel( const XclImpChDataFormat* pParentFmt ) xDefText = pParentFmt->GetDataLabel(); if( !xDefText ) xDefText = GetChartData().GetDefaultText( EXC_CHTEXTTYPE_DATALABEL ); - if( mxLabel.is() ) + if( mxLabel ) mxLabel->UpdateText( xDefText.get() ); - else if( mxAttLabel.is() ) + else if( mxAttLabel ) mxLabel = mxAttLabel->CreateDataLabel( xDefText ); } @@ -1577,7 +1579,7 @@ Reference< XRegressionCurve > XclImpChSerTrendLine::CreateRegressionCurve() cons xRegCurve.set( ScfApiHelper::CreateInstance( aService ), UNO_QUERY ); // trend line formatting - if( xRegCurve.is() && mxDataFmt.is() ) + if( xRegCurve.is() && mxDataFmt ) { ScfPropertySet aPropSet( xRegCurve ); mxDataFmt->ConvertLine( aPropSet, EXC_CHOBJTYPE_TRENDLINE ); @@ -1699,7 +1701,7 @@ Reference< XPropertySet > XclImpChSerErrorBar::CreateErrorBar( const XclImpChSer } // error bar formatting - if( pPrimaryBar->mxDataFmt.is() && xErrorBar.is() ) + if( pPrimaryBar->mxDataFmt && xErrorBar.is() ) pPrimaryBar->mxDataFmt->ConvertLine( aBarProp, EXC_CHOBJTYPE_ERRORBAR ); } @@ -1750,7 +1752,7 @@ void XclImpChSeries::ReadSubRecord( XclImpStream& rStrm ) void XclImpChSeries::SetDataFormat( XclImpChDataFormatRef xDataFmt ) { - if( xDataFmt.is() ) + if( xDataFmt ) { XclImpChDataFormatRef* pxDataFmt = GetDataFormatRef( xDataFmt->GetPointPos().mnPointIdx ); // do not overwrite existing data format @@ -1767,7 +1769,7 @@ void XclImpChSeries::SetDataFormat( XclImpChDataFormatRef xDataFmt ) void XclImpChSeries::SetDataLabel( XclImpChTextRef xLabel ) { - if( xLabel.is() ) + if( xLabel ) { XclImpChTextRef* pxLabel = GetDataLabelRef( xLabel->GetPointPos().mnPointIdx ); if( pxLabel && !*pxLabel ) @@ -1796,7 +1798,7 @@ void XclImpChSeries::FinalizeDataFormats() if( !mxSeriesFmt ) mxSeriesFmt = CreateDataFormat( EXC_CHDATAFORMAT_ALLPOINTS, 0 ); - if( mxSeriesFmt.is() ) + if( mxSeriesFmt ) { // #i83100# set text label format, e.g. for trend line equations mxSeriesFmt->SetDataLabel( maLabels.get( EXC_CHDATAFORMAT_ALLPOINTS ) ); @@ -1834,7 +1836,7 @@ void XclImpChSeries::FinalizeDataFormats() } // update series format (copy missing formatting from group default format) - if( mxSeriesFmt.is() ) + if( mxSeriesFmt ) mxSeriesFmt->UpdateSeriesFormat( pTypeGroup->GetTypeInfo(), pTypeGroup->GetGroupFormat().get() ); // update data point formats (removes unchanged automatic formatting) @@ -1916,7 +1918,7 @@ Reference< XDataSeries > XclImpChSeries::CreateDataSeries() const // series formatting ScfPropertySet aSeriesProp( xDataSeries ); - if( mxSeriesFmt.is() ) + if( mxSeriesFmt ) mxSeriesFmt->Convert( aSeriesProp, rTypeInfo ); // trend lines @@ -1938,7 +1940,7 @@ Reference< XDataSeries > XclImpChSeries::CreateDataSeries() const aSeriesProp.SetBoolProperty( EXC_CHPROP_VARYCOLORSBY, rTypeInfo.meTypeCateg == EXC_CHTYPECATEG_PIE ); #endif // #i91271# always set area formatting for every point in pie/doughnut charts - if( mxSeriesFmt.is() && ((bVarPointFmt && mxSeriesFmt->IsAutoArea()) || (rTypeInfo.meTypeCateg == EXC_CHTYPECATEG_PIE)) ) + if( mxSeriesFmt && ((bVarPointFmt && mxSeriesFmt->IsAutoArea()) || (rTypeInfo.meTypeCateg == EXC_CHTYPECATEG_PIE)) ) { for( sal_uInt16 nPointIdx = 0, nPointCount = mxValueLink->GetCellCount(); nPointIdx < nPointCount; ++nPointIdx ) { @@ -1957,15 +1959,15 @@ Reference< XDataSeries > XclImpChSeries::CreateDataSeries() const return xDataSeries; } -void XclImpChSeries::FillAllSourceLinks( ::std::vector< ScSharedTokenRef >& rTokens ) const +void XclImpChSeries::FillAllSourceLinks( ::std::vector< ScTokenRef >& rTokens ) const { - if( mxValueLink.is() ) + if( mxValueLink ) mxValueLink->FillSourceLink( rTokens ); - if( mxCategLink.is() ) + if( mxCategLink ) mxCategLink->FillSourceLink( rTokens ); - if( mxTitleLink.is() ) + if( mxTitleLink ) mxTitleLink->FillSourceLink( rTokens ); - if( mxBubbleLink.is() ) + if( mxBubbleLink ) mxBubbleLink->FillSourceLink( rTokens ); } @@ -2009,7 +2011,14 @@ void XclImpChSeries::ReadChSerErrorBar( XclImpStream& rStrm ) { XclImpChSerErrorBarRef xErrorBar( new XclImpChSerErrorBar( GetChRoot() ) ); xErrorBar->ReadChSerErrorBar( rStrm ); - maErrorBars[ xErrorBar->GetBarType() ] = xErrorBar; + sal_uInt8 nBarType = xErrorBar->GetBarType(); + XclImpChSerErrorBarMap::iterator itr = maErrorBars.lower_bound(nBarType); + if (itr != maErrorBars.end() && !maErrorBars.key_comp()(nBarType, itr->first)) + // Overwrite the existing element. + itr->second = xErrorBar; + else + maErrorBars.insert( + itr, XclImpChSerErrorBarMap::value_type(nBarType, xErrorBar)); } XclImpChDataFormatRef XclImpChSeries::CreateDataFormat( sal_uInt16 nPointIdx, sal_uInt16 nFormatIdx ) @@ -2023,15 +2032,34 @@ XclImpChDataFormatRef* XclImpChSeries::GetDataFormatRef( sal_uInt16 nPointIdx ) { if( nPointIdx == EXC_CHDATAFORMAT_ALLPOINTS ) return &mxSeriesFmt; - if( nPointIdx < EXC_CHDATAFORMAT_MAXPOINTCOUNT ) - return &maPointFmts[ nPointIdx ]; + + if (nPointIdx < EXC_CHDATAFORMAT_MAXPOINTCOUNT) + { + XclImpChDataFormatMap::iterator itr = maPointFmts.lower_bound(nPointIdx); + if (itr == maPointFmts.end() || maPointFmts.key_comp()(nPointIdx, itr->first)) + { + // No object exists at this point index position. Insert a new one. + XclImpChDataFormatRef p(new XclImpChDataFormat(GetChRoot())); + itr = maPointFmts.insert(itr, XclImpChDataFormatMap::value_type(nPointIdx, p)); + } + return &itr->second; + } return 0; } XclImpChTextRef* XclImpChSeries::GetDataLabelRef( sal_uInt16 nPointIdx ) { - if( (nPointIdx == EXC_CHDATAFORMAT_ALLPOINTS) || (nPointIdx < EXC_CHDATAFORMAT_MAXPOINTCOUNT) ) - return &maLabels[ nPointIdx ]; + if ((nPointIdx == EXC_CHDATAFORMAT_ALLPOINTS) || (nPointIdx < EXC_CHDATAFORMAT_MAXPOINTCOUNT)) + { + XclImpChTextMap::iterator itr = maLabels.lower_bound(nPointIdx); + if (itr == maLabels.end() || maLabels.key_comp()(nPointIdx, itr->first)) + { + // No object exists at this point index position. Insert a new one. + XclImpChTextRef p(new XclImpChText(GetChRoot())); + itr = maLabels.insert(itr, XclImpChTextMap::value_type(nPointIdx, p)); + } + return &itr->second; + } return 0; } @@ -2413,10 +2441,10 @@ Reference< XLegend > XclImpChLegend::CreateLegend() const aLegendProp.SetBoolProperty( EXC_CHPROP_SHOW, true ); // frame properties - if( mxFrame.is() ) + if( mxFrame ) mxFrame->Convert( aLegendProp ); // text properties - if( mxText.is() ) + if( mxText ) mxText->ConvertFont( aLegendProp ); /* Legend position and size. Default positions are used only if the @@ -2438,7 +2466,7 @@ Reference< XLegend > XclImpChLegend::CreateLegend() const // no automatic position: try to find the correct position and size if( eApiPos == cssc2::LegendPosition_CUSTOM ) { - const XclChFramePos* pFramePos = mxFramePos.is() ? &mxFramePos->GetFramePosData() : 0; + const XclChFramePos* pFramePos = mxFramePos ? &mxFramePos->GetFramePosData() : 0; /* Legend position. Only the settings from the CHFRAMEPOS record are used by Excel, the position in the CHLEGEND record will be @@ -2567,20 +2595,20 @@ void XclImpChTypeGroup::Finalize() maType.Finalize( bStockChart ); // extended type info - maTypeInfo.Set( maType.GetTypeInfo(), mxChart3d.is(), false ); + maTypeInfo.Set( maType.GetTypeInfo(), mxChart3d, false ); // reverse series order for some unstacked 2D chart types if( maTypeInfo.mbReverseSeries && !Is3dChart() && !maType.IsStacked() && !maType.IsPercent() ) ::std::reverse( maSeries.begin(), maSeries.end() ); // update chart type group format, may depend on chart type finalized above - if( mxGroupFmt.is() ) + if( mxGroupFmt ) mxGroupFmt->UpdateGroupFormat( maTypeInfo ); } void XclImpChTypeGroup::AddSeries( XclImpChSeriesRef xSeries ) { - if( xSeries.is() ) + if( xSeries ) maSeries.push_back( xSeries ); // store first inserted series separately, series order may be reversed later if( !mxFirstSeries ) @@ -2611,22 +2639,23 @@ bool XclImpChTypeGroup::HasVarPointFormat() const bool XclImpChTypeGroup::HasConnectorLines() const { // existence of connector lines (only in stacked bar charts) - bool bAnyStacked = maType.IsStacked() || maType.IsPercent(); - XclImpChLineFormatRef xConnLine = maChartLines.get( EXC_CHCHARTLINE_CONNECT ); - return bAnyStacked && (maTypeInfo.meTypeCateg == EXC_CHTYPECATEG_BAR) && xConnLine.is() && xConnLine->HasLine(); + if ( !(maType.IsStacked() || maType.IsPercent()) || (maTypeInfo.meTypeCateg != EXC_CHTYPECATEG_BAR) ) + return false; + XclImpChLineFormatMap::const_iterator xConLine = maChartLines.find( EXC_CHCHARTLINE_CONNECT ); + return ( xConLine != maChartLines.end() && xConLine->second->HasLine() ); } const String& XclImpChTypeGroup::GetSingleSeriesTitle() const { // no automatic title for series with trendlines or error bars // pie charts always show an automatic title, even if more series exist - return (mxFirstSeries.is() && !mxFirstSeries->HasChildSeries() && (maTypeInfo.mbSingleSeriesVis || (maSeries.size() == 1))) ? + return (mxFirstSeries && !mxFirstSeries->HasChildSeries() && (maTypeInfo.mbSingleSeriesVis || (maSeries.size() == 1))) ? mxFirstSeries->GetTitle() : String::EmptyString(); } void XclImpChTypeGroup::ConvertChart3d( ScfPropertySet& rPropSet ) const { - if( mxChart3d.is() ) + if( mxChart3d ) mxChart3d->Convert( rPropSet, Is3dWallChart() ); } @@ -2663,24 +2692,24 @@ Reference< XLabeledDataSequence > XclImpChTypeGroup::CreateCategSequence() const { Reference< XLabeledDataSequence > xLabeledSeq; // create category sequence from first visible series - if( mxFirstSeries.is() ) + if( mxFirstSeries ) xLabeledSeq = mxFirstSeries->CreateCategSequence( EXC_CHPROP_ROLE_CATEG ); return xLabeledSeq; } void XclImpChTypeGroup::ReadChDropBar( XclImpStream& rStrm ) { - sal_uInt16 nDropBar = EXC_CHDROPBAR_NONE; - if( !maDropBars.has( EXC_CHDROPBAR_UP ) ) - nDropBar = EXC_CHDROPBAR_UP; - else if( !maDropBars.has( EXC_CHDROPBAR_DOWN ) ) - nDropBar = EXC_CHDROPBAR_DOWN; - - if( nDropBar != EXC_CHDROPBAR_NONE ) + if (maDropBars.find(EXC_CHDROPBAR_UP) == maDropBars.end()) + { + XclImpChDropBarRef p(new XclImpChDropBar(EXC_CHDROPBAR_UP)); + p->ReadRecordGroup(rStrm); + maDropBars.insert(XclImpChDropBarMap::value_type(EXC_CHDROPBAR_UP, p)); + } + else if(maDropBars.find(EXC_CHDROPBAR_DOWN) == maDropBars.end()) { - XclImpChDropBarRef xDropBar( new XclImpChDropBar( nDropBar ) ); - xDropBar->ReadRecordGroup( rStrm ); - maDropBars[ nDropBar ] = xDropBar; + XclImpChDropBarRef p(new XclImpChDropBar(EXC_CHDROPBAR_DOWN)); + p->ReadRecordGroup(rStrm); + maDropBars.insert(XclImpChDropBarMap::value_type(EXC_CHDROPBAR_DOWN, p)); } } @@ -2689,8 +2718,8 @@ void XclImpChTypeGroup::ReadChChartLine( XclImpStream& rStrm ) sal_uInt16 nLineId = rStrm.ReaduInt16(); if( (rStrm.GetNextRecId() == EXC_ID_CHLINEFORMAT) && rStrm.StartNextRecord() ) { - XclImpChLineFormatRef xLineFmt( new XclImpChLineFormat ); - xLineFmt->ReadChLineFormat( rStrm ); + XclImpChLineFormat xLineFmt; + xLineFmt.ReadChLineFormat( rStrm ); maChartLines[ nLineId ] = xLineFmt; } } @@ -2792,16 +2821,16 @@ void XclImpChTypeGroup::CreateStockSeries( Reference< XChartType > xChartType, s aTypeProp.SetBoolProperty( EXC_CHPROP_SHOWFIRST, HasDropBars() ); aTypeProp.SetBoolProperty( EXC_CHPROP_SHOWHIGHLOW, true ); // hi-lo line format - XclImpChLineFormatRef xHiLoLine = maChartLines.get( EXC_CHCHARTLINE_HILO ); - if( xHiLoLine.is() ) + XclImpChLineFormatMap::const_iterator xHiLoLine = maChartLines.find( EXC_CHCHARTLINE_HILO ); + if ( xHiLoLine != maChartLines.end() ) { ScfPropertySet aSeriesProp( xDataSeries ); - xHiLoLine->Convert( GetChRoot(), aSeriesProp, EXC_CHOBJTYPE_HILOLINE ); + xHiLoLine->second->Convert( GetChRoot(), aSeriesProp, EXC_CHOBJTYPE_HILOLINE ); } // white dropbar format XclImpChDropBarRef xUpBar = maDropBars.get( EXC_CHDROPBAR_UP ); Reference< XPropertySet > xWhitePropSet; - if( xUpBar.is() && aTypeProp.GetProperty( xWhitePropSet, EXC_CHPROP_WHITEDAY ) ) + if( xUpBar && aTypeProp.GetProperty( xWhitePropSet, EXC_CHPROP_WHITEDAY ) ) { ScfPropertySet aBarProp( xWhitePropSet ); xUpBar->Convert( GetChRoot(), aBarProp ); @@ -2809,7 +2838,7 @@ void XclImpChTypeGroup::CreateStockSeries( Reference< XChartType > xChartType, s // black dropbar format XclImpChDropBarRef xDownBar = maDropBars.get( EXC_CHDROPBAR_DOWN ); Reference< XPropertySet > xBlackPropSet; - if( xDownBar.is() && aTypeProp.GetProperty( xBlackPropSet, EXC_CHPROP_BLACKDAY ) ) + if( xDownBar && aTypeProp.GetProperty( xBlackPropSet, EXC_CHPROP_BLACKDAY ) ) { ScfPropertySet aBarProp( xBlackPropSet ); xDownBar->Convert( GetChRoot(), aBarProp ); @@ -3065,9 +3094,9 @@ void XclImpChAxis::Finalize() if( !mxValueRange ) mxValueRange.reset( new XclImpChValueRange( GetChRoot() ) ); // remove invisible grid lines completely - if( mxMajorGrid.is() && !mxMajorGrid->HasLine() ) + if( mxMajorGrid && !mxMajorGrid->HasLine() ) mxMajorGrid.reset(); - if( mxMinorGrid.is() && !mxMinorGrid->HasLine() ) + if( mxMinorGrid && !mxMinorGrid->HasLine() ) mxMinorGrid.reset(); // default tick settings different in OOChart and Excel if( !mxTick ) @@ -3087,17 +3116,17 @@ void XclImpChAxis::Finalize() sal_uInt16 XclImpChAxis::GetFontIndex() const { - return mxFont.is() ? mxFont->GetFontIndex() : EXC_FONT_NOTFOUND; + return mxFont ? mxFont->GetFontIndex() : EXC_FONT_NOTFOUND; } Color XclImpChAxis::GetFontColor() const { - return mxTick.is() ? mxTick->GetFontColor() : GetFontAutoColor(); + return mxTick ? mxTick->GetFontColor() : GetFontAutoColor(); } sal_uInt16 XclImpChAxis::GetRotation() const { - return mxTick.is() ? mxTick->GetRotation() : EXC_CHART_AUTOROTATION; + return mxTick ? mxTick->GetRotation() : EXC_CHART_AUTOROTATION; } Reference< XAxis > XclImpChAxis::CreateAxis( const XclImpChTypeGroup& rTypeGroup, const XclImpChAxis* pCrossingAxis ) const @@ -3111,10 +3140,10 @@ Reference< XAxis > XclImpChAxis::CreateAxis( const XclImpChTypeGroup& rTypeGroup aAxisProp.SetBoolProperty( EXC_CHPROP_SHOW, IsActivated() ); // axis line properties - if( mxAxisLine.is() ) + if( mxAxisLine ) mxAxisLine->Convert( GetChRoot(), aAxisProp, EXC_CHOBJTYPE_AXISLINE ); // axis ticks properties - if( mxTick.is() ) + if( mxTick ) mxTick->Convert( aAxisProp ); // axis caption text -------------------------------------------------- @@ -3126,7 +3155,7 @@ Reference< XAxis > XclImpChAxis::CreateAxis( const XclImpChTypeGroup& rTypeGroup if( bHasLabels ) { // font settings from CHFONT record or from default text - if( mxFont.is() ) + if( mxFont ) ConvertFontBase( GetChRoot(), aAxisProp ); else if( const XclImpChText* pDefText = GetChartData().GetDefaultText( EXC_CHTEXTTYPE_AXISLABEL ).get() ) pDefText->ConvertFont( aAxisProp ); @@ -3191,7 +3220,7 @@ Reference< XAxis > XclImpChAxis::CreateAxis( const XclImpChTypeGroup& rTypeGroup // main grid ScfPropertySet aGridProp( xAxis->getGridProperties() ); aGridProp.SetBoolProperty( EXC_CHPROP_SHOW, HasMajorGrid() ); - if( mxMajorGrid.is() ) + if( mxMajorGrid ) mxMajorGrid->Convert( GetChRoot(), aGridProp, EXC_CHOBJTYPE_GRIDLINE ); // sub grid Sequence< Reference< XPropertySet > > aSubGridPropSeq = xAxis->getSubGridProperties(); @@ -3199,7 +3228,7 @@ Reference< XAxis > XclImpChAxis::CreateAxis( const XclImpChTypeGroup& rTypeGroup { ScfPropertySet aSubGridProp( aSubGridPropSeq[ 0 ] ); aSubGridProp.SetBoolProperty( EXC_CHPROP_SHOW, HasMinorGrid() ); - if( mxMinorGrid.is() ) + if( mxMinorGrid ) mxMinorGrid->Convert( GetChRoot(), aSubGridProp, EXC_CHOBJTYPE_GRIDLINE ); } @@ -3213,7 +3242,7 @@ Reference< XAxis > XclImpChAxis::CreateAxis( const XclImpChTypeGroup& rTypeGroup void XclImpChAxis::ConvertWall( ScfPropertySet& rPropSet ) const { - if( mxWallFrame.is() ) + if( mxWallFrame ) mxWallFrame->Convert( rPropSet ); } @@ -3254,7 +3283,7 @@ void XclImpChAxis::ReadChAxisLine( XclImpStream& rStrm ) pxLineFmt->reset( new XclImpChLineFormat ); (*pxLineFmt)->ReadChLineFormat( rStrm ); } - else if( bWallFrame && mxWallFrame.is() ) + else if( bWallFrame && mxWallFrame ) { mxWallFrame->ReadSubRecord( rStrm ); } @@ -3324,7 +3353,8 @@ void XclImpChAxesSet::Finalize() XclImpChTypeGroupRef xTypeGroup = aIt->second; xTypeGroup->Finalize(); if( xTypeGroup->IsValidGroup() ) - aValidGroups[ aIt->first ] = xTypeGroup; + aValidGroups.insert( + XclImpChTypeGroupMap::value_type(aIt->first, xTypeGroup)); } maTypeGroups.swap( aValidGroups ); } @@ -3341,9 +3371,9 @@ void XclImpChAxesSet::Finalize() mxZAxis.reset( new XclImpChAxis( GetChRoot(), EXC_CHAXIS_Z ) ); // finalize axes - if( mxXAxis.is() ) mxXAxis->Finalize(); - if( mxYAxis.is() ) mxYAxis->Finalize(); - if( mxZAxis.is() ) mxZAxis->Finalize(); + if( mxXAxis ) mxXAxis->Finalize(); + if( mxYAxis ) mxYAxis->Finalize(); + if( mxZAxis ) mxZAxis->Finalize(); // finalize axis titles XclImpChTextRef xDefText = GetChartData().GetDefaultText( EXC_CHTEXTTYPE_AXISTITLE ); @@ -3414,11 +3444,11 @@ void XclImpChAxesSet::Convert( Reference< XDiagram > xDiagram ) const void XclImpChAxesSet::ConvertTitlePositions() const { - if( mxXAxisTitle.is() ) + if( mxXAxisTitle ) mxXAxisTitle->ConvertTitlePosition( XclChTextKey( EXC_CHTEXTTYPE_AXISTITLE, maData.mnAxesSetId, EXC_CHAXIS_X ) ); - if( mxYAxisTitle.is() ) + if( mxYAxisTitle ) mxYAxisTitle->ConvertTitlePosition( XclChTextKey( EXC_CHTEXTTYPE_AXISTITLE, maData.mnAxesSetId, EXC_CHAXIS_Y ) ); - if( mxZAxisTitle.is() ) + if( mxZAxisTitle ) mxZAxisTitle->ConvertTitlePosition( XclChTextKey( EXC_CHTEXTTYPE_AXISTITLE, maData.mnAxesSetId, EXC_CHAXIS_Z ) ); } @@ -3461,7 +3491,14 @@ void XclImpChAxesSet::ReadChTypeGroup( XclImpStream& rStrm ) { XclImpChTypeGroupRef xTypeGroup( new XclImpChTypeGroup( GetChRoot() ) ); xTypeGroup->ReadRecordGroup( rStrm ); - maTypeGroups[ xTypeGroup->GetGroupIdx() ] = xTypeGroup; + sal_uInt16 nGroupIdx = xTypeGroup->GetGroupIdx(); + XclImpChTypeGroupMap::iterator itr = maTypeGroups.lower_bound(nGroupIdx); + if (itr != maTypeGroups.end() && !maTypeGroups.key_comp()(nGroupIdx, itr->first)) + // Overwrite the existing element. + itr->second = xTypeGroup; + else + maTypeGroups.insert( + itr, XclImpChTypeGroupMap::value_type(nGroupIdx, xTypeGroup)); } Reference< XCoordinateSystem > XclImpChAxesSet::CreateCoordSystem( Reference< XDiagram > xDiagram ) const @@ -3484,7 +3521,7 @@ Reference< XCoordinateSystem > XclImpChAxesSet::CreateCoordSystem( Reference< XD if( !xCoordSystem.is() ) { XclImpChTypeGroupRef xTypeGroup = GetFirstTypeGroup(); - if( xTypeGroup.is() ) + if( xTypeGroup ) { xCoordSystem = xTypeGroup->CreateCoordSystem(); // convert 3d chart settings @@ -3521,14 +3558,14 @@ void XclImpChAxesSet::ConvertAxis( XclImpChAxisRef xChAxis, XclImpChTextRef xChAxisTitle, Reference< XCoordinateSystem > xCoordSystem, const XclImpChAxis* pCrossingAxis ) const { - if( xChAxis.is() ) + if( xChAxis ) { // create and attach the axis object Reference< XAxis > xAxis = CreateAxis( *xChAxis, pCrossingAxis ); if( xAxis.is() ) { // create and attach the axis title - if( xChAxisTitle.is() ) try + if( xChAxisTitle ) try { Reference< XTitled > xTitled( xAxis, UNO_QUERY_THROW ); Reference< XTitle > xTitle( xChAxisTitle->CreateTitle(), UNO_SET_THROW ); @@ -3565,21 +3602,21 @@ Reference< XAxis > XclImpChAxesSet::CreateAxis( const XclImpChAxis& rChAxis, con void XclImpChAxesSet::ConvertBackground( Reference< XDiagram > xDiagram ) const { XclImpChTypeGroupRef xTypeGroup = GetFirstTypeGroup(); - if( xTypeGroup.is() && xTypeGroup->Is3dWallChart() ) + if( xTypeGroup && xTypeGroup->Is3dWallChart() ) { // wall/floor formatting (3D charts) - if( mxXAxis.is() ) + if( mxXAxis ) { ScfPropertySet aWallProp( xDiagram->getWall() ); mxXAxis->ConvertWall( aWallProp ); } - if( mxYAxis.is() ) + if( mxYAxis ) { ScfPropertySet aFloorProp( xDiagram->getFloor() ); mxYAxis->ConvertWall( aFloorProp ); } } - else if( mxPlotFrame.is() ) + else if( mxPlotFrame ) { // diagram background formatting ScfPropertySet aWallProp( xDiagram->getWall() ); @@ -3642,7 +3679,14 @@ void XclImpChChart::ReadChDefaultText( XclImpStream& rStrm ) { XclImpChTextRef xText( new XclImpChText( GetChRoot() ) ); xText->ReadRecordGroup( rStrm ); - maDefTexts[ nTextId ] = xText; + XclImpChTextMap::iterator itr = maDefTexts.lower_bound(nTextId); + if (itr != maDefTexts.end() && !(maDefTexts.key_comp()(nTextId, itr->first))) + { + // Key exists. Update the existing element. + itr->second = xText; + } + else + maDefTexts.insert(itr, XclImpChTextMap::value_type(nTextId, xText)); } } @@ -3652,11 +3696,15 @@ void XclImpChChart::ReadChDataFormat( XclImpStream& rStrm ) xDataFmt->ReadRecordGroup( rStrm ); if( xDataFmt->GetPointPos().mnSeriesIdx <= EXC_CHSERIES_MAXSERIES ) { - XclImpChDataFormatRef& rxMapFmt = maDataFmts[ xDataFmt->GetPointPos() ]; + const XclChDataPointPos& rPos = xDataFmt->GetPointPos(); + XclImpChDataFormatMap::iterator itr = maDataFmts.lower_bound(rPos); + if (itr == maDataFmts.end() || maDataFmts.key_comp()(rPos, itr->first)) + // No element exists for this data point. Insert it. + maDataFmts.insert( + itr, XclImpChDataFormatMap::value_type(rPos, xDataFmt)); + /* Do not overwrite existing data format group, Excel always uses the first data format group occuring in any CHSERIES group. */ - if( !rxMapFmt ) - rxMapFmt = xDataFmt; } } @@ -3687,7 +3735,9 @@ XclImpChTextRef XclImpChChart::GetDefaultText( XclChTextType eTextType ) const case EXC_CHTEXTTYPE_AXISLABEL: nDefTextId = bBiff8 ? EXC_CHDEFTEXT_AXESSET : EXC_CHDEFTEXT_GLOBAL; break; case EXC_CHTEXTTYPE_DATALABEL: nDefTextId = bBiff8 ? EXC_CHDEFTEXT_AXESSET : EXC_CHDEFTEXT_GLOBAL; break; } - return maDefTexts.get( nDefTextId ); + + XclImpChTextMap::const_iterator itr = maDefTexts.find(nDefTextId); + return itr == maDefTexts.end() ? XclImpChTextRef() : itr->second; } bool XclImpChChart::IsManualPlotArea() const @@ -3703,14 +3753,14 @@ void XclImpChChart::Convert( Reference< XChartDocument > xChartDoc, InitConversion( xChartDoc, rChartRect ); // chart frame formatting - if( mxFrame.is() ) + if( mxFrame ) { ScfPropertySet aFrameProp( xChartDoc->getPageBackground() ); mxFrame->Convert( aFrameProp ); } // chart title - if( mxTitle.is() ) try + if( mxTitle ) try { Reference< XTitled > xTitled( xChartDoc, UNO_QUERY_THROW ); Reference< XTitle > xTitle( mxTitle->CreateTitle(), UNO_SET_THROW ); @@ -3730,7 +3780,7 @@ void XclImpChChart::Convert( Reference< XChartDocument > xChartDoc, mxSecnAxesSet->Convert( xDiagram ); // legend - if( xDiagram.is() && mxLegend.is() ) + if( xDiagram.is() && mxLegend ) xDiagram->setLegend( mxLegend->CreateLegend() ); /* Following all conversions needing the old Chart1 API that involves full @@ -3749,7 +3799,7 @@ void XclImpChChart::Convert( Reference< XChartDocument > xChartDoc, // plot area position and size (there is no real automatic mode in BIFF5 charts) XclImpChFramePosRef xPlotAreaPos = mxPrimAxesSet->GetPlotAreaFramePos(); - if( IsManualPlotArea() && xPlotAreaPos.is() ) try + if( IsManualPlotArea() && xPlotAreaPos ) try { const XclChFramePos& rFramePos = xPlotAreaPos->GetFramePosData(); if( (rFramePos.mnTLMode == EXC_CHFRAMEPOS_PARENT) && (rFramePos.mnBRMode == EXC_CHFRAMEPOS_PARENT) ) @@ -3771,7 +3821,7 @@ void XclImpChChart::Convert( Reference< XChartDocument > xChartDoc, } // positions of all title objects - if( mxTitle.is() ) + if( mxTitle ) mxTitle->ConvertTitlePosition( XclChTextKey( EXC_CHTEXTTYPE_TITLE ) ); mxPrimAxesSet->ConvertTitlePositions(); mxSecnAxesSet->ConvertTitlePositions(); @@ -3784,7 +3834,7 @@ void XclImpChChart::Convert( Reference< XChartDocument > xChartDoc, ScDocument& rDoc = GetRoot().GetDoc(); if( ScChartListenerCollection* pChartCollection = rDoc.GetChartListenerCollection() ) { - ::std::auto_ptr< ::std::vector< ScSharedTokenRef > > xRefTokens( new ::std::vector< ScSharedTokenRef > ); + ::std::auto_ptr< ::std::vector< ScTokenRef > > xRefTokens( new ::std::vector< ScTokenRef > ); for( XclImpChSeriesVec::const_iterator aIt = maSeries.begin(), aEnd = maSeries.end(); aIt != aEnd; ++aIt ) (*aIt)->FillAllSourceLinks( *xRefTokens ); if( !xRefTokens->empty() ) @@ -3848,7 +3898,7 @@ void XclImpChChart::Finalize() mxLegend = mxPrimAxesSet->GetLegend(); if( !mxLegend ) mxLegend = mxSecnAxesSet->GetLegend(); - if( mxLegend.is() ) + if( mxLegend ) mxLegend->Finalize(); // axes sets, updates chart type group default formats -> must be called before FinalizeDataFormats() mxPrimAxesSet->Finalize(); @@ -3916,7 +3966,7 @@ void XclImpChChart::FinalizeTitle() // automatic title from first series name (if there are no series on secondary axes set) if( !mxSecnAxesSet->IsValidAxesSet() ) aAutoTitle = mxPrimAxesSet->GetSingleSeriesTitle(); - if( mxTitle.is() || (aAutoTitle.Len() > 0) ) + if( mxTitle || (aAutoTitle.Len() > 0) ) { if( !mxTitle ) mxTitle.reset( new XclImpChText( GetChRoot() ) ); @@ -4115,8 +4165,8 @@ void XclImpChart::UpdateObjFrame( const XclObjLineData& rLineData, const XclObjF sal_Size XclImpChart::GetProgressSize() const { return - (mxChartData.is() ? mxChartData->GetProgressSize() : 0) + - (mxChartDrawing.is() ? mxChartDrawing->GetProgressSize() : 0); + (mxChartData ? mxChartData->GetProgressSize() : 0) + + (mxChartDrawing ? mxChartDrawing->GetProgressSize() : 0); } void XclImpChart::Convert( Reference< XModel > xModel, XclImpDffConverter& rDffConv, const OUString& rObjName, const Rectangle& rChartRect ) const @@ -4124,9 +4174,9 @@ void XclImpChart::Convert( Reference< XModel > xModel, XclImpDffConverter& rDffC Reference< XChartDocument > xChartDoc( xModel, UNO_QUERY ); if( xChartDoc.is() ) { - if( mxChartData.is() ) + if( mxChartData ) mxChartData->Convert( xChartDoc, rDffConv, rObjName, rChartRect ); - if( mxChartDrawing.is() ) + if( mxChartDrawing ) mxChartDrawing->ConvertObjects( rDffConv, xModel, rChartRect ); } } diff --git a/sc/source/filter/excel/xicontent.cxx b/sc/source/filter/excel/xicontent.cxx index 3b7f3e0f29fd..95ca683234e9 100644 --- a/sc/source/filter/excel/xicontent.cxx +++ b/sc/source/filter/excel/xicontent.cxx @@ -248,7 +248,6 @@ String XclImpHyperlink::ReadEmbeddedData( XclImpStream& rStrm ) DBG_ASSERT( aGuid == XclTools::maGuidStdLink, "XclImpHyperlink::ReadEmbeddedData - unknown header GUID" ); - sal_uInt16 nLevel = 0; // counter for level to climb down in path ::std::auto_ptr< String > xLongName; // link / file name ::std::auto_ptr< String > xShortName; // 8.3-representation of file name ::std::auto_ptr< String > xTextMark; // text mark @@ -278,6 +277,7 @@ String XclImpHyperlink::ReadEmbeddedData( XclImpStream& rStrm ) if( aGuid == XclTools::maGuidFileMoniker ) { + sal_uInt16 nLevel = 0; // counter for level to climb down in path rStrm >> nLevel; xShortName.reset( new String ); lclAppendString32( *xShortName, rStrm, false ); @@ -438,8 +438,9 @@ void XclImpLabelranges::ReadLabelranges( XclImpStream& rStrm ) ScRangeList aRowScRanges; rAddrConv.ConvertRangeList( aRowScRanges, aRowXclRanges, nScTab, false ); xLabelRangesRef = rDoc.GetRowNameRangesRef(); - for( pScRange = aRowScRanges.First(); pScRange; pScRange = aRowScRanges.Next() ) + for ( size_t i = 0, nRanges = aRowScRanges.size(); i < nRanges; ++i ) { + pScRange = aRowScRanges[ i ]; ScRange aDataRange( *pScRange ); if( aDataRange.aEnd.Col() < MAXCOL ) { @@ -458,8 +459,10 @@ void XclImpLabelranges::ReadLabelranges( XclImpStream& rStrm ) ScRangeList aColScRanges; rAddrConv.ConvertRangeList( aColScRanges, aColXclRanges, nScTab, false ); xLabelRangesRef = rDoc.GetColNameRangesRef(); - for( pScRange = aColScRanges.First(); pScRange; pScRange = aColScRanges.Next() ) + + for ( size_t i = 0, nRanges = aColScRanges.size(); i < nRanges; ++i ) { + pScRange = aColScRanges[ i ]; ScRange aDataRange( *pScRange ); if( aDataRange.aEnd.Row() < MAXROW ) { @@ -508,7 +511,7 @@ void XclImpCondFormat::ReadCF( XclImpStream& rStrm ) } // entire conditional format outside of valid range? - if( !maRanges.Count() ) + if( maRanges.empty() ) return; sal_uInt8 nType, nOperator; @@ -594,7 +597,7 @@ void XclImpCondFormat::ReadCF( XclImpStream& rStrm ) // *** formulas *** - const ScAddress& rPos = maRanges.GetObject( 0 )->aStart; // assured above that maRanges is not empty + const ScAddress& rPos = maRanges.front()->aStart; // assured above that maRanges is not empty ExcelToSc& rFmlaConv = GetOldFmlaConverter(); ::std::auto_ptr< ScTokenArray > xTokArr1; @@ -643,8 +646,9 @@ void XclImpCondFormat::Apply() aPattern.GetItemSet().Put( SfxUInt32Item( ATTR_CONDITIONAL, nKey ) ); // maRanges contains only valid cell ranges - for( const ScRange* pScRange = maRanges.First(); pScRange; pScRange = maRanges.Next() ) + for ( size_t i = 0, nRanges = maRanges.size(); i < nRanges; ++i ) { + const ScRange* pScRange = maRanges[ i ]; rDoc.ApplyPatternAreaTab( pScRange->aStart.Col(), pScRange->aStart.Row(), pScRange->aEnd.Col(), pScRange->aEnd.Row(), @@ -662,23 +666,23 @@ XclImpCondFormatManager::XclImpCondFormatManager( const XclImpRoot& rRoot ) : void XclImpCondFormatManager::ReadCondfmt( XclImpStream& rStrm ) { - XclImpCondFormat* pFmt = new XclImpCondFormat( GetRoot(), maCondFmtList.Count() ); + XclImpCondFormat* pFmt = new XclImpCondFormat( GetRoot(), maCondFmtList.size() ); pFmt->ReadCondfmt( rStrm ); - maCondFmtList.Append( pFmt ); + maCondFmtList.push_back( pFmt ); } void XclImpCondFormatManager::ReadCF( XclImpStream& rStrm ) { - DBG_ASSERT( !maCondFmtList.Empty(), "XclImpCondFormatManager::ReadCF - CF without leading CONDFMT" ); - if( !maCondFmtList.Empty() ) - maCondFmtList.GetObject( maCondFmtList.Count() - 1 )->ReadCF( rStrm ); + DBG_ASSERT( !maCondFmtList.empty(), "XclImpCondFormatManager::ReadCF - CF without leading CONDFMT" ); + if( !maCondFmtList.empty() ) + maCondFmtList.back().ReadCF( rStrm ); } void XclImpCondFormatManager::Apply() { - for( XclImpCondFormat* pFmt = maCondFmtList.First(); pFmt; pFmt = maCondFmtList.Next() ) - pFmt->Apply(); - maCondFmtList.Clear(); + for( XclImpCondFmtList::iterator itFmt = maCondFmtList.begin(); itFmt != maCondFmtList.end(); ++itFmt ) + itFmt->Apply(); + maCondFmtList.clear(); } // Data Validation ============================================================ @@ -776,7 +780,7 @@ void XclImpValidationManager::ReadDV( XclImpStream& rStrm ) rRoot.GetAddressConverter().ConvertRangeList( aScRanges, aXclRanges, nScTab, true ); // only continue if there are valid ranges - if ( !aScRanges.Count() ) + if ( aScRanges.empty() ) return; bool bIsValid = true; // valid settings in flags field @@ -816,7 +820,7 @@ void XclImpValidationManager::ReadDV( XclImpStream& rStrm ) // first range for base address for relative references - const ScRange& rScRange = *aScRanges.GetObject( 0 ); // aScRanges is not empty + const ScRange& rScRange = *aScRanges.front(); // aScRanges is not empty // process string list of a list validity (convert to list of string tokens) if( xTokArr1.get() && (eValMode == SC_VALID_LIST) && ::get_flag( nFlags, EXC_DV_STRINGLIST ) ) @@ -864,9 +868,12 @@ void XclImpValidationManager::Apply() aPattern.GetItemSet().Put( SfxUInt32Item( ATTR_VALIDDATA, nHandle ) ); // apply all ranges - for( const ScRange* pScRange = rItem.maRanges.First(); pScRange; pScRange = rItem.maRanges.Next() ) + for ( size_t i = 0, nRanges = rItem.maRanges.size(); i < nRanges; ++i ) + { + const ScRange* pScRange = rItem.maRanges[ i ]; rDoc.ApplyPatternAreaTab( pScRange->aStart.Col(), pScRange->aStart.Row(), pScRange->aEnd.Col(), pScRange->aEnd.Row(), pScRange->aStart.Tab(), aPattern ); + } } maDVItems.clear(); } @@ -980,7 +987,7 @@ void XclImpWebQueryBuffer::ReadQsi( XclImpStream& rStrm ) { ScRange aRange; if( pRangeData->IsReference( aRange ) ) - maWQList.Append( new XclImpWebQuery( aRange ) ); + maWQList.push_back( new XclImpWebQuery( aRange ) ); } } } @@ -992,34 +999,34 @@ void XclImpWebQueryBuffer::ReadQsi( XclImpStream& rStrm ) void XclImpWebQueryBuffer::ReadParamqry( XclImpStream& rStrm ) { - if( XclImpWebQuery* pQuery = maWQList.Last() ) - pQuery->ReadParamqry( rStrm ); + if (!maWQList.empty()) + maWQList.back().ReadParamqry( rStrm ); } void XclImpWebQueryBuffer::ReadWqstring( XclImpStream& rStrm ) { - if( XclImpWebQuery* pQuery = maWQList.Last() ) - pQuery->ReadWqstring( rStrm ); + if (!maWQList.empty()) + maWQList.back().ReadWqstring( rStrm ); } void XclImpWebQueryBuffer::ReadWqsettings( XclImpStream& rStrm ) { - if( XclImpWebQuery* pQuery = maWQList.Last() ) - pQuery->ReadWqsettings( rStrm ); + if (!maWQList.empty()) + maWQList.back().ReadWqsettings( rStrm ); } void XclImpWebQueryBuffer::ReadWqtables( XclImpStream& rStrm ) { - if( XclImpWebQuery* pQuery = maWQList.Last() ) - pQuery->ReadWqtables( rStrm ); + if (!maWQList.empty()) + maWQList.back().ReadWqtables( rStrm ); } void XclImpWebQueryBuffer::Apply() { ScDocument& rDoc = GetDoc(); String aFilterName( RTL_CONSTASCII_USTRINGPARAM( EXC_WEBQRY_FILTER ) ); - for( XclImpWebQuery* pQuery = maWQList.First(); pQuery; pQuery = maWQList.Next() ) - pQuery->Apply( rDoc, aFilterName ); + for( XclImpWebQueryList::iterator itQuery = maWQList.begin(); itQuery != maWQList.end(); ++itQuery ) + itQuery->Apply( rDoc, aFilterName ); } // Decryption ================================================================= @@ -1124,11 +1131,11 @@ ErrCode XclImpDecryptHelper::ReadFilepass( XclImpStream& rStrm ) rStrm.SetDecrypter( xDecr ); // request and verify a password (decrypter implements IDocPasswordVerifier) - if( xDecr.is() ) + if( xDecr ) rStrm.GetRoot().RequestPassword( *xDecr ); // return error code (success, wrong password, etc.) - return xDecr.is() ? xDecr->GetError() : EXC_ENCR_ERROR_UNSUPP_CRYPT; + return xDecr ? xDecr->GetError() : EXC_ENCR_ERROR_UNSUPP_CRYPT; } // Document protection ======================================================== @@ -1167,7 +1174,6 @@ void XclImpDocProtectBuffer::Apply() const auto_ptr<ScDocProtection> pProtect(new ScDocProtection); pProtect->setProtected(true); -#if ENABLE_SHEET_PROTECTION if (mnPassHash) { // 16-bit password pash. @@ -1176,7 +1182,6 @@ void XclImpDocProtectBuffer::Apply() const aPass[1] = mnPassHash & 0xFF; pProtect->setPasswordHash(aPass, PASSHASH_XL); } -#endif // document protection options pProtect->setOption(ScDocProtection::STRUCTURE, mbDocProtect); @@ -1272,7 +1277,6 @@ void XclImpSheetProtectBuffer::Apply() const auto_ptr<ScTableProtection> pProtect(new ScTableProtection); pProtect->setProtected(true); -#if ENABLE_SHEET_PROTECTION // 16-bit hash password const sal_uInt16 nHash = itr->second.mnPasswordHash; if (nHash) @@ -1282,7 +1286,6 @@ void XclImpSheetProtectBuffer::Apply() const aPass[1] = nHash & 0xFF; pProtect->setPasswordHash(aPass, PASSHASH_XL); } -#endif // sheet protection options const sal_uInt16 nOptions = itr->second.mnOptions; diff --git a/sc/source/filter/excel/xiescher.cxx b/sc/source/filter/excel/xiescher.cxx index b96b8d6b5e87..fc84aeb6aba5 100644 --- a/sc/source/filter/excel/xiescher.cxx +++ b/sc/source/filter/excel/xiescher.cxx @@ -84,6 +84,7 @@ #include <editeng/eeitem.hxx> #include <editeng/colritem.hxx> #include <svx/xflclit.hxx> +#include <sal/macros.h> #include <editeng/adjitem.hxx> #include <svx/xlineit.hxx> #include <svx/xlinjoit.hxx> @@ -113,6 +114,7 @@ #include "scextopt.hxx" #include "namebuff.hxx" +#include <boost/shared_ptr.hpp> using ::rtl::OUString; using ::rtl::OUStringBuffer; @@ -212,7 +214,7 @@ XclImpDrawObjBase::~XclImpDrawObjBase() { } -/*static*/ XclImpDrawObjRef XclImpDrawObjBase::ReadObj3( const XclImpRoot& rRoot, XclImpStream& rStrm ) +XclImpDrawObjRef XclImpDrawObjBase::ReadObj3( const XclImpRoot& rRoot, XclImpStream& rStrm ) { XclImpDrawObjRef xDrawObj; @@ -244,7 +246,7 @@ XclImpDrawObjBase::~XclImpDrawObjBase() return xDrawObj; } -/*static*/ XclImpDrawObjRef XclImpDrawObjBase::ReadObj4( const XclImpRoot& rRoot, XclImpStream& rStrm ) +XclImpDrawObjRef XclImpDrawObjBase::ReadObj4( const XclImpRoot& rRoot, XclImpStream& rStrm ) { XclImpDrawObjRef xDrawObj; @@ -277,7 +279,7 @@ XclImpDrawObjBase::~XclImpDrawObjBase() return xDrawObj; } -/*static*/ XclImpDrawObjRef XclImpDrawObjBase::ReadObj5( const XclImpRoot& rRoot, XclImpStream& rStrm ) +XclImpDrawObjRef XclImpDrawObjBase::ReadObj5( const XclImpRoot& rRoot, XclImpStream& rStrm ) { XclImpDrawObjRef xDrawObj; @@ -320,7 +322,7 @@ XclImpDrawObjBase::~XclImpDrawObjBase() return xDrawObj; } -/*static*/ XclImpDrawObjRef XclImpDrawObjBase::ReadObj8( const XclImpRoot& rRoot, XclImpStream& rStrm ) +XclImpDrawObjRef XclImpDrawObjBase::ReadObj8( const XclImpRoot& rRoot, XclImpStream& rStrm ) { XclImpDrawObjRef xDrawObj; @@ -656,7 +658,7 @@ void XclImpDrawObjBase::ConvertFillStyle( SdrObject& rSdrObj, const XclObjFillDa { 0x88, 0x00, 0x22, 0x00, 0x88, 0x00, 0x22, 0x00 }, { 0x80, 0x00, 0x08, 0x00, 0x80, 0x00, 0x08, 0x00 } }; - const sal_uInt8* const pnPattern = sppnPatterns[ ::std::min< size_t >( rFillData.mnPattern - 2, STATIC_TABLE_SIZE( sppnPatterns ) ) ]; + const sal_uInt8* const pnPattern = sppnPatterns[ ::std::min< size_t >( rFillData.mnPattern - 2, SAL_N_ELEMENTS( sppnPatterns ) ) ]; // create 2-colored 8x8 DIB SvMemoryStream aMemStrm; aMemStrm << sal_uInt32( 12 ) << sal_Int16( 8 ) << sal_Int16( 8 ) << sal_uInt16( 1 ) << sal_uInt16( 1 ); @@ -1322,7 +1324,7 @@ void XclImpObjTextData::ReadByteString( XclImpStream& rStrm ) void XclImpObjTextData::ReadFormats( XclImpStream& rStrm ) { - if( mxString.is() ) + if( mxString ) mxString->ReadObjFormats( rStrm, maData.mnFormatSize ); else rStrm.Ignore( maData.mnFormatSize ); @@ -1384,7 +1386,7 @@ void XclImpTextObj::DoPreProcessSdrObj( XclImpDffConverter& rDffConv, SdrObject& // set text data if( SdrTextObj* pTextObj = dynamic_cast< SdrTextObj* >( &rSdrObj ) ) { - if( maTextData.mxString.is() ) + if( maTextData.mxString ) { if( maTextData.mxString->IsRich() ) { @@ -1569,7 +1571,7 @@ void XclImpChartObj::DoReadObj3( XclImpStream& rStrm, sal_uInt16 nMacroSize ) rStrm.Ignore( 18 ); ReadMacro3( rStrm, nMacroSize ); // set frame format from OBJ record, it is used if chart itself is transparent - if( mxChart.is() ) + if( mxChart ) mxChart->UpdateObjFrame( maLineData, maFillData ); } @@ -1580,7 +1582,7 @@ void XclImpChartObj::DoReadObj4( XclImpStream& rStrm, sal_uInt16 nMacroSize ) rStrm.Ignore( 18 ); ReadMacro4( rStrm, nMacroSize ); // set frame format from OBJ record, it is used if chart itself is transparent - if( mxChart.is() ) + if( mxChart ) mxChart->UpdateObjFrame( maLineData, maFillData ); } @@ -1593,7 +1595,7 @@ void XclImpChartObj::DoReadObj5( XclImpStream& rStrm, sal_uInt16 nNameLen, sal_u ReadMacro5( rStrm, nMacroSize ); ReadChartSubStream( rStrm ); // set frame format from OBJ record, it is used if chart itself is transparent - if( mxChart.is() ) + if( mxChart ) mxChart->UpdateObjFrame( maLineData, maFillData ); } @@ -1613,14 +1615,14 @@ void XclImpChartObj::DoReadObj8SubRec( XclImpStream& rStrm, sal_uInt16 nSubRecId sal_Size XclImpChartObj::DoGetProgressSize() const { - return mxChart.is() ? mxChart->GetProgressSize() : 1; + return mxChart ? mxChart->GetProgressSize() : 1; } SdrObject* XclImpChartObj::DoCreateSdrObj( XclImpDffConverter& rDffConv, const Rectangle& rAnchorRect ) const { SdrObjectPtr xSdrObj; SfxObjectShell* pDocShell = GetDocShell(); - if( rDffConv.SupportsOleObjects() && SvtModuleOptions().IsChart() && pDocShell && mxChart.is() && !mxChart->IsPivotChart() ) + if( rDffConv.SupportsOleObjects() && SvtModuleOptions().IsChart() && pDocShell && mxChart && !mxChart->IsPivotChart() ) { // create embedded chart object OUString aEmbObjName; @@ -1646,7 +1648,7 @@ SdrObject* XclImpChartObj::DoCreateSdrObj( XclImpDffConverter& rDffConv, const R void XclImpChartObj::DoPostProcessSdrObj( XclImpDffConverter& rDffConv, SdrObject& rSdrObj ) const { const SdrOle2Obj* pSdrOleObj = dynamic_cast< const SdrOle2Obj* >( &rSdrObj ); - if( mxChart.is() && pSdrOleObj ) + if( mxChart && pSdrOleObj ) { Reference< XEmbeddedObject > xEmbObj = pSdrOleObj->GetObjRef(); if( xEmbObj.is() && ::svt::EmbeddedObjectRef::TryRunningState( xEmbObj ) ) try @@ -1773,7 +1775,7 @@ void XclImpControlHelper::ApplySheetLinkProps() const if( xFactory.is() ) { // cell link - if( mxCellLink.is() ) try + if( mxCellLink ) try { Reference< XBindableValue > xBindable( xCtrlModel, UNO_QUERY_THROW ); @@ -1804,7 +1806,7 @@ void XclImpControlHelper::ApplySheetLinkProps() const } // source range - if( mxSrcRange.is() ) try + if( mxSrcRange ) try { Reference< XListEntrySink > xEntrySink( xCtrlModel, UNO_QUERY_THROW ); @@ -1858,8 +1860,11 @@ void XclImpControlHelper::ReadCellLinkFormula( XclImpStream& rStrm, bool bWithBo ScRangeList aScRanges; ReadRangeList( aScRanges, rStrm, bWithBoundSize ); // Use first cell of first range - if( const ScRange* pScRange = aScRanges.GetObject( 0 ) ) + if ( !aScRanges.empty() ) + { + const ScRange* pScRange = aScRanges.front(); mxCellLink.reset( new ScAddress( pScRange->aStart ) ); + } } void XclImpControlHelper::ReadSourceRangeFormula( XclImpStream& rStrm, bool bWithBoundSize ) @@ -1867,8 +1872,11 @@ void XclImpControlHelper::ReadSourceRangeFormula( XclImpStream& rStrm, bool bWit ScRangeList aScRanges; ReadRangeList( aScRanges, rStrm, bWithBoundSize ); // Use first range - if( const ScRange* pScRange = aScRanges.GetObject( 0 ) ) + if ( !aScRanges.empty() ) + { + const ScRange* pScRange = aScRanges.front(); mxSrcRange.reset( new ScRange( *pScRange ) ); + } } void XclImpControlHelper::DoProcessControl( ScfPropertySet& ) const @@ -1947,7 +1955,7 @@ bool XclImpTbxObjBase::FillMacroDescriptor( ScriptEventDescriptor& rDescriptor ) void XclImpTbxObjBase::ConvertFont( ScfPropertySet& rPropSet ) const { - if( maTextData.mxString.is() ) + if( maTextData.mxString ) { const XclFormatRunVec& rFormatRuns = maTextData.mxString->GetFormats(); if( rFormatRuns.empty() ) @@ -1959,7 +1967,7 @@ void XclImpTbxObjBase::ConvertFont( ScfPropertySet& rPropSet ) const void XclImpTbxObjBase::ConvertLabel( ScfPropertySet& rPropSet ) const { - if( maTextData.mxString.is() ) + if( maTextData.mxString ) { String aLabel = maTextData.mxString->GetText(); if( maTextData.maData.mnShortcut > 0 ) @@ -2377,7 +2385,7 @@ void XclImpEditObj::DoReadObj8SubRec( XclImpStream& rStrm, sal_uInt16 nSubRecId, void XclImpEditObj::DoProcessControl( ScfPropertySet& rPropSet ) const { - if( maTextData.mxString.is() ) + if( maTextData.mxString ) { OUString aText = maTextData.mxString->GetText(); if( IsNumeric() ) @@ -2711,7 +2719,7 @@ void XclImpDropDownObj::DoProcessControl( ScfPropertySet& rPropSet ) const if( GetDropDownType() == EXC_OBJ_DROPDOWN_COMBOBOX ) { // text of editable combobox - if( maTextData.mxString.is() ) + if( maTextData.mxString ) rPropSet.SetStringProperty( CREATE_OUSTRING( "DefaultText" ), maTextData.mxString->GetText() ); } else @@ -3121,7 +3129,7 @@ XclImpSimpleDffConverter::~XclImpSimpleDffConverter() { } -int XclImpSimpleDffConverter::GetColorFromPalette( USHORT nIndex, Color& rColor ) const +bool XclImpSimpleDffConverter::GetColorFromPalette( USHORT nIndex, Color& rColor ) const { ColorData nColor = GetPalette().GetColorData( static_cast< sal_uInt16 >( nIndex ) ); @@ -3176,17 +3184,14 @@ XclImpDffConverter::~XclImpDffConverter() String XclImpObjectManager::GetOleNameOverride( SCTAB nTab, sal_uInt16 nObjId ) { - String sOleName; + rtl::OUString sOleName; String sCodeName = GetExtDocOptions().GetCodeName( nTab ); - CodeNameToCntrlObjIdInfo::iterator it = maOleCtrlNameOverride.find( sCodeName ); - if ( it != maOleCtrlNameOverride.end() ) + if ( mxOleCtrlNameOverride->hasByName( sCodeName ) ) { - CntrlObjIdToName::iterator it_id = it->second.find( nObjId ); - if ( it_id != it->second.end() ) - { - sOleName = it_id->second; - } + Reference< XIndexContainer > xIdToOleName; + mxOleCtrlNameOverride->getByName( sCodeName ) >>= xIdToOleName; + xIdToOleName->getByIndex( nObjId ) >>= sOleName; } OSL_TRACE("XclImpObjectManager::GetOleNameOverride tab %d, ( module %s ) object id ( %d ) is %s", nTab, rtl::OUStringToOString( sCodeName, RTL_TEXTENCODING_UTF8 ).getStr(), nObjId, @@ -3204,7 +3209,7 @@ void XclImpDffConverter::StartProgressBar( sal_Size nProgressSize ) void XclImpDffConverter::Progress( sal_Size nDelta ) { - DBG_ASSERT( mxProgress.is(), "XclImpDffConverter::Progress - invalid call, no progress bar" ); + DBG_ASSERT( mxProgress, "XclImpDffConverter::Progress - invalid call, no progress bar" ); mxProgress->Progress( nDelta ); } @@ -3699,7 +3704,7 @@ XclImpDrawing::~XclImpDrawing() { } -/*static*/ Graphic XclImpDrawing::ReadImgData( const XclImpRoot& rRoot, XclImpStream& rStrm ) +Graphic XclImpDrawing::ReadImgData( const XclImpRoot& rRoot, XclImpStream& rStrm ) { Graphic aGraphic; sal_uInt16 nFormat, nEnv; @@ -3741,7 +3746,7 @@ void XclImpDrawing::ReadObj( XclImpStream& rStrm ) DBG_ERROR_BIFF(); } - if( xDrawObj.is() ) + if( xDrawObj ) { // insert into maRawObjs or into the last open group object maRawObjs.InsertGrouped( xDrawObj ); @@ -3860,7 +3865,7 @@ void XclImpDrawing::ImplConvertObjects( XclImpDffConverter& rDffConv, SdrModel& void XclImpDrawing::AppendRawObject( const XclImpDrawObjRef& rxDrawObj ) { - DBG_ASSERT( rxDrawObj.is(), "XclImpDrawing::AppendRawObject - unexpected empty reference" ); + DBG_ASSERT( rxDrawObj, "XclImpDrawing::AppendRawObject - unexpected empty reference" ); maRawObjs.push_back( rxDrawObj ); } @@ -3990,7 +3995,7 @@ void XclImpSheetDrawing::ReadNote( XclImpStream& rStrm ) void XclImpSheetDrawing::ReadTabChart( XclImpStream& rStrm ) { DBG_ASSERT_BIFF( GetBiff() >= EXC_BIFF5 ); - ScfRef< XclImpChartObj > xChartObj( new XclImpChartObj( GetRoot(), true ) ); + boost::shared_ptr< XclImpChartObj > xChartObj( new XclImpChartObj( GetRoot(), true ) ); xChartObj->ReadChartSubStream( rStrm ); // insert the chart as raw object without connected DFF data AppendRawObject( xChartObj ); diff --git a/sc/source/filter/excel/xihelper.cxx b/sc/source/filter/excel/xihelper.cxx index bb17cc656add..af7609698dce 100644 --- a/sc/source/filter/excel/xihelper.cxx +++ b/sc/source/filter/excel/xihelper.cxx @@ -845,7 +845,7 @@ XclImpCachedMatrix::XclImpCachedMatrix( XclImpStream& rStrm ) : for( SCSIZE nScRow = 0; nScRow < mnScRows; ++nScRow ) for( SCSIZE nScCol = 0; nScCol < mnScCols; ++nScCol ) - maValueList.Append( new XclImpCachedValue( rStrm ) ); + maValueList.push_back( new XclImpCachedValue( rStrm ) ); } XclImpCachedMatrix::~XclImpCachedMatrix() @@ -855,38 +855,38 @@ XclImpCachedMatrix::~XclImpCachedMatrix() ScMatrixRef XclImpCachedMatrix::CreateScMatrix() const { ScMatrixRef xScMatrix; - DBG_ASSERT( mnScCols * mnScRows == maValueList.Count(), "XclImpCachedMatrix::CreateScMatrix - element count mismatch" ); - if( mnScCols && mnScRows && static_cast< ULONG >( mnScCols * mnScRows ) <= maValueList.Count() ) + DBG_ASSERT( mnScCols * mnScRows == maValueList.size(), "XclImpCachedMatrix::CreateScMatrix - element count mismatch" ); + if( mnScCols && mnScRows && static_cast< ULONG >( mnScCols * mnScRows ) <= maValueList.size() ) { xScMatrix = new ScMatrix( mnScCols, mnScRows ); - const XclImpCachedValue* pValue = maValueList.First(); + XclImpValueList::const_iterator itValue = maValueList.begin(); for( SCSIZE nScRow = 0; nScRow < mnScRows; ++nScRow ) { for( SCSIZE nScCol = 0; nScCol < mnScCols; ++nScCol ) { - switch( pValue->GetType() ) + switch( itValue->GetType() ) { case EXC_CACHEDVAL_EMPTY: // Excel shows 0.0 here, not an empty cell xScMatrix->PutEmpty( nScCol, nScRow ); break; case EXC_CACHEDVAL_DOUBLE: - xScMatrix->PutDouble( pValue->GetValue(), nScCol, nScRow ); + xScMatrix->PutDouble( itValue->GetValue(), nScCol, nScRow ); break; case EXC_CACHEDVAL_STRING: - xScMatrix->PutString( pValue->GetString(), nScCol, nScRow ); + xScMatrix->PutString( itValue->GetString(), nScCol, nScRow ); break; case EXC_CACHEDVAL_BOOL: - xScMatrix->PutBoolean( pValue->GetBool(), nScCol, nScRow ); + xScMatrix->PutBoolean( itValue->GetBool(), nScCol, nScRow ); break; case EXC_CACHEDVAL_ERROR: - xScMatrix->PutError( pValue->GetScError(), nScCol, nScRow ); + xScMatrix->PutError( itValue->GetScError(), nScCol, nScRow ); break; default: DBG_ERRORFILE( "XclImpCachedMatrix::CreateScMatrix - unknown value type" ); xScMatrix->PutEmpty( nScCol, nScRow ); } - pValue = maValueList.Next(); + ++itValue; } } } diff --git a/sc/source/filter/excel/xilink.cxx b/sc/source/filter/excel/xilink.cxx index ff45306b1c55..143d95a3a2ba 100644 --- a/sc/source/filter/excel/xilink.cxx +++ b/sc/source/filter/excel/xilink.cxx @@ -41,6 +41,7 @@ #include "externalrefmgr.hxx" #include <vector> +#include <boost/ptr_container/ptr_vector.hpp> using ::std::vector; @@ -50,7 +51,10 @@ using ::std::vector; // Cached external cells ====================================================== -/** Contains the address and value of an external referenced cell. */ +/** + * Contains the address and value of an external referenced cell. + * Note that this is non-copyable, so cannot be used in most stl/boost containers. + */ class XclImpCrn : public XclImpCachedValue { public: @@ -82,7 +86,8 @@ public: void LoadCachedValues(ScExternalRefCache::TableTypeRef pCacheTable); private: - typedef ScfDelList< XclImpCrn > XclImpCrnList; + typedef boost::shared_ptr< XclImpCrn > XclImpCrnRef; + typedef std::vector< XclImpCrnRef > XclImpCrnList; XclImpCrnList maCrnList; /// List of CRN records (cached cell values). String maTabName; /// Name of the external sheet. @@ -129,8 +134,8 @@ public: void LoadCachedValues(); private: - typedef ScfDelList< XclImpSupbookTab > XclImpSupbookTabList; - typedef ScfDelList< XclImpExtName > XclImpExtNameList; + typedef boost::ptr_vector< XclImpSupbookTab > XclImpSupbookTabList; + typedef boost::ptr_vector< XclImpExtName > XclImpExtNameList; XclImpSupbookTabList maSupbTabList; /// All sheet names of the document. XclImpExtNameList maExtNameList; /// All external names of the document. @@ -212,7 +217,7 @@ private: private: typedef ::std::vector< XclImpXti > XclImpXtiVector; - typedef ScfDelList< XclImpSupbook > XclImpSupbookList; + typedef boost::ptr_vector< XclImpSupbook > XclImpSupbookList; XclImpXtiVector maXtiList; /// List of all XTI structures. XclImpSupbookList maSupbookList; /// List of external documents. @@ -388,43 +393,45 @@ XclImpSupbookTab::~XclImpSupbookTab() void XclImpSupbookTab::ReadCrn( XclImpStream& rStrm, const XclAddress& rXclPos ) { - maCrnList.Append( new XclImpCrn( rStrm, rXclPos ) ); + XclImpCrnRef crnRef( new XclImpCrn(rStrm, rXclPos) ); + maCrnList.push_back( crnRef ); } void XclImpSupbookTab::LoadCachedValues(ScExternalRefCache::TableTypeRef pCacheTable) { - if (maCrnList.Empty()) + if (maCrnList.empty()) return; - for (XclImpCrn* p = maCrnList.First(); p; p = maCrnList.Next()) + for (XclImpCrnList::iterator itCrnRef = maCrnList.begin(); itCrnRef != maCrnList.end(); ++itCrnRef) { - const XclAddress& rAddr = p->GetAddress(); - switch (p->GetType()) + const XclImpCrn* const pCrn = itCrnRef->get(); + const XclAddress& rAddr = pCrn->GetAddress(); + switch (pCrn->GetType()) { case EXC_CACHEDVAL_BOOL: { - bool b = p->GetBool(); + bool b = pCrn->GetBool(); ScExternalRefCache::TokenRef pToken(new formula::FormulaDoubleToken(b ? 1.0 : 0.0)); pCacheTable->setCell(rAddr.mnCol, rAddr.mnRow, pToken, 0, false); } break; case EXC_CACHEDVAL_DOUBLE: { - double f = p->GetValue(); + double f = pCrn->GetValue(); ScExternalRefCache::TokenRef pToken(new formula::FormulaDoubleToken(f)); pCacheTable->setCell(rAddr.mnCol, rAddr.mnRow, pToken, 0, false); } break; case EXC_CACHEDVAL_ERROR: { - double fError = XclTools::ErrorToDouble( p->GetXclError() ); + double fError = XclTools::ErrorToDouble( pCrn->GetXclError() ); ScExternalRefCache::TokenRef pToken(new formula::FormulaDoubleToken(fError)); pCacheTable->setCell(rAddr.mnCol, rAddr.mnRow, pToken, 0, false); } break; case EXC_CACHEDVAL_STRING: { - const String& rStr = p->GetString(); + const String& rStr = pCrn->GetString(); ScExternalRefCache::TokenRef pToken(new formula::FormulaStringToken(rStr)); pCacheTable->setCell(rAddr.mnCol, rAddr.mnRow, pToken, 0, false); } @@ -463,7 +470,7 @@ XclImpSupbook::XclImpSupbook( XclImpStream& rStrm ) : if( maXclUrl.EqualsIgnoreCaseAscii( "\010EUROTOOL.XLA" ) ) { meType = EXC_SBTYPE_EUROTOOL; - maSupbTabList.Append( new XclImpSupbookTab( maXclUrl ) ); + maSupbTabList.push_back( new XclImpSupbookTab( maXclUrl ) ); } else if( nSBTabCnt ) { @@ -471,14 +478,14 @@ XclImpSupbook::XclImpSupbook( XclImpStream& rStrm ) : for( sal_uInt16 nSBTab = 0; nSBTab < nSBTabCnt; ++nSBTab ) { String aTabName( rStrm.ReadUniString() ); - maSupbTabList.Append( new XclImpSupbookTab( aTabName ) ); + maSupbTabList.push_back( new XclImpSupbookTab( aTabName ) ); } } else { meType = EXC_SBTYPE_SPECIAL; // create dummy list entry - maSupbTabList.Append( new XclImpSupbookTab( maXclUrl ) ); + maSupbTabList.push_back( new XclImpSupbookTab( maXclUrl ) ); } } @@ -490,26 +497,28 @@ void XclImpSupbook::ReadXct( XclImpStream& rStrm ) void XclImpSupbook::ReadCrn( XclImpStream& rStrm ) { - if( XclImpSupbookTab* pSBTab = maSupbTabList.GetObject( mnSBTab ) ) - { - sal_uInt8 nXclColLast, nXclColFirst; - sal_uInt16 nXclRow; - rStrm >> nXclColLast >> nXclColFirst >> nXclRow; + if (mnSBTab >= maSupbTabList.size()) + return; + XclImpSupbookTab& rSbTab = maSupbTabList[mnSBTab]; + sal_uInt8 nXclColLast, nXclColFirst; + sal_uInt16 nXclRow; + rStrm >> nXclColLast >> nXclColFirst >> nXclRow; - for( sal_uInt8 nXclCol = nXclColFirst; (nXclCol <= nXclColLast) && (rStrm.GetRecLeft() > 1); ++nXclCol ) - pSBTab->ReadCrn( rStrm, XclAddress( nXclCol, nXclRow ) ); - } + for( sal_uInt8 nXclCol = nXclColFirst; (nXclCol <= nXclColLast) && (rStrm.GetRecLeft() > 1); ++nXclCol ) + rSbTab.ReadCrn( rStrm, XclAddress( nXclCol, nXclRow ) ); } void XclImpSupbook::ReadExternname( XclImpStream& rStrm, ExcelToSc* pFormulaConv ) { - maExtNameList.Append( new XclImpExtName( *this, rStrm, meType, pFormulaConv ) ); + maExtNameList.push_back( new XclImpExtName( *this, rStrm, meType, pFormulaConv ) ); } const XclImpExtName* XclImpSupbook::GetExternName( sal_uInt16 nXclIndex ) const { DBG_ASSERT( nXclIndex > 0, "XclImpSupbook::GetExternName - index must be >0" ); - return (meType == EXC_SBTYPE_SELF) ? 0 : maExtNameList.GetObject( nXclIndex - 1 ); + if (meType == EXC_SBTYPE_SELF || nXclIndex >= maExtNameList.size()) + return NULL; + return &maExtNameList.at( nXclIndex - 1 ); } bool XclImpSupbook::GetLinkData( String& rApplic, String& rTopic ) const @@ -526,22 +535,14 @@ const String& XclImpSupbook::GetMacroName( sal_uInt16 nXclNameIdx ) const const String& XclImpSupbook::GetTabName( sal_uInt16 nXtiTab ) const { - if (maSupbTabList.Empty()) + if (nXtiTab >= maSupbTabList.size()) return EMPTY_STRING; - - sal_uInt16 i = 0; - for (XclImpSupbookTab* p = maSupbTabList.First(); p; p = maSupbTabList.Next(), ++i) - { - if (i == nXtiTab) - return p->GetTabName(); - } - - return EMPTY_STRING; + return maSupbTabList[nXtiTab].GetTabName(); } sal_uInt16 XclImpSupbook::GetTabCount() const { - return ulimit_cast<sal_uInt16>(maSupbTabList.Count()); + return ulimit_cast<sal_uInt16>(maSupbTabList.size()); } void XclImpSupbook::LoadCachedValues() @@ -554,16 +555,11 @@ void XclImpSupbook::LoadCachedValues() ScExternalRefManager* pRefMgr = GetRoot().GetDoc().GetExternalRefManager(); sal_uInt16 nFileId = pRefMgr->getExternalFileId(aAbsUrl); - sal_uInt16 nCount = static_cast< sal_uInt16 >( maSupbTabList.Count() ); - for (sal_uInt16 i = 0; i < nCount; ++i) + for (XclImpSupbookTabList::iterator itTab = maSupbTabList.begin(); itTab != maSupbTabList.end(); ++itTab) { - XclImpSupbookTab* pTab = maSupbTabList.GetObject(i); - if (!pTab) - return; - - const String& rTabName = pTab->GetTabName(); + const String& rTabName = itTab->GetTabName(); ScExternalRefCache::TableTypeRef pCacheTable = pRefMgr->getCacheTable(nFileId, rTabName, true); - pTab->LoadCachedValues(pCacheTable); + itTab->LoadCachedValues(pCacheTable); pCacheTable->setWholeTableCached(); } } @@ -597,25 +593,25 @@ void XclImpLinkManagerImpl::ReadExternsheet( XclImpStream& rStrm ) void XclImpLinkManagerImpl::ReadSupbook( XclImpStream& rStrm ) { - maSupbookList.Append( new XclImpSupbook( rStrm ) ); + maSupbookList.push_back( new XclImpSupbook( rStrm ) ); } void XclImpLinkManagerImpl::ReadXct( XclImpStream& rStrm ) { - if( XclImpSupbook* pSupbook = maSupbookList.Last() ) - pSupbook->ReadXct( rStrm ); + if( !maSupbookList.empty() ) + maSupbookList.back().ReadXct( rStrm ); } void XclImpLinkManagerImpl::ReadCrn( XclImpStream& rStrm ) { - if( XclImpSupbook* pSupbook = maSupbookList.Last() ) - pSupbook->ReadCrn( rStrm ); + if( !maSupbookList.empty() ) + maSupbookList.back().ReadCrn( rStrm ); } void XclImpLinkManagerImpl::ReadExternname( XclImpStream& rStrm, ExcelToSc* pFormulaConv ) { - if( XclImpSupbook* pSupbook = maSupbookList.Last() ) - pSupbook->ReadExternname( rStrm, pFormulaConv ); + if( !maSupbookList.empty() ) + maSupbookList.back().ReadExternname( rStrm, pFormulaConv ); } bool XclImpLinkManagerImpl::IsSelfRef( sal_uInt16 nXtiIndex ) const @@ -629,7 +625,7 @@ bool XclImpLinkManagerImpl::GetScTabRange( { if( const XclImpXti* pXti = GetXti( nXtiIndex ) ) { - if (maSupbookList.GetObject(pXti->mnSupbook)) + if (!maSupbookList.empty() && (pXti->mnSupbook < maSupbookList.size()) ) { rnFirstScTab = pXti->mnSBTabFirst; rnLastScTab = pXti->mnSBTabLast; @@ -678,21 +674,20 @@ const XclImpXti* XclImpLinkManagerImpl::GetXti( sal_uInt16 nXtiIndex ) const const XclImpSupbook* XclImpLinkManagerImpl::GetSupbook( sal_uInt16 nXtiIndex ) const { + if ( maSupbookList.empty() ) + return NULL; const XclImpXti* pXti = GetXti( nXtiIndex ); - return pXti ? maSupbookList.GetObject( pXti->mnSupbook ) : 0; + if (!pXti || pXti->mnSupbook >= maSupbookList.size()) + return NULL; + return &(maSupbookList.at( pXti->mnSupbook )); } void XclImpLinkManagerImpl::LoadCachedValues() { // Read all CRN records which can be accessed via XclImpSupbook, and store // the cached values to the external reference manager. - - sal_uInt32 nCount = maSupbookList.Count(); - for (sal_uInt16 nSupbook = 0; nSupbook < nCount; ++nSupbook) - { - XclImpSupbook* pSupbook = maSupbookList.GetObject(nSupbook); - pSupbook->LoadCachedValues(); - } + for (XclImpSupbookList::iterator itSupbook = maSupbookList.begin(); itSupbook != maSupbookList.end(); ++itSupbook) + itSupbook->LoadCachedValues(); } // ============================================================================ diff --git a/sc/source/filter/excel/xiname.cxx b/sc/source/filter/excel/xiname.cxx index e94832e99597..a8994fa2a074 100644 --- a/sc/source/filter/excel/xiname.cxx +++ b/sc/source/filter/excel/xiname.cxx @@ -232,7 +232,7 @@ XclImpName::XclImpName( XclImpStream& rStrm, sal_uInt16 nXclNameIdx ) : // discard deleted ranges ( for the moment at least ) if ( pData->IsValidReference( aRange ) ) { - ScExtTabSettings& rTabSett = GetExtDocOptions().GetOrCreateTabSettings( nXclTab ); + GetExtDocOptions().GetOrCreateTabSettings( nXclTab ); // create a mapping between the unmodified localname to // the name in the global name container for named ranges OSL_TRACE(" mapping local name to global name for tab %d which exists? %s", nXclTab, GetDoc().HasTable( mnScTab ) ? "true" : "false" ); @@ -256,23 +256,23 @@ XclImpNameManager::XclImpNameManager( const XclImpRoot& rRoot ) : void XclImpNameManager::ReadName( XclImpStream& rStrm ) { - ULONG nCount = maNameList.Count(); + ULONG nCount = maNameList.size(); if( nCount < 0xFFFF ) - maNameList.Append( new XclImpName( rStrm, static_cast< sal_uInt16 >( nCount + 1 ) ) ); + maNameList.push_back( new XclImpName( rStrm, static_cast< sal_uInt16 >( nCount + 1 ) ) ); } const XclImpName* XclImpNameManager::FindName( const String& rXclName, SCTAB nScTab ) const { const XclImpName* pGlobalName = 0; // a found global name const XclImpName* pLocalName = 0; // a found local name - for( const XclImpName* pName = maNameList.First(); pName && !pLocalName; pName = maNameList.Next() ) + for( XclImpNameList::const_iterator itName = maNameList.begin(); itName != maNameList.end() && !pLocalName; ++itName ) { - if( pName->GetXclName() == rXclName ) + if( itName->GetXclName() == rXclName ) { - if( pName->GetScTab() == nScTab ) - pLocalName = pName; - else if( pName->IsGlobal() ) - pGlobalName = pName; + if( itName->GetScTab() == nScTab ) + pLocalName = &(*itName); + else if( itName->IsGlobal() ) + pGlobalName = &(*itName); } } return pLocalName ? pLocalName : pGlobalName; @@ -281,7 +281,7 @@ const XclImpName* XclImpNameManager::FindName( const String& rXclName, SCTAB nSc const XclImpName* XclImpNameManager::GetName( sal_uInt16 nXclNameIdx ) const { DBG_ASSERT( nXclNameIdx > 0, "XclImpNameManager::GetName - index must be >0" ); - return maNameList.GetObject( nXclNameIdx - 1 ); + return &(maNameList.at( nXclNameIdx - 1 )); } // ============================================================================ diff --git a/sc/source/filter/excel/xipivot.cxx b/sc/source/filter/excel/xipivot.cxx index 3b30c7f84998..bd9509158a88 100644 --- a/sc/source/filter/excel/xipivot.cxx +++ b/sc/source/filter/excel/xipivot.cxx @@ -785,7 +785,7 @@ void XclImpPivotCache::ReadPivotCacheStream( XclImpStream& rStrm ) case EXC_ID_SXSTRING: case EXC_ID_SXDATETIME: case EXC_ID_SXEMPTY: - if( xCurrField.is() ) // inline items + if( xCurrField ) // inline items { xCurrField->ReadItem( aPCStrm ); } @@ -810,12 +810,12 @@ void XclImpPivotCache::ReadPivotCacheStream( XclImpStream& rStrm ) break; case EXC_ID_SXNUMGROUP: - if( xCurrField.is() ) + if( xCurrField ) xCurrField->ReadSxnumgroup( aPCStrm ); break; case EXC_ID_SXGROUPINFO: - if( xCurrField.is() ) + if( xCurrField ) xCurrField->ReadSxgroupinfo( aPCStrm ); break; @@ -909,7 +909,7 @@ XclImpPTField::XclImpPTField( const XclImpPivotTable& rPTable, sal_uInt16 nCache const XclImpPCField* XclImpPTField::GetCacheField() const { XclImpPivotCacheRef xPCache = mrPTable.GetPivotCache(); - return xPCache.is() ? xPCache->GetField( maFieldInfo.mnCacheIdx ) : 0; + return xPCache ? xPCache->GetField( maFieldInfo.mnCacheIdx ) : 0; } const String& XclImpPTField::GetFieldName() const @@ -1256,13 +1256,13 @@ void XclImpPivotTable::ReadSxvd( XclImpStream& rStrm ) void XclImpPivotTable::ReadSxvi( XclImpStream& rStrm ) { - if( mxCurrField.is() ) + if( mxCurrField ) mxCurrField->ReadSxvi( rStrm ); } void XclImpPivotTable::ReadSxvdex( XclImpStream& rStrm ) { - if( mxCurrField.is() ) + if( mxCurrField ) mxCurrField->ReadSxvdex( rStrm ); } diff --git a/sc/source/filter/excel/xiroot.cxx b/sc/source/filter/excel/xiroot.cxx index 9a0b50e3a999..9180ed401b62 100644 --- a/sc/source/filter/excel/xiroot.cxx +++ b/sc/source/filter/excel/xiroot.cxx @@ -109,7 +109,7 @@ void XclImpRoot::SetAppFontEncoding( rtl_TextEncoding eAppFontEnc ) SetTextEncoding( eAppFontEnc ); } -void XclImpRoot::InitializeTable( SCTAB /*nScTab*/ ) +void XclImpRoot::InitializeTable( SCTAB nScTab ) { if( GetBiff() <= EXC_BIFF4 ) { @@ -121,6 +121,8 @@ void XclImpRoot::InitializeTable( SCTAB /*nScTab*/ ) GetXFRangeBuffer().Initialize(); GetPageSettings().Initialize(); GetTabViewSettings().Initialize(); + // delete the automatically generated codename + GetDoc().SetCodeName( nScTab, String::EmptyString() ); } void XclImpRoot::FinalizeTable() @@ -149,7 +151,7 @@ ExcelToSc& XclImpRoot::GetOldFmlaConverter() const XclImpSst& XclImpRoot::GetSst() const { - DBG_ASSERT( mrImpData.mxSst.is(), "XclImpRoot::GetSst - invalid call, wrong BIFF" ); + DBG_ASSERT( mrImpData.mxSst, "XclImpRoot::GetSst - invalid call, wrong BIFF" ); return *mrImpData.mxSst; } @@ -202,7 +204,7 @@ XclImpNameManager& XclImpRoot::GetNameManager() const XclImpLinkManager& XclImpRoot::GetLinkManager() const { - DBG_ASSERT( mrImpData.mxLinkMgr.is(), "XclImpRoot::GetLinkManager - invalid call, wrong BIFF" ); + DBG_ASSERT( mrImpData.mxLinkMgr, "XclImpRoot::GetLinkManager - invalid call, wrong BIFF" ); return *mrImpData.mxLinkMgr; } @@ -219,13 +221,13 @@ XclImpSheetDrawing& XclImpRoot::GetCurrSheetDrawing() const XclImpCondFormatManager& XclImpRoot::GetCondFormatManager() const { - DBG_ASSERT( mrImpData.mxCondFmtMgr.is(), "XclImpRoot::GetCondFormatManager - invalid call, wrong BIFF" ); + DBG_ASSERT( mrImpData.mxCondFmtMgr, "XclImpRoot::GetCondFormatManager - invalid call, wrong BIFF" ); return *mrImpData.mxCondFmtMgr; } XclImpValidationManager& XclImpRoot::GetValidationManager() const { - DBG_ASSERT( mrImpData.mxValidMgr.is(), "XclImpRoot::GetValidationManager - invalid call, wrong BIFF" ); + DBG_ASSERT( mrImpData.mxValidMgr, "XclImpRoot::GetValidationManager - invalid call, wrong BIFF" ); return *mrImpData.mxValidMgr; } @@ -238,25 +240,25 @@ XclImpAutoFilterBuffer& XclImpRoot::GetFilterManager() const XclImpWebQueryBuffer& XclImpRoot::GetWebQueryBuffer() const { - DBG_ASSERT( mrImpData.mxWebQueryBfr.is(), "XclImpRoot::GetWebQueryBuffer - invalid call, wrong BIFF" ); + DBG_ASSERT( mrImpData.mxWebQueryBfr, "XclImpRoot::GetWebQueryBuffer - invalid call, wrong BIFF" ); return *mrImpData.mxWebQueryBfr; } XclImpPivotTableManager& XclImpRoot::GetPivotTableManager() const { - DBG_ASSERT( mrImpData.mxPTableMgr.is(), "XclImpRoot::GetPivotTableManager - invalid call, wrong BIFF" ); + DBG_ASSERT( mrImpData.mxPTableMgr, "XclImpRoot::GetPivotTableManager - invalid call, wrong BIFF" ); return *mrImpData.mxPTableMgr; } XclImpSheetProtectBuffer& XclImpRoot::GetSheetProtectBuffer() const { - DBG_ASSERT( mrImpData.mxTabProtect.is(), "XclImpRoot::GetSheetProtectBuffer - invalid call, wrong BIFF" ); + DBG_ASSERT( mrImpData.mxTabProtect, "XclImpRoot::GetSheetProtectBuffer - invalid call, wrong BIFF" ); return *mrImpData.mxTabProtect; } XclImpDocProtectBuffer& XclImpRoot::GetDocProtectBuffer() const { - DBG_ASSERT( mrImpData.mxDocProtect.is(), "XclImpRoot::GetDocProtectBuffer - invalid call, wrong BIFF" ); + DBG_ASSERT( mrImpData.mxDocProtect, "XclImpRoot::GetDocProtectBuffer - invalid call, wrong BIFF" ); return *mrImpData.mxDocProtect; } diff --git a/sc/source/filter/excel/xistream.cxx b/sc/source/filter/excel/xistream.cxx index 86dec6126200..74428a0d4314 100644 --- a/sc/source/filter/excel/xistream.cxx +++ b/sc/source/filter/excel/xistream.cxx @@ -442,14 +442,14 @@ void XclImpStream::SetDecrypter( XclImpDecrypterRef xDecrypter ) void XclImpStream::CopyDecrypterFrom( const XclImpStream& rStrm ) { XclImpDecrypterRef xNewDecr; - if( rStrm.mxDecrypter.is() ) + if( rStrm.mxDecrypter ) xNewDecr = rStrm.mxDecrypter->Clone(); SetDecrypter( xNewDecr ); } bool XclImpStream::HasValidDecrypter() const { - return mxDecrypter.is() && mxDecrypter->IsValid(); + return mxDecrypter && mxDecrypter->IsValid(); } void XclImpStream::EnableDecryption( bool bEnable ) @@ -998,7 +998,7 @@ bool XclImpStream::ReadNextRawRecHeader() void XclImpStream::SetupDecrypter() { - if( mxDecrypter.is() ) + if( mxDecrypter ) mxDecrypter->Update( mrStrm, mnRawRecSize ); } diff --git a/sc/source/filter/excel/xistyle.cxx b/sc/source/filter/excel/xistyle.cxx index 6693d6fe3936..7da454fca531 100644 --- a/sc/source/filter/excel/xistyle.cxx +++ b/sc/source/filter/excel/xistyle.cxx @@ -53,6 +53,7 @@ #include <editeng/eeitem.hxx> #include <editeng/flstitem.hxx> #include <editeng/justifyitem.hxx> +#include <sal/macros.h> #include "document.hxx" #include "docpool.hxx" #include "attrib.hxx" @@ -516,7 +517,7 @@ XclImpFontBuffer::XclImpFontBuffer( const XclImpRoot& rRoot ) : void XclImpFontBuffer::Initialize() { - maFontList.Clear(); + maFontList.clear(); // application font for column width calculation, later filled with first font from font list XclFontData aAppFontData; @@ -529,18 +530,25 @@ void XclImpFontBuffer::Initialize() const XclImpFont* XclImpFontBuffer::GetFont( sal_uInt16 nFontIndex ) const { /* Font with index 4 is not stored in an Excel file, but used e.g. by - BIFF5 form pushbutton objects. It is the bold default font. */ - return (nFontIndex == 4) ? &maFont4 : - maFontList.GetObject( (nFontIndex < 4) ? nFontIndex : (nFontIndex - 1) ); + BIFF5 form pushbutton objects. It is the bold default font. + This also means that entries above 4 are out by one in the list. */ + + if (nFontIndex == 4) + return &maFont4; + + if (nFontIndex >= maFontList.size()) + return NULL; + + return (nFontIndex < 4) ? &(maFontList[nFontIndex]) : &(maFontList[nFontIndex - 1]); } void XclImpFontBuffer::ReadFont( XclImpStream& rStrm ) { XclImpFont* pFont = new XclImpFont( GetRoot() ); pFont->ReadFont( rStrm ); - maFontList.Append( pFont ); + maFontList.push_back( pFont ); - if( maFontList.Count() == 1 ) + if( maFontList.size() == 1 ) { UpdateAppFont( pFont->GetFontData(), pFont->HasCharSet() ); // #i71033# set text encoding from application font, if CODEPAGE is missing @@ -550,8 +558,8 @@ void XclImpFontBuffer::ReadFont( XclImpStream& rStrm ) void XclImpFontBuffer::ReadEfont( XclImpStream& rStrm ) { - if( XclImpFont* pFont = maFontList.Last() ) - pFont->ReadEfont( rStrm ); + if( !maFontList.empty() ) + maFontList.back().ReadEfont( rStrm ); } void XclImpFontBuffer::FillToItemSet( @@ -880,31 +888,38 @@ bool XclImpCellBorder::HasAnyOuterBorder() const namespace { +// TODO: These values are approximate; we should probably tweak these values +// further to better match Excel's border thickness. +#define XLS_LINE_WIDTH_HAIR 1 +#define XLS_LINE_WIDTH_THIN 6 +#define XLS_LINE_WIDTH_MEDIUM 18 +#define XLS_LINE_WIDTH_THICK 24 + /** Converts the passed line style to a SvxBorderLine, or returns false, if style is "no line". */ bool lclConvertBorderLine( SvxBorderLine& rLine, const XclImpPalette& rPalette, sal_uInt8 nXclLine, sal_uInt16 nXclColor ) { static const sal_uInt16 ppnLineParam[][ 4 ] = { - // outer width, inner width, distance type - { 0, 0, 0, SOLID }, // 0 = none - { DEF_LINE_WIDTH_1, 0, 0, SOLID }, // 1 = thin - { DEF_LINE_WIDTH_2, 0, 0, SOLID }, // 2 = medium - { DEF_LINE_WIDTH_1, 0, 0, DASHED }, // 3 = dashed - { DEF_LINE_WIDTH_1, 0, 0, DOTTED }, // 4 = dotted - { DEF_LINE_WIDTH_3, 0, 0, SOLID }, // 5 = thick - { DEF_LINE_WIDTH_1, DEF_LINE_WIDTH_1, DEF_LINE_WIDTH_1 }, // 6 = double - { DEF_LINE_WIDTH_0, 0, 0, SOLID }, // 7 = hair - { DEF_LINE_WIDTH_2, 0, 0, DASHED }, // 8 = med dash - { DEF_LINE_WIDTH_1, 0, 0, SOLID }, // 9 = thin dashdot - { DEF_LINE_WIDTH_2, 0, 0, SOLID }, // A = med dashdot - { DEF_LINE_WIDTH_1, 0, 0, SOLID }, // B = thin dashdotdot - { DEF_LINE_WIDTH_2, 0, 0, SOLID }, // C = med dashdotdot - { DEF_LINE_WIDTH_2, 0, 0, SOLID } // D = med slant dashdot + // outer width, inner width, distance type + { 0, 0, 0, SOLID }, // 0 = none + { XLS_LINE_WIDTH_THIN, 0, 0, SOLID }, // 1 = thin + { XLS_LINE_WIDTH_MEDIUM, 0, 0, SOLID }, // 2 = medium + { XLS_LINE_WIDTH_THIN, 0, 0, DASHED }, // 3 = dashed + { XLS_LINE_WIDTH_THIN, 0, 0, DOTTED }, // 4 = dotted + { XLS_LINE_WIDTH_THICK, 0, 0, SOLID }, // 5 = thick + { XLS_LINE_WIDTH_THIN, XLS_LINE_WIDTH_THIN, XLS_LINE_WIDTH_THIN, SOLID }, // 6 = double + { XLS_LINE_WIDTH_HAIR, 0, 0, SOLID }, // 7 = hair + { XLS_LINE_WIDTH_MEDIUM, 0, 0, DASHED }, // 8 = med dash + { XLS_LINE_WIDTH_THIN, 0, 0, SOLID }, // 9 = thin dashdot + { XLS_LINE_WIDTH_MEDIUM, 0, 0, SOLID }, // A = med dashdot + { XLS_LINE_WIDTH_THIN, 0, 0, SOLID }, // B = thin dashdotdot + { XLS_LINE_WIDTH_MEDIUM, 0, 0, SOLID }, // C = med dashdotdot + { XLS_LINE_WIDTH_MEDIUM, 0, 0, SOLID } // D = med slant dashdot }; if( nXclLine == EXC_LINE_NONE ) return false; - if( nXclLine >= STATIC_TABLE_SIZE( ppnLineParam ) ) + if( nXclLine >= SAL_N_ELEMENTS( ppnLineParam ) ) nXclLine = EXC_LINE_THIN; rLine.SetColor( rPalette.GetColor( nXclColor ) ); @@ -1250,6 +1265,10 @@ const ScPatternAttr& XclImpXF::CreatePattern( bool bSkipPoolDefs ) ScfTools::PutItem( rItemSet, SvxRotateModeItem( eRotateMode, ATTR_ROTATE_MODE ), bSkipPoolDefs ); } + // Excel's cell margins are different from Calc's default margins. + SvxMarginItem aItem(40, 40, 40, 40, ATTR_MARGIN); + ScfTools::PutItem(rItemSet, aItem, bSkipPoolDefs); + return *mpPattern; } @@ -1294,7 +1313,16 @@ void XclImpXF::ApplyPatternToAttrList( if (pPat) { + // Check for a gap between the last entry and this one. + bool bHasGap = false; + if (rAttrs.empty() && nRow1 > 0) + // First attribute range doesn't start at row 0. + bHasGap = true; + if (!rAttrs.empty() && rAttrs.back().nRow + 1 < nRow1) + bHasGap = true; + + if (bHasGap) { // Fill this gap with the default pattern. ScAttrEntry aEntry; @@ -1430,9 +1458,9 @@ XclImpXFBuffer::XclImpXFBuffer( const XclImpRoot& rRoot ) : void XclImpXFBuffer::Initialize() { - maXFList.Clear(); - maBuiltinStyles.Clear(); - maUserStyles.Clear(); + maXFList.clear(); + maBuiltinStyles.clear(); + maUserStyles.clear(); maStylesByXf.clear(); } @@ -1440,14 +1468,14 @@ void XclImpXFBuffer::ReadXF( XclImpStream& rStrm ) { XclImpXF* pXF = new XclImpXF( GetRoot() ); pXF->ReadXF( rStrm ); - maXFList.Append( pXF ); + maXFList.push_back( pXF ); } void XclImpXFBuffer::ReadStyle( XclImpStream& rStrm ) { XclImpStyle* pStyle = new XclImpStyle( GetRoot() ); pStyle->ReadStyle( rStrm ); - (pStyle->IsBuiltin() ? maBuiltinStyles : maUserStyles).Append( pStyle ); + (pStyle->IsBuiltin() ? maBuiltinStyles : maUserStyles).push_back( pStyle ); DBG_ASSERT( maStylesByXf.count( pStyle->GetXfId() ) == 0, "XclImpXFBuffer::ReadStyle - multiple styles with equal XF identifier" ); maStylesByXf[ pStyle->GetXfId() ] = pStyle; } @@ -1501,28 +1529,28 @@ void XclImpXFBuffer::CreateUserStyles() /* Calculate names of built-in styles. Store styles with reserved names in the aConflictNameStyles list. */ - for( XclImpStyle* pStyle = maBuiltinStyles.First(); pStyle; pStyle = maBuiltinStyles.Next() ) + for( XclImpStyleList::iterator itStyle = maBuiltinStyles.begin(); itStyle != maBuiltinStyles.end(); ++itStyle ) { - String aStyleName = XclTools::GetBuiltInStyleName( pStyle->GetBuiltinId(), pStyle->GetName(), pStyle->GetLevel() ); + String aStyleName = XclTools::GetBuiltInStyleName( itStyle->GetBuiltinId(), itStyle->GetName(), itStyle->GetLevel() ); DBG_ASSERT( bReserveAll || (aCellStyles.count( aStyleName ) == 0), "XclImpXFBuffer::CreateUserStyles - multiple styles with equal built-in identifier" ); if( aCellStyles.count( aStyleName ) > 0 ) - aConflictNameStyles.push_back( pStyle ); + aConflictNameStyles.push_back( &(*itStyle) ); else - aCellStyles[ aStyleName ] = pStyle; + aCellStyles[ aStyleName ] = &(*itStyle); } /* Calculate names of user defined styles. Store styles with reserved names in the aConflictNameStyles list. */ - for( XclImpStyle* pStyle = maUserStyles.First(); pStyle; pStyle = maUserStyles.Next() ) + for( XclImpStyleList::iterator itStyle = maUserStyles.begin(); itStyle != maUserStyles.end(); ++itStyle ) { // #i1624# #i1768# ignore unnamed user styles - if( pStyle->GetName().Len() > 0 ) + if( itStyle->GetName().Len() > 0 ) { - if( aCellStyles.count( pStyle->GetName() ) > 0 ) - aConflictNameStyles.push_back( pStyle ); + if( aCellStyles.count( itStyle->GetName() ) > 0 ) + aConflictNameStyles.push_back( &(*itStyle) ); else - aCellStyles[ pStyle->GetName() ] = pStyle; + aCellStyles[ itStyle->GetName() ] = &(*itStyle); } } @@ -1592,10 +1620,10 @@ void XclImpXFRangeColumn::SetDefaultXF( const XclImpXFIndex& rXFIndex ) { // List should be empty when inserting the default column format. // Later explicit SetXF() calls will break up this range. - DBG_ASSERT( maIndexList.Empty(), "XclImpXFRangeColumn::SetDefaultXF - Setting Default Column XF is not empty" ); + DBG_ASSERT( maIndexList.empty(), "XclImpXFRangeColumn::SetDefaultXF - Setting Default Column XF is not empty" ); // insert a complete row range with one insert. - maIndexList.Append( new XclImpXFRange( 0, MAXROW, rXFIndex ) ); + maIndexList.push_back( new XclImpXFRange( 0, MAXROW, rXFIndex ) ); } // ---------------------------------------------------------------------------- @@ -1621,7 +1649,7 @@ void XclImpXFRangeColumn::SetXF( SCROW nScRow, const XclImpXFIndex& rXFIndex ) SCROW nLastScRow = pPrevRange->mnScRow2; ULONG nIndex = nNextIndex - 1; XclImpXFRange* pThisRange = pPrevRange; - pPrevRange = nIndex ? maIndexList.GetObject( nIndex - 1 ) : 0; + pPrevRange = (nIndex > 0 && nIndex <= maIndexList.size()) ? &(maIndexList[ nIndex - 1 ]) : 0; if( nFirstScRow == nLastScRow ) // replace solely XF { @@ -1634,20 +1662,20 @@ void XclImpXFRangeColumn::SetXF( SCROW nScRow, const XclImpXFIndex& rXFIndex ) ++(pThisRange->mnScRow1); // try to concatenate with previous of this if( !pPrevRange || !pPrevRange->Expand( nScRow, rXFIndex ) ) - maIndexList.Insert( new XclImpXFRange( nScRow, rXFIndex ), nIndex ); + Insert( new XclImpXFRange( nScRow, rXFIndex ), nIndex ); } else if( nLastScRow == nScRow ) // replace last XF { --(pThisRange->mnScRow2); if( !pNextRange || !pNextRange->Expand( nScRow, rXFIndex ) ) - maIndexList.Insert( new XclImpXFRange( nScRow, rXFIndex ), nNextIndex ); + Insert( new XclImpXFRange( nScRow, rXFIndex ), nNextIndex ); } else // insert in the middle of the range { pThisRange->mnScRow1 = nScRow + 1; // List::Insert() moves entries towards end of list, so insert twice at nIndex - maIndexList.Insert( new XclImpXFRange( nScRow, rXFIndex ), nIndex ); - maIndexList.Insert( new XclImpXFRange( nFirstScRow, nScRow - 1, pThisRange->maXFIndex ), nIndex ); + Insert( new XclImpXFRange( nScRow, rXFIndex ), nIndex ); + Insert( new XclImpXFRange( nFirstScRow, nScRow - 1, pThisRange->maXFIndex ), nIndex ); } return; } @@ -1663,24 +1691,29 @@ void XclImpXFRangeColumn::SetXF( SCROW nScRow, const XclImpXFIndex& rXFIndex ) return; // create new range - maIndexList.Insert( new XclImpXFRange( nScRow, rXFIndex ), nNextIndex ); + Insert( new XclImpXFRange( nScRow, rXFIndex ), nNextIndex ); +} + +void XclImpXFRangeColumn::Insert(XclImpXFRange* pXFRange, ULONG nIndex) +{ + maIndexList.insert( maIndexList.begin() + nIndex, pXFRange ); } void XclImpXFRangeColumn::Find( XclImpXFRange*& rpPrevRange, XclImpXFRange*& rpNextRange, - ULONG& rnNextIndex, SCROW nScRow ) const + ULONG& rnNextIndex, SCROW nScRow ) { // test whether list is empty - if( maIndexList.Empty() ) + if( maIndexList.empty() ) { rpPrevRange = rpNextRange = 0; rnNextIndex = 0; return; } - rpPrevRange = maIndexList.GetObject( 0 ); - rpNextRange = maIndexList.GetObject( maIndexList.Count() - 1 ); + rpPrevRange = &maIndexList.front(); + rpNextRange = &maIndexList.back(); // test whether row is at end of list (contained in or behind last range) // rpPrevRange will contain a possible existing row @@ -1688,7 +1721,7 @@ void XclImpXFRangeColumn::Find( { rpPrevRange = rpNextRange; rpNextRange = 0; - rnNextIndex = maIndexList.Count(); + rnNextIndex = maIndexList.size(); return; } @@ -1706,12 +1739,12 @@ void XclImpXFRangeColumn::Find( // if rpPrevRange contains nScRow (rpNextRange will never contain nScRow) ULONG nPrevIndex = 0; ULONG nMidIndex; - rnNextIndex = maIndexList.Count() - 1; + rnNextIndex = maIndexList.size() - 1; XclImpXFRange* pMidRange; while( ((rnNextIndex - nPrevIndex) > 1) && (rpPrevRange->mnScRow2 < nScRow) ) { nMidIndex = (nPrevIndex + rnNextIndex) / 2; - pMidRange = maIndexList.GetObject( nMidIndex ); + pMidRange = &maIndexList[nMidIndex]; DBG_ASSERT( pMidRange, "XclImpXFRangeColumn::Find - missing XF index range" ); if( nScRow < pMidRange->mnScRow1 ) // row is really before pMidRange { @@ -1729,22 +1762,20 @@ void XclImpXFRangeColumn::Find( if( nScRow <= rpPrevRange->mnScRow2 ) { rnNextIndex = nPrevIndex + 1; - rpNextRange = maIndexList.GetObject( rnNextIndex ); + rpNextRange = &maIndexList[rnNextIndex]; } } void XclImpXFRangeColumn::TryConcatPrev( ULONG nIndex ) { - if( !nIndex ) + if( !nIndex || nIndex >= maIndexList.size() ) return; - XclImpXFRange* pPrevRange = maIndexList.GetObject( nIndex - 1 ); - XclImpXFRange* pNextRange = maIndexList.GetObject( nIndex ); - if( !pPrevRange || !pNextRange ) - return; + XclImpXFRange& prevRange = maIndexList[ nIndex - 1 ]; + XclImpXFRange& nextRange = maIndexList[ nIndex ]; - if( pPrevRange->Expand( *pNextRange ) ) - maIndexList.Delete( nIndex ); + if( prevRange.Expand( nextRange ) ) + maIndexList.erase( maIndexList.begin() + nIndex ); } // ---------------------------------------------------------------------------- @@ -1787,10 +1818,15 @@ void XclImpXFRangeBuffer::SetXF( const ScAddress& rScPos, sal_uInt16 nXFIndex, X if( pXF && ((pXF->GetHorAlign() == EXC_XF_HOR_CENTER_AS) || (pXF->GetHorAlign() == EXC_XF_HOR_FILL)) ) { // expand last merged range if this attribute is set repeatedly - ScRange* pRange = maMergeList.Last(); - if( pRange && (pRange->aEnd.Row() == nScRow) && (pRange->aEnd.Col() + 1 == nScCol) - && (eMode == xlXFModeBlank) ) - pRange->aEnd.IncCol(); + if ( !maMergeList.empty() ) + { + ScRange* pRange = maMergeList.back(); + if( (pRange->aEnd.Row() == nScRow) + && (pRange->aEnd.Col() + 1 == nScCol) + && (eMode == xlXFModeBlank) + ) + pRange->aEnd.IncCol(); + } else if( eMode != xlXFModeBlank ) // #108781# do not merge empty cells SetMerge( nScCol, nScRow ); } @@ -1871,14 +1907,17 @@ void XclImpXFRangeBuffer::Finalize() for( XclImpXFRangeColumnVec::const_iterator aVBeg = maColumns.begin(), aVEnd = maColumns.end(), aVIt = aVBeg; aVIt != aVEnd; ++aVIt ) { // apply all cell styles of an existing column - if( aVIt->is() ) + if( aVIt->get() ) { XclImpXFRangeColumn& rColumn = **aVIt; SCCOL nScCol = static_cast< SCCOL >( aVIt - aVBeg ); list<ScAttrEntry> aAttrs; - for( XclImpXFRange* pStyle = rColumn.First(); pStyle; pStyle = rColumn.Next() ) + + for (XclImpXFRangeColumn::IndexList::iterator itr = rColumn.begin(), itrEnd = rColumn.end(); + itr != itrEnd; ++itr) { - const XclImpXFIndex& rXFIndex = pStyle->maXFIndex; + XclImpXFRange& rStyle = *itr; + const XclImpXFIndex& rXFIndex = rStyle.maXFIndex; XclImpXF* pXF = rXFBuffer.GetXF( rXFIndex.GetXFIndex() ); if (!pXF) continue; @@ -1886,7 +1925,7 @@ void XclImpXFRangeBuffer::Finalize() sal_uInt32 nForceScNumFmt = rXFIndex.IsBoolCell() ? GetNumFmtBuffer().GetStdScNumFmt() : NUMBERFORMAT_ENTRY_NOT_FOUND; - pXF->ApplyPatternToAttrList(aAttrs, pStyle->mnScRow1, pStyle->mnScRow2, nForceScNumFmt); + pXF->ApplyPatternToAttrList(aAttrs, rStyle.mnScRow1, rStyle.mnScRow2, nForceScNumFmt); } if (aAttrs.empty() || aAttrs.back().nRow != MAXROW) @@ -1912,8 +1951,9 @@ void XclImpXFRangeBuffer::Finalize() XclImpHyperlink::InsertUrl( GetRoot(), aLIt->first, aLIt->second ); // apply cell merging - for( const ScRange* pRange = maMergeList.First(); pRange; pRange = maMergeList.Next() ) + for ( size_t i = 0, nRange = maMergeList.size(); i < nRange; ++i ) { + const ScRange* pRange = maMergeList[ i ]; const ScAddress& rStart = pRange->aStart; const ScAddress& rEnd = pRange->aEnd; bool bMultiCol = rStart.Col() != rEnd.Col(); diff --git a/sc/source/filter/excel/xlchart.cxx b/sc/source/filter/excel/xlchart.cxx index 34d011ed3d6a..8fcace686292 100644 --- a/sc/source/filter/excel/xlchart.cxx +++ b/sc/source/filter/excel/xlchart.cxx @@ -47,6 +47,7 @@ #include <com/sun/star/chart/XSecondAxisTitleSupplier.hpp> #include <com/sun/star/chart2/Symbol.hpp> +#include <sal/macros.h> #include <rtl/math.hxx> #include <svl/itemset.hxx> #include <svx/xfillit0.hxx> @@ -405,7 +406,7 @@ sal_uInt16 XclChartHelper::GetSeriesLineAutoColorIdx( sal_uInt16 nFormatIdx ) 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 63 }; - return spnLineColors[ nFormatIdx % STATIC_TABLE_SIZE( spnLineColors ) ]; + return spnLineColors[ nFormatIdx % SAL_N_ELEMENTS( spnLineColors ) ]; } sal_uInt16 XclChartHelper::GetSeriesFillAutoColorIdx( sal_uInt16 nFormatIdx ) @@ -420,13 +421,13 @@ sal_uInt16 XclChartHelper::GetSeriesFillAutoColorIdx( sal_uInt16 nFormatIdx ) 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 }; - return spnFillColors[ nFormatIdx % STATIC_TABLE_SIZE( spnFillColors ) ]; + return spnFillColors[ nFormatIdx % SAL_N_ELEMENTS( spnFillColors ) ]; } sal_uInt8 XclChartHelper::GetSeriesFillAutoTransp( sal_uInt16 nFormatIdx ) { static const sal_uInt8 spnTrans[] = { 0x00, 0x40, 0x20, 0x60, 0x70 }; - return spnTrans[ (nFormatIdx / 56) % STATIC_TABLE_SIZE( spnTrans ) ]; + return spnTrans[ (nFormatIdx / 56) % SAL_N_ELEMENTS( spnTrans ) ]; } sal_uInt16 XclChartHelper::GetAutoMarkerType( sal_uInt16 nFormatIdx ) @@ -435,14 +436,14 @@ sal_uInt16 XclChartHelper::GetAutoMarkerType( sal_uInt16 nFormatIdx ) EXC_CHMARKERFORMAT_DIAMOND, EXC_CHMARKERFORMAT_SQUARE, EXC_CHMARKERFORMAT_TRIANGLE, EXC_CHMARKERFORMAT_CROSS, EXC_CHMARKERFORMAT_STAR, EXC_CHMARKERFORMAT_CIRCLE, EXC_CHMARKERFORMAT_PLUS, EXC_CHMARKERFORMAT_DOWJ, EXC_CHMARKERFORMAT_STDDEV }; - return spnSymbols[ nFormatIdx % STATIC_TABLE_SIZE( spnSymbols ) ]; + return spnSymbols[ nFormatIdx % SAL_N_ELEMENTS( spnSymbols ) ]; } bool XclChartHelper::HasMarkerFillColor( sal_uInt16 nMarkerType ) { static const bool spbFilled[] = { false, true, true, true, false, false, false, false, true, false }; - return (nMarkerType < STATIC_TABLE_SIZE( spbFilled )) && spbFilled[ nMarkerType ]; + return (nMarkerType < SAL_N_ELEMENTS( spbFilled )) && spbFilled[ nMarkerType ]; } OUString XclChartHelper::GetErrorBarValuesRole( sal_uInt8 nBarType ) @@ -1054,7 +1055,7 @@ void XclChPropSetHelper::WriteEscherProperties( ScfPropertySet& rPropSet, const XclChEscherFormat& rEscherFmt, const XclChPicFormat& rPicFmt, XclChPropertyMode ePropMode ) { - if( rEscherFmt.mxItemSet.is() ) + if( rEscherFmt.mxItemSet ) { if( const XFillStyleItem* pStyleItem = static_cast< const XFillStyleItem* >( rEscherFmt.mxItemSet->GetItem( XATTR_FILLSTYLE, FALSE ) ) ) { diff --git a/sc/source/filter/excel/xlformula.cxx b/sc/source/filter/excel/xlformula.cxx index 04e428c3de7d..b5710123ebd8 100644 --- a/sc/source/filter/excel/xlformula.cxx +++ b/sc/source/filter/excel/xlformula.cxx @@ -563,7 +563,7 @@ XclExpStream& operator<<( XclExpStream& rStrm, const XclTokenArray& rTokArr ) XclExpStream& operator<<( XclExpStream& rStrm, const XclTokenArrayRef& rxTokArr ) { - if( rxTokArr.is() ) + if( rxTokArr ) rxTokArr->Write( rStrm ); else rStrm << sal_uInt16( 0 ); diff --git a/sc/source/filter/excel/xlpage.cxx b/sc/source/filter/excel/xlpage.cxx index 53cdd0550081..1fd4d155f5c4 100644 --- a/sc/source/filter/excel/xlpage.cxx +++ b/sc/source/filter/excel/xlpage.cxx @@ -33,6 +33,7 @@ #include <editeng/svxenum.hxx> #include <editeng/paperinf.hxx> #include <vcl/svapp.hxx> +#include <sal/macros.h> #include "scitems.hxx" #include <editeng/brshitem.hxx> #include "global.hxx" @@ -209,7 +210,7 @@ void XclPageData::SetDefaults() Size XclPageData::GetScPaperSize() const { const XclPaperSize* pEntry = pPaperSizeTable; - if( mnPaperSize < STATIC_TABLE_SIZE( pPaperSizeTable ) ) + if( mnPaperSize < SAL_N_ELEMENTS( pPaperSizeTable ) ) pEntry += mnPaperSize; Size aSize; diff --git a/sc/source/filter/excel/xlroot.cxx b/sc/source/filter/excel/xlroot.cxx index fbca2c85918a..5d439a249bc1 100644 --- a/sc/source/filter/excel/xlroot.cxx +++ b/sc/source/filter/excel/xlroot.cxx @@ -178,8 +178,9 @@ XclRoot::XclRoot( XclRootData& rRootData ) : // filter tracer // do not use CREATE_OUSTRING for conditional expression - mrData.mxTracer.reset( new XclTracer( GetDocUrl(), OUString::createFromAscii( - IsExport() ? "Office.Tracing/Export/Excel" : "Office.Tracing/Import/Excel" ) ) ); + mrData.mxTracer.reset( new XclTracer( GetDocUrl(), IsExport() ? + OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Tracing/Export/Excel")) + : OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Tracing/Import/Excel" )) ) ); } XclRoot::XclRoot( const XclRoot& rRoot ) : diff --git a/sc/source/filter/excel/xlstyle.cxx b/sc/source/filter/excel/xlstyle.cxx index cb95fd1658ed..83f19f994ce8 100644 --- a/sc/source/filter/excel/xlstyle.cxx +++ b/sc/source/filter/excel/xlstyle.cxx @@ -36,6 +36,7 @@ #include <com/sun/star/i18n/ScriptType.hpp> #include <vcl/svapp.hxx> #include <vcl/font.hxx> +#include <sal/macros.h> #include <rtl/tencinfo.h> #include <toolkit/unohlp.hxx> #include <editeng/svxfont.hxx> @@ -112,20 +113,20 @@ XclDefaultPalette::XclDefaultPalette( const XclRoot& rRoot ) : { case EXC_BIFF2: mpnColorTable = spnDefColorTable2; - mnTableSize = STATIC_TABLE_SIZE( spnDefColorTable2 ); + mnTableSize = SAL_N_ELEMENTS( spnDefColorTable2 ); break; case EXC_BIFF3: case EXC_BIFF4: mpnColorTable = spnDefColorTable3; - mnTableSize = STATIC_TABLE_SIZE( spnDefColorTable3 ); + mnTableSize = SAL_N_ELEMENTS( spnDefColorTable3 ); break; case EXC_BIFF5: mpnColorTable = spnDefColorTable5; - mnTableSize = STATIC_TABLE_SIZE( spnDefColorTable5 ); + mnTableSize = SAL_N_ELEMENTS( spnDefColorTable5 ); break; case EXC_BIFF8: mpnColorTable = spnDefColorTable8; - mnTableSize = STATIC_TABLE_SIZE( spnDefColorTable8 ); + mnTableSize = SAL_N_ELEMENTS( spnDefColorTable8 ); break; default: DBG_ERROR_BIFF(); diff --git a/sc/source/filter/excel/xltoolbar.cxx b/sc/source/filter/excel/xltoolbar.cxx index 0f0d985a3cf6..ebb6dabd4a17 100644 --- a/sc/source/filter/excel/xltoolbar.cxx +++ b/sc/source/filter/excel/xltoolbar.cxx @@ -257,21 +257,6 @@ bool TBC::ImportToolBarControl( CTBWrapper& rWrapper, const css::uno::Reference< if ( tbcd.get() ) { std::vector< css::beans::PropertyValue > props; -/* - if ( bBuiltin ) - { - rtl::OUString sCommand = helper.MSOCommandToOOCommand( cmdId ); - if ( sCommand.getLength() > 0 ) - { - beans::PropertyValue aProp; - - aProp.Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("CommandURL") ); - aProp.Value <<= sCommand; - props.push_back( aProp ); - } - - } -*/ bool bBeginGroup = false; if ( ! tbcd->ImportToolBarControl( helper, props, bBeginGroup, bIsMenuToolbar ) ) return false; diff --git a/sc/source/filter/excel/xltools.cxx b/sc/source/filter/excel/xltools.cxx index 5ee9429ebac7..f4b79daa7e66 100644 --- a/sc/source/filter/excel/xltools.cxx +++ b/sc/source/filter/excel/xltools.cxx @@ -34,6 +34,7 @@ #include <sal/mathconf.h> #include <unotools/fontcvt.hxx> #include <sfx2/objsh.hxx> +#include <sal/macros.h> #include <editeng/editstat.hxx> #include <filter/msfilter/msvbahelper.hxx> #include "xestream.hxx" @@ -358,7 +359,7 @@ Color XclTools::GetPatternColor( const Color& rPattColor, const Color& rBackColo 0x40, 0x40, 0x20, 0x60, 0x60, 0x60, 0x60, 0x48, // 08 - 15 0x50, 0x70, 0x78 // 16 - 18 }; - return (nXclPattern < STATIC_TABLE_SIZE( pnRatioTable )) ? + return (nXclPattern < SAL_N_ELEMENTS( pnRatioTable )) ? ScfTools::GetMixedColor( rPattColor, rBackColor, pnRatioTable[ nXclPattern ] ) : rPattColor; } @@ -488,10 +489,10 @@ static const sal_Char* const ppcDefNames[] = String XclTools::GetXclBuiltInDefName( sal_Unicode cBuiltIn ) { - DBG_ASSERT( STATIC_TABLE_SIZE( ppcDefNames ) == EXC_BUILTIN_UNKNOWN, + DBG_ASSERT( SAL_N_ELEMENTS( ppcDefNames ) == EXC_BUILTIN_UNKNOWN, "XclTools::GetXclBuiltInDefName - built-in defined name list modified" ); String aDefName; - if( cBuiltIn < STATIC_TABLE_SIZE( ppcDefNames ) ) + if( cBuiltIn < SAL_N_ELEMENTS( ppcDefNames ) ) aDefName.AssignAscii( ppcDefNames[ cBuiltIn ] ); else aDefName = String::CreateFromInt32( cBuiltIn ); @@ -555,7 +556,7 @@ String XclTools::GetBuiltInStyleName( sal_uInt8 nStyleId, const String& rName, s else { aStyleName = maStyleNamePrefix1; - if( nStyleId < STATIC_TABLE_SIZE( ppcStyleNames ) ) + if( nStyleId < SAL_N_ELEMENTS( ppcStyleNames ) ) aStyleName.AppendAscii( ppcStyleNames[ nStyleId ] ); else if( rName.Len() > 0 ) aStyleName.Append( rName ); @@ -595,7 +596,7 @@ bool XclTools::IsBuiltInStyleName( const String& rStyleName, sal_uInt8* pnStyleI if( nPrefixLen > 0 ) { String aShortName; - for( sal_uInt8 nId = 0; nId < STATIC_TABLE_SIZE( ppcStyleNames ); ++nId ) + for( sal_uInt8 nId = 0; nId < SAL_N_ELEMENTS( ppcStyleNames ); ++nId ) { if( nId != EXC_STYLE_NORMAL ) { diff --git a/sc/source/filter/ftools/fprogressbar.cxx b/sc/source/filter/ftools/fprogressbar.cxx index 533891b0d6fc..418ea656ebda 100644 --- a/sc/source/filter/ftools/fprogressbar.cxx +++ b/sc/source/filter/ftools/fprogressbar.cxx @@ -80,12 +80,11 @@ void ScfProgressBar::Init( SfxObjectShell* pDocShell ) mbInProgress = false; } -ScfProgressBar::ScfProgressSegment* ScfProgressBar::GetSegment( sal_Int32 nSegment ) const +ScfProgressBar::ScfProgressSegment* ScfProgressBar::GetSegment( sal_Int32 nSegment ) { if( nSegment < 0 ) return 0; - DBG_ASSERT( maSegments.GetObject( nSegment ), "ScfProgressBar::GetSegment - invalid segment index" ); - return maSegments.GetObject( nSegment ); + return &(maSegments.at( nSegment )); } void ScfProgressBar::SetCurrSegment( ScfProgressSegment* pSegment ) @@ -155,9 +154,9 @@ sal_Int32 ScfProgressBar::AddSegment( sal_Size nSize ) if( nSize == 0 ) return SCF_INV_SEGMENT; - maSegments.Append( new ScfProgressSegment( nSize ) ); + maSegments.push_back( new ScfProgressSegment( nSize ) ); mnTotalSize += nSize; - return static_cast< sal_Int32 >( maSegments.Count() - 1 ); + return static_cast< sal_Int32 >( maSegments.size() - 1 ); } ScfProgressBar& ScfProgressBar::GetSegmentProgressBar( sal_Int32 nSegment ) diff --git a/sc/source/filter/ftools/makefile.mk b/sc/source/filter/ftools/makefile.mk index d37e74a133a0..39c6984d5198 100644 --- a/sc/source/filter/ftools/makefile.mk +++ b/sc/source/filter/ftools/makefile.mk @@ -43,13 +43,13 @@ PROJECTPCHSOURCE=..\pch\filt_pch # --- Files -------------------------------------------------------- SLOFILES = \ + $(EXCEPTIONSFILES) + +EXCEPTIONSFILES = \ $(SLO)$/fapihelper.obj \ $(SLO)$/fprogressbar.obj \ $(SLO)$/ftools.obj -EXCEPTIONSFILES = \ - $(SLO)$/fapihelper.obj - # --- Targets ------------------------------------------------------- .INCLUDE : target.mk diff --git a/sc/source/filter/html/htmlexp.cxx b/sc/source/filter/html/htmlexp.cxx index 3b656448af39..33acd0f79e83 100644 --- a/sc/source/filter/html/htmlexp.cxx +++ b/sc/source/filter/html/htmlexp.cxx @@ -105,12 +105,12 @@ //======================================================================== -const static sal_Char __FAR_DATA sMyBegComment[] = "<!-- "; -const static sal_Char __FAR_DATA sMyEndComment[] = " -->"; -const static sal_Char __FAR_DATA sFontFamily[] = "font-family:"; -const static sal_Char __FAR_DATA sFontSize[] = "font-size:"; +const static sal_Char sMyBegComment[] = "<!-- "; +const static sal_Char sMyEndComment[] = " -->"; +const static sal_Char sFontFamily[] = "font-family:"; +const static sal_Char sFontSize[] = "font-size:"; -const USHORT __FAR_DATA ScHTMLExport::nDefaultFontSize[SC_HTML_FONTSIZES] = +const USHORT ScHTMLExport::nDefaultFontSize[SC_HTML_FONTSIZES] = { HTMLFONTSZ1_DFLT, HTMLFONTSZ2_DFLT, HTMLFONTSZ3_DFLT, HTMLFONTSZ4_DFLT, HTMLFONTSZ5_DFLT, HTMLFONTSZ6_DFLT, HTMLFONTSZ7_DFLT @@ -118,13 +118,13 @@ const USHORT __FAR_DATA ScHTMLExport::nDefaultFontSize[SC_HTML_FONTSIZES] = USHORT ScHTMLExport::nFontSize[SC_HTML_FONTSIZES] = { 0 }; -const char* __FAR_DATA ScHTMLExport::pFontSizeCss[SC_HTML_FONTSIZES] = +const char* ScHTMLExport::pFontSizeCss[SC_HTML_FONTSIZES] = { "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large" }; const USHORT ScHTMLExport::nCellSpacing = 0; -const sal_Char __FAR_DATA ScHTMLExport::sIndentSource[nIndentMax+1] = +const sal_Char ScHTMLExport::sIndentSource[nIndentMax+1] = "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"; //======================================================================== @@ -214,26 +214,6 @@ void lcl_AppendHTMLColorTripel( ByteString& rStr, const Color& rColor ) rStr += '\"'; } - -/*void lcl_TagOn( String& rResult, const String& rTag, const String* pStrOpt ) -{ - rResult = '<'; - rResult += rTag; - if ( pStrOpt ) - { - rResult += ' '; - rResult += *pStrOpt; - } - rResult += '>'; -} -*/ - -/*void lcl_TagOff( String& rResult, const String& rTag ) -{ - rResult = '<'; rResult += rTag; rResult += '>'; -} -*/ - ////////////////////////////////////////////////////////////////////////////// ScHTMLExport::ScHTMLExport( SvStream& rStrmP, const String& rBaseURL, ScDocument* pDocP, @@ -293,8 +273,7 @@ ScHTMLExport::ScHTMLExport( SvStream& rStrmP, const String& rBaseURL, ScDocument ScHTMLExport::~ScHTMLExport() { - for ( ScHTMLGraphEntry* pE = aGraphList.First(); pE; pE = aGraphList.Next() ) - delete pE; + aGraphList.clear(); delete pSrcArr; delete pDestArr; } @@ -705,7 +684,6 @@ void ScHTMLExport::WriteTables() // <TABLE ...> ByteString aByteStrOut = OOO_STRING_SVTOOLS_HTML_table; -// aStrOut = OOO_STRING_SVTOOLS_HTML_table; // FRAME=VOID, we do the styling of the cells in <TD> (((aByteStrOut += ' ') += OOO_STRING_SVTOOLS_HTML_frame) += '=') += OOO_STRING_SVTOOLS_HTML_TF_void; @@ -798,13 +776,14 @@ void ScHTMLExport::WriteTables() if ( bTabHasGraphics ) { // the rest that is not in a cell - for ( ScHTMLGraphEntry* pE = aGraphList.First(); pE; pE = aGraphList.Next() ) + size_t ListSize = aGraphList.size(); + for ( size_t i = 0; i < ListSize; ++i ) { + ScHTMLGraphEntry* pE = &aGraphList[ i ]; if ( !pE->bWritten ) WriteGraphEntry( pE ); - delete pE; } - aGraphList.Clear(); + aGraphList.clear(); if ( bTabAlignedLeft ) { // clear <TABLE ALIGN=LEFT> with <BR CLEAR=LEFT> aByteStrOut = OOO_STRING_SVTOOLS_HTML_linebreak; @@ -832,9 +811,10 @@ void ScHTMLExport::WriteCell( SCCOL nCol, SCROW nRow, SCTAB nTab ) ScHTMLGraphEntry* pGraphEntry = NULL; if ( bTabHasGraphics ) { - for ( pGraphEntry = aGraphList.First(); pGraphEntry; - pGraphEntry = aGraphList.Next() ) + size_t ListSize = aGraphList.size(); + for ( size_t i = 0; i < ListSize; ++i ) { + pGraphEntry = &aGraphList[ i ]; if ( pGraphEntry->bInCell && pGraphEntry->aRange.In( aPos ) ) { if ( pGraphEntry->aRange.aStart == aPos ) @@ -996,10 +976,10 @@ void ScHTMLExport::WriteCell( SCCOL nCol, SCROW nRow, SCTAB nTab ) break; case SVX_HOR_JUSTIFY_CENTER: pChar = OOO_STRING_SVTOOLS_HTML_AL_center; break; case SVX_HOR_JUSTIFY_BLOCK: pChar = OOO_STRING_SVTOOLS_HTML_AL_justify; break; - case SVX_HOR_JUSTIFY_RIGHT: pChar = OOO_STRING_SVTOOLS_HTML_AL_right; break; + case SVX_HOR_JUSTIFY_RIGHT: pChar = OOO_STRING_SVTOOLS_HTML_AL_right; break; case SVX_HOR_JUSTIFY_LEFT: case SVX_HOR_JUSTIFY_REPEAT: - default: pChar = OOO_STRING_SVTOOLS_HTML_AL_left; break; + default: pChar = OOO_STRING_SVTOOLS_HTML_AL_left; break; } (((aStrTD += ' ') += OOO_STRING_SVTOOLS_HTML_O_align) += '=') += pChar; @@ -1278,9 +1258,6 @@ BOOL ScHTMLExport::CopyLocalFileToINet( String& rFileNm, SfxMedium aMedium( *pDest, STREAM_WRITE | STREAM_SHARE_DENYNONE, FALSE ); - // temp. File anlegen - // aMedium.DownLoad(); - { SvFileStream aCpy( aMedium.GetPhysicalName(), STREAM_WRITE ); aCpy << aTmp; diff --git a/sc/source/filter/html/htmlexp2.cxx b/sc/source/filter/html/htmlexp2.cxx index c6299bda127a..ae072892e7d4 100644 --- a/sc/source/filter/html/htmlexp2.cxx +++ b/sc/source/filter/html/htmlexp2.cxx @@ -66,11 +66,11 @@ void ScHTMLExport::PrepareGraphics( ScDrawLayer* pDrawLayer, SCTAB nTab, if ( pDrawPage ) { bTabHasGraphics = TRUE; - FillGraphList( pDrawPage, nTab, - nStartCol, nStartRow, nEndCol, nEndRow ); - for ( ScHTMLGraphEntry* pE = aGraphList.First(); pE; - pE = aGraphList.Next() ) + FillGraphList( pDrawPage, nTab, nStartCol, nStartRow, nEndCol, nEndRow ); + size_t ListSize = aGraphList.size(); + for ( size_t i = 0; i < ListSize; ++i ) { + ScHTMLGraphEntry* pE = &aGraphList[ i ]; if ( !pE->bInCell ) { // nicht alle in Zellen: einige neben Tabelle bTabAlignedLeft = TRUE; @@ -127,7 +127,7 @@ void ScHTMLExport::FillGraphList( const SdrPage* pPage, SCTAB nTab, } ScHTMLGraphEntry* pE = new ScHTMLGraphEntry( pObject, aR, aSize, bInCell, aSpace ); - aGraphList.Insert( pE, LIST_APPEND ); + aGraphList.push_back( pE ); } pObject = aIter.Next(); } diff --git a/sc/source/filter/html/htmlimp.cxx b/sc/source/filter/html/htmlimp.cxx index 0c5e0ffd0b4c..90ece03f8646 100644 --- a/sc/source/filter/html/htmlimp.cxx +++ b/sc/source/filter/html/htmlimp.cxx @@ -150,8 +150,10 @@ void ScHTMLImport::WriteToDocument( pGlobTable->ApplyCellBorders( mpDoc, maRange.aStart ); // correct cell borders for merged cells - for ( ScEEParseEntry* pEntry = pParser->First(); pEntry; pEntry = pParser->Next() ) + size_t ListSize = pParser->ListSize(); + for ( size_t i = 0; i < ListSize; ++i ) { + const ScEEParseEntry* pEntry = pParser->ListEntry( i ); if( (pEntry->nColOverlap > 1) || (pEntry->nRowOverlap > 1) ) { SCTAB nTab = maRange.aStart.Tab(); diff --git a/sc/source/filter/html/htmlpars.cxx b/sc/source/filter/html/htmlpars.cxx index e7caef029ed1..b6aac9b67b22 100644 --- a/sc/source/filter/html/htmlpars.cxx +++ b/sc/source/filter/html/htmlpars.cxx @@ -128,7 +128,16 @@ ScHTMLLayoutParser::~ScHTMLLayoutParser() ScHTMLTableStackEntry* pS; while ( (pS = aTableStack.Pop()) != 0 ) { - if ( pList->GetPos( pS->pCellEntry ) == LIST_ENTRY_NOTFOUND ) + bool found = false; + for ( size_t i = 0, nListSize = maList.size(); i < nListSize; ++i ) + { + if ( pS->pCellEntry == maList[ i ] ) + { + found = true; + break; + } + } + if ( !found ) delete pS->pCellEntry; if ( pS->pLocalColOffset != pLocalColOffset ) delete pS->pLocalColOffset; @@ -361,8 +370,9 @@ void ScHTMLLayoutParser::SkipLocked( ScEEParseEntry* pE, BOOL bJoin ) do { bAgain = FALSE; - for ( ScRange* pR = xLockedList->First(); pR; pR = xLockedList->Next() ) + for ( size_t i = 0, nRanges = xLockedList->size(); i < nRanges; ++i ) { + ScRange* pR = (*xLockedList)[i]; if ( pR->Intersects( aRange ) ) { pE->nCol = pR->aEnd.Col() + 1; @@ -387,9 +397,8 @@ void ScHTMLLayoutParser::SkipLocked( ScEEParseEntry* pE, BOOL bJoin ) void ScHTMLLayoutParser::Adjust() { - for ( ScRange* pR = xLockedList->First(); pR; pR = xLockedList->Next() ) - delete pR; - xLockedList->Clear(); + xLockedList->RemoveAll(); + ScHTMLAdjustStack aStack; ScHTMLAdjustStackEntry* pS; USHORT nTab = 0; @@ -398,8 +407,9 @@ void ScHTMLLayoutParser::Adjust() SCROW nCurRow = 0; USHORT nPageWidth = (USHORT) aPageSize.Width(); Table* pTab = NULL; - for ( ScEEParseEntry* pE = pList->First(); pE; pE = pList->Next() ) + for ( size_t i = 0, nListSize = maList.size(); i < nListSize; ++i ) { + ScEEParseEntry* pE = maList[ i ]; if ( pE->nTab < nTab ) { // Table beendet if ( (pS = aStack.Pop()) != 0 ) @@ -539,30 +549,29 @@ void ScHTMLLayoutParser::SetWidths() MakeColNoRef( pLocalColOffset, nOff, 0, 0, 0 ); } nTableWidth = (USHORT)((*pLocalColOffset)[pLocalColOffset->Count() -1 ] - (*pLocalColOffset)[0]); - pE = pList->Seek( nFirstTableCell ); - while ( pE ) + for ( size_t i = nFirstTableCell, nListSize = maList.size(); i < nListSize; ++i ) { + pE = maList[ i ]; if ( pE->nTab == nTable ) { pE->nOffset = (USHORT) (*pLocalColOffset)[pE->nCol - nColCntStart]; pE->nWidth = 0; // to be recalculated later } - pE = pList->Next(); } } else { // einige mit einige ohne Width - pE = pList->Seek( nFirstTableCell ); // #36350# wieso eigentlich kein pE ?!? - if ( pE ) + if ( nFirstTableCell < maList.size() ) { USHORT* pOffsets = new USHORT[ nColsPerRow+1 ]; memset( pOffsets, 0, (nColsPerRow+1) * sizeof(USHORT) ); USHORT* pWidths = new USHORT[ nColsPerRow ]; memset( pWidths, 0, nColsPerRow * sizeof(USHORT) ); pOffsets[0] = nColOffsetStart; - while ( pE ) + for ( size_t i = nFirstTableCell, nListSize = maList.size(); i < nListSize; ++i ) { + pE = maList[ i ]; if ( pE->nTab == nTable && pE->nWidth ) { nCol = pE->nCol - nColCntStart; @@ -599,7 +608,6 @@ void ScHTMLLayoutParser::SetWidths() } } } - pE = pList->Next(); } USHORT nWidths = 0; USHORT nUnknown = 0; @@ -632,9 +640,9 @@ void ScHTMLLayoutParser::SetWidths() } nTableWidth = pOffsets[nColsPerRow] - pOffsets[0]; - pE = pList->Seek( nFirstTableCell ); - while ( pE ) + for ( size_t i = nFirstTableCell, nListSize = maList.size(); i < nListSize; ++i ) { + pE = maList[ i ]; if ( pE->nTab == nTable ) { nCol = pE->nCol - nColCntStart; @@ -648,7 +656,6 @@ void ScHTMLLayoutParser::SetWidths() pE->nWidth = pOffsets[nCol] - pE->nOffset; } } - pE = pList->Next(); } delete [] pWidths; @@ -661,9 +668,9 @@ void ScHTMLLayoutParser::SetWidths() if ( aPageSize.Width() < nMax ) aPageSize.Width() = nMax; } - pE = pList->Seek( nFirstTableCell ); - while ( pE ) + for ( size_t i = nFirstTableCell, nListSize = maList.size(); i < nListSize; ++i ) { + pE = maList[ i ]; if ( pE->nTab == nTable ) { if ( !pE->nWidth ) @@ -673,7 +680,6 @@ void ScHTMLLayoutParser::SetWidths() } MakeCol( pColOffset, pE->nOffset, pE->nWidth, nOffsetTolerance, nOffsetTolerance ); } - pE = pList->Next(); } } @@ -713,9 +719,18 @@ void ScHTMLLayoutParser::CloseEntry( ImportInfo* pInfo ) if ( bTabInTabCell ) { // in TableOff vom Stack geholt bTabInTabCell = FALSE; - if ( pList->GetPos( pActEntry ) == LIST_ENTRY_NOTFOUND ) + bool found = false; + for ( size_t i = 0, nListSize = maList.size(); i < nListSize; ++i ) + { + if ( pActEntry == maList[ i ] ) + { + found = true; + break; + } + } + if ( !found ) delete pActEntry; - NewActEntry( pList->Last() ); // neuer freifliegender pActEntry + NewActEntry( maList.back() ); // neuer freifliegender pActEntry return ; } if ( pActEntry->nTab == 0 ) @@ -745,7 +760,7 @@ void ScHTMLLayoutParser::CloseEntry( ImportInfo* pInfo ) } if ( rSel.HasRange() ) pActEntry->aItemSet.Put( SfxBoolItem( ATTR_LINEBREAK, TRUE ) ); - pList->Insert( pActEntry, LIST_APPEND ); + maList.push_back( pActEntry ); NewActEntry( pActEntry ); // neuer freifliegender pActEntry } @@ -1097,7 +1112,7 @@ void ScHTMLLayoutParser::TableOn( ImportInfo* pInfo ) nColOffsetStart = nColOffset; } - ScEEParseEntry* pE = pList->Last(); + ScEEParseEntry* pE = maList.back(); NewActEntry( pE ); // neuer freifliegender pActEntry xLockedList = new ScRangeList; } @@ -1144,7 +1159,7 @@ void ScHTMLLayoutParser::TableOn( ImportInfo* pInfo ) } nTable = ++nMaxTable; bFirstRow = TRUE; - nFirstTableCell = pList->Count(); + nFirstTableCell = maList.size(); pLocalColOffset = new ScHTMLColOffset; MakeColNoRef( pLocalColOffset, nColOffsetStart, 0, 0, 0 ); @@ -1316,11 +1331,8 @@ void ScHTMLLayoutParser::TableOff( ImportInfo* pInfo ) void ScHTMLLayoutParser::Image( ImportInfo* pInfo ) { - if ( !pActEntry->pImageList ) - pActEntry->pImageList = new ScHTMLImageList; - ScHTMLImageList* pIL = pActEntry->pImageList; ScHTMLImage* pImage = new ScHTMLImage; - pIL->Insert( pImage, LIST_APPEND ); + pActEntry->maImageList.push_back( pImage ); const HTMLOptions* pOptions = ((HTMLParser*)pInfo->pParser)->GetOptions(); USHORT nArrLen = pOptions->Count(); for ( USHORT i = 0; i < nArrLen; i++ ) @@ -1393,11 +1405,12 @@ void ScHTMLLayoutParser::Image( ImportInfo* pInfo ) pImage->aSize = pDefaultDev->LogicToPixel( pGraphic->GetPrefSize(), pGraphic->GetPrefMapMode() ); } - if ( pIL->Count() > 0 ) + if ( pActEntry->maImageList.size() > 0 ) { long nWidth = 0; - for ( ScHTMLImage* pI = pIL->First(); pI; pI = pIL->Next() ) + for ( sal_uInt32 i=0; i < pActEntry->maImageList.size(); ++i ) { + ScHTMLImage* pI = &pActEntry->maImageList[ i ]; if ( pI->nDir & nHorizontal ) nWidth += pI->aSize.Width() + 2 * pI->aSpace.X(); else @@ -1406,7 +1419,7 @@ void ScHTMLLayoutParser::Image( ImportInfo* pInfo ) if ( pActEntry->nWidth && (nWidth + pImage->aSize.Width() + 2 * pImage->aSpace.X() >= pActEntry->nWidth) ) - pIL->Last()->nDir = nVertical; + pActEntry->maImageList.back().nDir = nVertical; } } @@ -1444,7 +1457,7 @@ USHORT ScHTMLLayoutParser::GetWidthPixel( const HTMLOption* pOption ) { if ( rOptVal.Search('*') != STRING_NOTFOUND ) { // relativ zu was?!? -//2do: ColArray aller relativen Werte sammeln und dann MakeCol + //todo: ColArray aller relativen Werte sammeln und dann MakeCol return 0; } else @@ -1622,8 +1635,8 @@ void ScHTMLLayoutParser::ProcToken( ImportInfo* pInfo ) break; case HTML_PARABREAK_OFF: { // nach einem Image geht es vertikal weiter - if ( pActEntry->pImageList && pActEntry->pImageList->Count() > 0 ) - pActEntry->pImageList->Last()->nDir = nVertical; + if ( pActEntry->maImageList.size() > 0 ) + pActEntry->maImageList.back().nDir = nVertical; } break; case HTML_ANCHOR_ON: @@ -1638,7 +1651,7 @@ void ScHTMLLayoutParser::ProcToken( ImportInfo* pInfo ) break; case HTML_BIGPRINT_ON : { -//2do: aktuelle Fontgroesse merken und einen groesser + //tpdo: aktuelle Fontgroesse merken und einen groesser if ( IsAtBeginningOfText( pInfo ) ) pActEntry->aItemSet.Put( SvxFontHeightItem( maFontHeights[3], 100, ATTR_FONT_HEIGHT ) ); @@ -1646,7 +1659,7 @@ void ScHTMLLayoutParser::ProcToken( ImportInfo* pInfo ) break; case HTML_SMALLPRINT_ON : { -//2do: aktuelle Fontgroesse merken und einen kleiner + //todo: aktuelle Fontgroesse merken und einen kleiner if ( IsAtBeginningOfText( pInfo ) ) pActEntry->aItemSet.Put( SvxFontHeightItem( maFontHeights[0], 100, ATTR_FONT_HEIGHT ) ); @@ -1866,7 +1879,8 @@ private: // ---------------------------------------------------------------------------- ScHTMLTableMap::ScHTMLTableMap( ScHTMLTable& rParentTable ) : - mrParentTable( rParentTable ) + mrParentTable(rParentTable), + mpCurrTable(NULL) { } @@ -1987,7 +2001,12 @@ ScHTMLTable::ScHTMLTable( ScHTMLTable& rParentTable, const ImportInfo& rInfo, bo CreateNewEntry( rInfo ); } -ScHTMLTable::ScHTMLTable( SfxItemPool& rPool, EditEngine& rEditEngine, ScEEParseList& rEEParseList, ScHTMLTableId& rnUnusedId ) : +ScHTMLTable::ScHTMLTable( + SfxItemPool& rPool, + EditEngine& rEditEngine, + ::std::vector< ScEEParseEntry* >& rEEParseList, + ScHTMLTableId& rnUnusedId +) : mpParentTable( 0 ), maTableId( rnUnusedId ), maTableItemSet( rPool ), @@ -2020,8 +2039,10 @@ const SfxItemSet& ScHTMLTable::GetCurrItemSet() const ScHTMLSize ScHTMLTable::GetSpan( const ScHTMLPos& rCellPos ) const { ScHTMLSize aSpan( 1, 1 ); - ScRange* pRange = 0; - if( ((pRange = maVMergedCells.Find( rCellPos.MakeAddr() )) != 0) || ((pRange = maHMergedCells.Find( rCellPos.MakeAddr() )) != 0) ) + const ScRange* pRange = NULL; + if( ( (pRange = maVMergedCells.Find( rCellPos.MakeAddr() ) ) != 0) + || ( (pRange = maHMergedCells.Find( rCellPos.MakeAddr() ) ) != 0) + ) aSpan.Set( pRange->aEnd.Col() - pRange->aStart.Col() + 1, pRange->aEnd.Row() - pRange->aStart.Row() + 1 ); return aSpan; } @@ -2338,7 +2359,7 @@ void ScHTMLTable::ImplPushEntryToList( ScHTMLEntryList& rEntryList, ScHTMLEntryP // HTML entry list does not own the entries rEntryList.push_back( rxEntry.get() ); // mrEEParseList (reference to member of ScEEParser) owns the entries - mrEEParseList.Insert( rxEntry.release(), LIST_APPEND ); + mrEEParseList.push_back( rxEntry.release() ); } bool ScHTMLTable::PushEntry( ScHTMLEntryPtr& rxEntry ) @@ -2603,8 +2624,11 @@ void ScHTMLTable::FillEmptyCells() aIter->FillEmptyCells(); // insert the final vertically merged ranges into maUsedCells - for( const ScRange* pRange = maVMergedCells.First(); pRange; pRange = maVMergedCells.Next() ) + for ( size_t i = 0, nRanges = maVMergedCells.size(); i < nRanges; ++i ) + { + ScRange* pRange = maVMergedCells[ i ]; maUsedCells.Join( *pRange ); + } for( ScAddress aAddr; aAddr.Row() < maSize.mnRows; aAddr.IncRow() ) { @@ -2768,7 +2792,12 @@ void ScHTMLTable::RecalcDocPos( const ScHTMLPos& rBasePos ) // ============================================================================ -ScHTMLGlobalTable::ScHTMLGlobalTable( SfxItemPool& rPool, EditEngine& rEditEngine, ScEEParseList& rEEParseList, ScHTMLTableId& rnUnusedId ) : +ScHTMLGlobalTable::ScHTMLGlobalTable( + SfxItemPool& rPool, + EditEngine& rEditEngine, + ::std::vector< ScEEParseEntry* >& rEEParseList, + ScHTMLTableId& rnUnusedId +) : ScHTMLTable( rPool, rEditEngine, rEEParseList, rnUnusedId ) { } @@ -2794,7 +2823,7 @@ ScHTMLQueryParser::ScHTMLQueryParser( EditEngine* pEditEngine, ScDocument* pDoc mnUnusedId( SC_HTML_GLOBAL_TABLE ), mbTitleOn( false ) { - mxGlobTable.reset( new ScHTMLGlobalTable( *pPool, *pEdit, *pList, mnUnusedId ) ); + mxGlobTable.reset( new ScHTMLGlobalTable( *pPool, *pEdit, maList, mnUnusedId ) ); mpCurrTable = mxGlobTable.get(); } diff --git a/sc/source/filter/html/makefile.mk b/sc/source/filter/html/makefile.mk index 41db4de9780f..cb6312b3601d 100644 --- a/sc/source/filter/html/makefile.mk +++ b/sc/source/filter/html/makefile.mk @@ -44,14 +44,13 @@ VISIBILITY_HIDDEN=TRUE # --- Files -------------------------------------------------------- -SLOFILES = \ - $(SLO)$/htmlexp.obj \ - $(SLO)$/htmlexp2.obj \ - $(SLO)$/htmlimp.obj \ - $(SLO)$/htmlpars.obj +SLOFILES = \ + $(EXCEPTIONSFILES) -EXCEPTIONSFILES = \ +EXCEPTIONSFILES = \ $(SLO)$/htmlexp.obj \ + $(SLO)$/htmlexp2.obj \ + $(SLO)$/htmlimp.obj \ $(SLO)$/htmlpars.obj # --- Targets ------------------------------------------------------- diff --git a/sc/source/filter/inc/eeparser.hxx b/sc/source/filter/inc/eeparser.hxx index b0d7a20e7743..45abeeab9051 100644 --- a/sc/source/filter/inc/eeparser.hxx +++ b/sc/source/filter/inc/eeparser.hxx @@ -36,6 +36,8 @@ #include <svl/itemset.hxx> #include <editeng/editdata.hxx> #include <address.hxx> +#include <boost/ptr_container/ptr_vector.hpp> +#include <vector> const sal_Char nHorizontal = 1; const sal_Char nVertical = 2; @@ -57,7 +59,6 @@ struct ScHTMLImage ~ScHTMLImage() { if ( pGraphic ) delete pGraphic; } }; -DECLARE_LIST( ScHTMLImageList, ScHTMLImage* ) struct ScEEParseEntry { @@ -67,28 +68,28 @@ struct ScEEParseEntry String* pNumStr; // HTML evtl. SDNUM String String* pName; // HTML evtl. Anchor/RangeName String aAltText; // HTML IMG ALT Text - ScHTMLImageList* pImageList; // Grafiken in dieser Zelle + boost::ptr_vector< ScHTMLImage > maImageList; // Grafiken in dieser Zelle SCCOL nCol; // relativ zum Beginn des Parse SCROW nRow; - USHORT nTab; // HTML TableInTable - USHORT nTwips; // RTF ColAdjust etc. + sal_uInt16 nTab; // HTML TableInTable + sal_uInt16 nTwips; // RTF ColAdjust etc. SCCOL nColOverlap; // merged cells wenn >1 SCROW nRowOverlap; // merged cells wenn >1 - USHORT nOffset; // HTML PixelOffset - USHORT nWidth; // HTML PixelWidth - BOOL bHasGraphic; // HTML any image loaded + sal_uInt16 nOffset; // HTML PixelOffset + sal_uInt16 nWidth; // HTML PixelWidth + bool bHasGraphic; // HTML any image loaded bool bEntirePara; // TRUE = use entire paragraph, false = use selection ScEEParseEntry( SfxItemPool* pPool ) : aItemSet( *pPool ), pValStr( NULL ), - pNumStr( NULL ), pName( NULL ), pImageList( NULL ), + pNumStr( NULL ), pName( NULL ), nCol(SCCOL_MAX), nRow(SCROW_MAX), nTab(0), nColOverlap(1), nRowOverlap(1), nOffset(0), nWidth(0), bHasGraphic(FALSE), bEntirePara(true) {} ScEEParseEntry( const SfxItemSet& rItemSet ) : aItemSet( rItemSet ), pValStr( NULL ), - pNumStr( NULL ), pName( NULL ), pImageList( NULL ), + pNumStr( NULL ), pName( NULL ), nCol(SCCOL_MAX), nRow(SCROW_MAX), nTab(0), nColOverlap(1), nRowOverlap(1), nOffset(0), nWidth(0), bHasGraphic(FALSE), bEntirePara(true) @@ -101,18 +102,10 @@ struct ScEEParseEntry delete pNumStr; if ( pName ) delete pName; - if ( pImageList ) - { - for ( ScHTMLImage* pI = pImageList->First(); - pI; pI = pImageList->Next() ) - { - delete pI; - } - delete pImageList; - } + if ( maImageList.size() ) + maImageList.clear(); } }; -DECLARE_LIST( ScEEParseList, ScEEParseEntry* ) class EditEngine; @@ -123,7 +116,7 @@ protected: EditEngine* pEdit; SfxItemPool* pPool; SfxItemPool* pDocPool; - ScEEParseList* pList; + ::std::vector< ScEEParseEntry* > maList; ScEEParseEntry* pActEntry; Table* pColWidths; int nLastToken; @@ -138,14 +131,15 @@ public: ScEEParser( EditEngine* ); virtual ~ScEEParser(); - virtual ULONG Read( SvStream&, const String& rBaseURL ) = 0; + virtual ULONG Read( SvStream&, const String& rBaseURL ) = 0; - void GetDimensions( SCCOL& nCols, SCROW& nRows ) const - { nCols = nColMax; nRows = nRowMax; } - ULONG Count() const { return pList->Count(); } - ScEEParseEntry* First() const { return pList->First(); } - ScEEParseEntry* Next() const { return pList->Next(); } - Table* GetColWidths() const { return pColWidths; } + Table* GetColWidths() const { return pColWidths; } + void GetDimensions( SCCOL& nCols, SCROW& nRows ) const + { nCols = nColMax; nRows = nRowMax; } + + inline size_t ListSize() const{ return maList.size(); } + ScEEParseEntry* ListEntry( size_t index ) { return maList[ index ]; } + const ScEEParseEntry* ListEntry( size_t index ) const { return maList[ index ]; } }; diff --git a/sc/source/filter/inc/excdoc.hxx b/sc/source/filter/inc/excdoc.hxx index 26b9a64ef89a..3ba8b5e65936 100644 --- a/sc/source/filter/inc/excdoc.hxx +++ b/sc/source/filter/inc/excdoc.hxx @@ -33,6 +33,7 @@ #include "excrecds.hxx" #include "xeroot.hxx" #include "root.hxx" +#include <boost/shared_ptr.hpp> //------------------------------------------------------------------ Forwards - @@ -55,7 +56,7 @@ class ExcTable : public XclExpRecordBase, public XclExpRoot { private: typedef XclExpRecordList< ExcBundlesheetBase > ExcBoundsheetList; - typedef ScfRef< XclExpCellTable > XclExpCellTableRef; + typedef boost::shared_ptr< XclExpCellTable > XclExpCellTableRef; XclExpRecordList<> aRecList; XclExpCellTableRef mxCellTable; diff --git a/sc/source/filter/inc/excrecds.hxx b/sc/source/filter/inc/excrecds.hxx index a450fb00f368..7e1ce313c26b 100644 --- a/sc/source/filter/inc/excrecds.hxx +++ b/sc/source/filter/inc/excrecds.hxx @@ -47,6 +47,7 @@ #include "root.hxx" #include "excdefs.hxx" #include "cell.hxx" +#include <boost/shared_ptr.hpp> //------------------------------------------------------------------ Forwards - @@ -500,7 +501,7 @@ public: private: using XclExpRoot::CreateRecord; - typedef ScfRef< ExcAutoFilterRecs > XclExpTabFilterRef; + typedef boost::shared_ptr< ExcAutoFilterRecs > XclExpTabFilterRef; typedef ::std::map< SCTAB, XclExpTabFilterRef > XclExpTabFilterMap; XclExpTabFilterMap maFilterMap; diff --git a/sc/source/filter/inc/expbase.hxx b/sc/source/filter/inc/expbase.hxx index 1500e7d634f5..807d83d02e4e 100644 --- a/sc/source/filter/inc/expbase.hxx +++ b/sc/source/filter/inc/expbase.hxx @@ -41,9 +41,9 @@ class ScExportBase { public: #if defined UNX - static const sal_Char __FAR_DATA sNewLine; + static const sal_Char sNewLine; #else - static const sal_Char __FAR_DATA sNewLine[]; + static const sal_Char sNewLine[]; #endif protected: diff --git a/sc/source/filter/inc/fapihelper.hxx b/sc/source/filter/inc/fapihelper.hxx index babf2cc575d7..31ac93ad934a 100644 --- a/sc/source/filter/inc/fapihelper.hxx +++ b/sc/source/filter/inc/fapihelper.hxx @@ -183,7 +183,7 @@ public: { UnoAny aAny; return GetAnyProperty( aAny, rPropName ) && (aAny >>= rValue); } /** Gets the specified Boolean property from the property set. - @return true = property contains true; false = property contains false or error occured. */ + @return true = property contains true; false = property contains false or error occurred. */ bool GetBoolProperty( const ::rtl::OUString& rPropName ) const; /** Gets the specified Boolean property from the property set. diff --git a/sc/source/filter/inc/fprogressbar.hxx b/sc/source/filter/inc/fprogressbar.hxx index b65b12d981f0..3828327f3b92 100644 --- a/sc/source/filter/inc/fprogressbar.hxx +++ b/sc/source/filter/inc/fprogressbar.hxx @@ -29,6 +29,8 @@ #ifndef SC_FPROGRESSBAR_HXX #define SC_FPROGRESSBAR_HXX +#include <boost/noncopyable.hpp> +#include <boost/ptr_container/ptr_vector.hpp> #include "globstr.hrc" #include "ftools.hxx" #include "scdllapi.h" @@ -111,7 +113,7 @@ const sal_Int32 SCF_INV_SEGMENT = -1; // not allowed (second segment active): aProgress.Progress(); // not allowed (first segment not empty): aProgress.GetSegmentProgressBar( nSeg1 ); */ -class ScfProgressBar : ScfNoCopy +class ScfProgressBar : private boost::noncopyable { public: explicit ScfProgressBar( SfxObjectShell* pDocShell, const String& rText ); @@ -153,7 +155,7 @@ private: void Init( SfxObjectShell* pDocShell ); /** Returns the segment specified by list index. */ - ScfProgressSegment* GetSegment( sal_Int32 nSegment ) const; + ScfProgressSegment* GetSegment( sal_Int32 nSegment ); /** Activates progress bar and sets current segment. */ void SetCurrSegment( ScfProgressSegment* pSegment ); /** Increases mnTotalPos and calls the system progress bar. */ @@ -173,8 +175,8 @@ private: ~ScfProgressSegment(); }; - typedef ::std::auto_ptr< ScProgress > ScProgressPtr; - typedef ScfDelList< ScfProgressSegment > ScfSegmentList; + typedef ::std::auto_ptr< ScProgress > ScProgressPtr; + typedef boost::ptr_vector< ScfProgressSegment > ScfSegmentList; ScfSegmentList maSegments; /// List of progress segments. String maText; /// UI string for system progress. diff --git a/sc/source/filter/inc/ftools.hxx b/sc/source/filter/inc/ftools.hxx index d02cba498fcf..56c787c04bc3 100644 --- a/sc/source/filter/inc/ftools.hxx +++ b/sc/source/filter/inc/ftools.hxx @@ -36,16 +36,17 @@ #include <tools/string.hxx> #include <tools/list.hxx> #include <tools/debug.hxx> +#include <sal/macros.h> #include <oox/helper/helper.hxx> +#include <boost/noncopyable.hpp> +#include <boost/shared_ptr.hpp> #include "filter.hxx" #include "scdllapi.h" // Common macros ============================================================== -/** Expands to the size of a STATIC data array. */ -#define STATIC_TABLE_SIZE( array ) (sizeof(array)/sizeof(*(array))) /** Expands to a pointer behind the last element of a STATIC data array (like STL end()). */ -#define STATIC_TABLE_END( array ) ((array)+STATIC_TABLE_SIZE(array)) +#define STATIC_TABLE_END( array ) ((array)+SAL_N_ELEMENTS(array)) /** Expands to a temporary String, created from an ASCII character array. */ #define CREATE_STRING( ascii ) String( RTL_CONSTASCII_USTRINGPARAM( ascii ) ) @@ -138,116 +139,49 @@ void insert_value( Type& rnBitField, InsertType nValue, sal_uInt8 nStartBit, sal // ============================================================================ -/** Deriving from this class prevents copy construction. */ -class ScfNoCopy -{ -private: - ScfNoCopy( const ScfNoCopy& ); - ScfNoCopy& operator=( const ScfNoCopy& ); -protected: - inline ScfNoCopy() {} -}; - -// ---------------------------------------------------------------------------- - -/** Deriving from this class prevents construction in general. */ -class ScfNoInstance : private ScfNoCopy {}; - -// ============================================================================ - -/** Simple shared pointer (NOT thread-save, but faster than boost::shared_ptr). */ -template< typename Type > -class ScfRef -{ - template< typename > friend class ScfRef; - -public: - typedef Type element_type; - typedef ScfRef this_type; - - inline explicit ScfRef( element_type* pObj = 0 ) { eat( pObj ); } - inline /*implicit*/ ScfRef( const this_type& rRef ) { eat( rRef.mpObj, rRef.mpnCount ); } - template< typename Type2 > - inline /*implicit*/ ScfRef( const ScfRef< Type2 >& rRef ) { eat( rRef.mpObj, rRef.mpnCount ); } - inline ~ScfRef() { rel(); } - - inline void reset( element_type* pObj = 0 ) { rel(); eat( pObj ); } - inline this_type& operator=( const this_type& rRef ) { if( this != &rRef ) { rel(); eat( rRef.mpObj, rRef.mpnCount ); } return *this; } - template< typename Type2 > - inline this_type& operator=( const ScfRef< Type2 >& rRef ) { rel(); eat( rRef.mpObj, rRef.mpnCount ); return *this; } - - inline element_type* get() const { return mpObj; } - inline bool is() const { return mpObj != 0; } - - inline element_type* operator->() const { return mpObj; } - inline element_type& operator*() const { return *mpObj; } - - inline bool operator!() const { return mpObj == 0; } - -private: - inline void eat( element_type* pObj, size_t* pnCount = 0 ) { mpObj = pObj; mpnCount = mpObj ? (pnCount ? pnCount : new size_t( 0 )) : 0; if( mpnCount ) ++*mpnCount; } - inline void rel() { if( mpnCount && !--*mpnCount ) { DELETEZ( mpObj ); DELETEZ( mpnCount ); } } - -private: - Type* mpObj; - size_t* mpnCount; -}; - -template< typename Type > -inline bool operator==( const ScfRef< Type >& rxRef1, const ScfRef< Type >& rxRef2 ) -{ - return rxRef1.get() == rxRef2.get(); -} - -template< typename Type > -inline bool operator!=( const ScfRef< Type >& rxRef1, const ScfRef< Type >& rxRef2 ) -{ - return rxRef1.get() != rxRef2.get(); -} - -template< typename Type > -inline bool operator<( const ScfRef< Type >& rxRef1, const ScfRef< Type >& rxRef2 ) -{ - return rxRef1.get() < rxRef2.get(); -} - -template< typename Type > -inline bool operator>( const ScfRef< Type >& rxRef1, const ScfRef< Type >& rxRef2 ) -{ - return rxRef1.get() > rxRef2.get(); -} - -template< typename Type > -inline bool operator<=( const ScfRef< Type >& rxRef1, const ScfRef< Type >& rxRef2 ) -{ - return rxRef1.get() <= rxRef2.get(); -} - -template< typename Type > -inline bool operator>=( const ScfRef< Type >& rxRef1, const ScfRef< Type >& rxRef2 ) -{ - return rxRef1.get() >= rxRef2.get(); -} - -// ---------------------------------------------------------------------------- - -/** Template for a map of ref-counted objects with additional accessor functions. */ +/** + * Template for a map of ref-counted objects with additional accessor functions. + * + * Note that unlike <c>std::map</c> or ,c>boost::ptr_map</c> this map can be + * used for classes that do not have a default constructor. + * + * @tparam KeyType The key type used to access elements. + * @tparam ObjType The element type to be stored. Note that this is stored + * internally as <c>boost::shared_ptr<ObjType></c> + **/ template< typename KeyType, typename ObjType > -class ScfRefMap : public ::std::map< KeyType, ScfRef< ObjType > > +class ScfRefMap : public ::std::map< KeyType, boost::shared_ptr< ObjType > > { public: typedef KeyType key_type; - typedef ScfRef< ObjType > ref_type; + typedef boost::shared_ptr< ObjType > ref_type; typedef ::std::map< key_type, ref_type > map_type; - /** Returns true, if the object accossiated to the passed key exists. */ + /** + * Does a valid object with the passed key exist in the map? + * + * @param nKey The key to look for in the map. + * @return true if the key exists in the map and points to a valid instance + * of <c>ObjType<c>. + **/ inline bool has( key_type nKey ) const { typename map_type::const_iterator aIt = find( nKey ); - return (aIt != this->end()) && aIt->second.is(); + return (aIt != this->end()) && aIt->second; } - /** Returns a reference to the object accossiated to the passed key, or 0 on error. */ + /** + * Returns a reference to the object associated to the passed key. + * + * If the key does not exist in the map, a new (empty) instance of ref_type + * is created and returned. + * + * Note: This method differs from the behaviour of <c>std::map::operator[]</c> + * in that if a new instance is returned, it is NOT added to the map. + * + * @param nKey The key to look for in the map. + * @return The instance of <c>ref_type</c> corresponding to nKey or a new instance. + **/ inline ref_type get( key_type nKey ) const { typename map_type::const_iterator aIt = find( nKey ); @@ -269,7 +203,7 @@ class SotStorageStreamRef; class SvStream; /** Contains static methods used anywhere in the filters. */ -class ScfTools : ScfNoInstance +class ScfTools : boost::noncopyable { public: @@ -400,6 +334,10 @@ private: static const String& GetHTMLIndexPrefix(); /** Returns the prefix for table names. */ static const String& GetHTMLNamePrefix(); + /** We don't want anybody to instantiate this class, since it is just a + collection of static items. To enforce this, the default constructor + is made private */ + ScfTools(); }; // Containers ================================================================= @@ -415,94 +353,6 @@ typedef ::std::vector< String > ScfStringVec; // ---------------------------------------------------------------------------- -/** Template for a list that owns the contained objects. - @descr This list stores pointers to objects and deletes the objects itself - on destruction. The Clear() method deletes all objects too. */ -template< typename Type > class ScfDelList -{ -public: - inline explicit ScfDelList( USHORT nInitSize = 16, USHORT nResize = 16 ) : - maList( nInitSize, nResize ) {} - /** Creates a deep copy of the passed list (copy-constructs all contained objects). */ - inline explicit ScfDelList( const ScfDelList& rSrc ) { *this = rSrc; } - virtual ~ScfDelList(); - - /** Creates a deep copy of the passed list (copy-constructs all contained objects). */ - ScfDelList& operator=( const ScfDelList& rSrc ); - - inline void Insert( Type* pObj, ULONG nIndex ) { if( pObj ) maList.Insert( pObj, nIndex ); } - inline void Append( Type* pObj ) { if( pObj ) maList.Insert( pObj, LIST_APPEND ); } - /** Removes the object without deletion. */ - inline Type* Remove( ULONG nIndex ) { return static_cast< Type* >( maList.Remove( nIndex ) ); } - /** Removes and deletes the object. */ - inline void Delete( ULONG nIndex ) { delete Remove( nIndex ); } - /** Exchanges the contained object with the passed, returns the old. */ - inline Type* Exchange( Type* pObj, ULONG nIndex ) { return static_cast< Type* >( maList.Replace( pObj, nIndex ) ); } - /** Replaces (deletes) the contained object. */ - inline void Replace( Type* pObj, ULONG nIndex ) { delete Exchange( pObj, nIndex ); } - - void Clear(); - inline ULONG Count() const { return maList.Count(); } - inline bool Empty() const { return maList.Count() == 0; } - - inline Type* GetCurObject() const { return static_cast< Type* >( maList.GetCurObject() ); } - inline ULONG GetCurPos() const { return maList.GetCurPos(); } - inline Type* GetObject( sal_uInt32 nIndex ) const { return static_cast< Type* >( maList.GetObject( nIndex ) ); } - - inline Type* First() const { return static_cast< Type* >( maList.First() ); } - inline Type* Last() const { return static_cast< Type* >( maList.Last() ); } - inline Type* Next() const { return static_cast< Type* >( maList.Next() ); } - inline Type* Prev() const { return static_cast< Type* >( maList.Prev() ); } - -private: - mutable List maList; /// The base container object. -}; - -template< typename Type > ScfDelList< Type >& ScfDelList< Type >::operator=( const ScfDelList& rSrc ) -{ - Clear(); - for( const Type* pObj = rSrc.First(); pObj; pObj = rSrc.Next() ) - Append( new Type( *pObj ) ); - return *this; -} - -template< typename Type > ScfDelList< Type >::~ScfDelList() -{ - Clear(); -} - -template< typename Type > void ScfDelList< Type >::Clear() -{ - for( Type* pObj = First(); pObj; pObj = Next() ) - delete pObj; - maList.Clear(); -} - -// ---------------------------------------------------------------------------- - -/** Template for a stack that owns the contained objects. - @descr This stack stores pointers to objects and deletes the objects - itself on destruction. The Clear() method deletes all objects too. - The Pop() method removes the top object from stack without deletion. */ -template< typename Type > -class ScfDelStack : private ScfDelList< Type > -{ -public: - inline ScfDelStack( USHORT nInitSize = 16, USHORT nResize = 16 ) : - ScfDelList< Type >( nInitSize, nResize ) {} - - inline void Push( Type* pObj ) { Append( pObj ); } - /** Removes the top object without deletion. */ - inline Type* Pop() { return Remove( Count() - 1 ); } - - inline Type* Top() const { return GetObject( Count() - 1 ); } - - using ScfDelList< Type >::Clear; - using ScfDelList< Type >::Count; - using ScfDelList< Type >::Empty; -}; - -// ---------------------------------------------------------------------------- class ScFormatFilterPluginImpl : public ScFormatFilterPlugin { public: ScFormatFilterPluginImpl(); diff --git a/sc/source/filter/inc/htmlexp.hxx b/sc/source/filter/inc/htmlexp.hxx index 4a7e8f3f32b9..e4392944abdc 100644 --- a/sc/source/filter/inc/htmlexp.hxx +++ b/sc/source/filter/inc/htmlexp.hxx @@ -33,6 +33,7 @@ #include <rtl/textenc.h> #include <tools/gen.hxx> #include <tools/color.hxx> +#include <boost/ptr_container/ptr_vector.hpp> #include "expbase.hxx" @@ -87,7 +88,6 @@ struct ScHTMLGraphEntry pObject( pObj ), bInCell( bIn ), bWritten( FALSE ) {} }; -DECLARE_LIST( ScHTMLGraphList, ScHTMLGraphEntry* ) #define SC_HTML_FONTSIZES 7 const short nIndentMax = 23; @@ -100,9 +100,9 @@ class ScHTMLExport : public ScExportBase static USHORT nFontSize[SC_HTML_FONTSIZES]; static const char* pFontSizeCss[SC_HTML_FONTSIZES]; static const USHORT nCellSpacing; - static const sal_Char __FAR_DATA sIndentSource[]; + static const sal_Char sIndentSource[]; - ScHTMLGraphList aGraphList; + boost::ptr_vector< ScHTMLGraphEntry > aGraphList; ScHTMLStyle aHTMLStyle; String aBaseURL; String aStreamPath; diff --git a/sc/source/filter/inc/htmlpars.hxx b/sc/source/filter/inc/htmlpars.hxx index ffad22b23828..84b0b04dcd2f 100644 --- a/sc/source/filter/inc/htmlpars.hxx +++ b/sc/source/filter/inc/htmlpars.hxx @@ -442,7 +442,7 @@ protected: explicit ScHTMLTable( SfxItemPool& rPool, EditEngine& rEditEngine, - ScEEParseList& rEEParseList, + ::std::vector< ScEEParseEntry* >& rEEParseList, ScHTMLTableId& rnUnusedId ); /** Fills all empty cells in this and nested tables with dummy parse entries. */ @@ -542,7 +542,7 @@ private: ScRangeList maVMergedCells; /// List of all vertically merged cells. ScRangeList maUsedCells; /// List of all used cells. EditEngine& mrEditEngine; /// Edit engine (from ScEEParser). - ScEEParseList& mrEEParseList; /// List that owns the parse entries (from ScEEParser). + ::std::vector< ScEEParseEntry* >& mrEEParseList; /// List that owns the parse entries (from ScEEParser). ScHTMLEntryMap maEntryMap; /// List of entries for each cell. ScHTMLEntryList* mpCurrEntryList; /// Current entry list from map for faster access. ScHTMLEntryPtr mxCurrEntry; /// Working entry, not yet inserted in a list. @@ -566,7 +566,7 @@ public: explicit ScHTMLGlobalTable( SfxItemPool& rPool, EditEngine& rEditEngine, - ScEEParseList& rEEParseList, + ::std::vector< ScEEParseEntry* >& rEEParseList, ScHTMLTableId& rnUnusedId ); virtual ~ScHTMLGlobalTable(); diff --git a/sc/source/filter/inc/imp_op.hxx b/sc/source/filter/inc/imp_op.hxx index f5d85328afdf..cad73ce95517 100644 --- a/sc/source/filter/inc/imp_op.hxx +++ b/sc/source/filter/inc/imp_op.hxx @@ -39,6 +39,8 @@ #include "otlnbuff.hxx" #include "colrowst.hxx" #include "excdefs.hxx" +#include <boost/shared_ptr.hpp> +#include <boost/ptr_container/ptr_vector.hpp> class SfxItemSet; @@ -78,8 +80,8 @@ public: void Convert(); private: - typedef ScfRef< XclImpOutlineBuffer > XclImpOutlineBfrRef; - typedef ScfRef< XclImpColRowSettings > XclImpColRowSettRef; + typedef boost::shared_ptr< XclImpOutlineBuffer > XclImpOutlineBfrRef; + typedef boost::shared_ptr< XclImpColRowSettings > XclImpColRowSettRef; XclImpOutlineBfrRef mxColOutlineBuff; XclImpOutlineBfrRef mxRowOutlineBuff; @@ -107,7 +109,7 @@ protected: XclImpOutlineBuffer* pRowOutlineBuff; XclImpColRowSettings* pColRowBuff; // Col/Row-Einstellungen 1 Tabelle - typedef ScfDelList< XclImpOutlineDataBuffer > XclImpOutlineListBuffer; + typedef boost::ptr_vector< XclImpOutlineDataBuffer > XclImpOutlineListBuffer; XclImpOutlineListBuffer* pOutlineListBuffer; sal_Int16 mnLastRefIdx; diff --git a/sc/source/filter/inc/rtfparse.hxx b/sc/source/filter/inc/rtfparse.hxx index e2011e8206de..0d691ba9f874 100644 --- a/sc/source/filter/inc/rtfparse.hxx +++ b/sc/source/filter/inc/rtfparse.hxx @@ -32,6 +32,7 @@ #include "eeparser.hxx" #ifdef SC_RTFPARSE_CXX +#include <boost/ptr_container/ptr_vector.hpp> struct ScRTFCellDefault { @@ -43,9 +44,8 @@ struct ScRTFCellDefault ScRTFCellDefault( SfxItemPool* pPool ) : aItemSet( *pPool ), nColOverlap(1) {} }; +typedef boost::ptr_vector< ScRTFCellDefault > ScRTFDefaultList; -DECLARE_LIST( ScRTFDefaultList, ScRTFCellDefault* ) -// Remove: (const unsigned short &) not sufficiently different from (unsigned short) // deswegen ULONG, typedef bringt's auch nicht :-( SV_DECL_VARARR_SORT( ScRTFColTwips, ULONG, 16, 4) diff --git a/sc/source/filter/inc/xechart.hxx b/sc/source/filter/inc/xechart.hxx index bbf9c764539e..f1b3f9b03726 100644 --- a/sc/source/filter/inc/xechart.hxx +++ b/sc/source/filter/inc/xechart.hxx @@ -36,6 +36,7 @@ #include "xlstyle.hxx" #include "xeroot.hxx" #include "xestring.hxx" +#include <boost/shared_ptr.hpp> class Size; @@ -158,7 +159,7 @@ protected: void FinalizeFutureRecBlock( XclExpStream& rStrm ); private: - typedef ScfRef< XclExpChRootData > XclExpChRootDataRef; + typedef boost::shared_ptr< XclExpChRootData > XclExpChRootDataRef; XclExpChRootDataRef mxChData; /// Reference to the root data object. }; @@ -225,7 +226,7 @@ private: XclChFramePos maData; /// Position of the frame. }; -typedef ScfRef< XclExpChFramePos > XclExpChFramePosRef; +typedef boost::shared_ptr< XclExpChFramePos > XclExpChFramePosRef; // ---------------------------------------------------------------------------- @@ -260,7 +261,7 @@ private: sal_uInt32 mnColorId; /// Line color identifier. }; -typedef ScfRef< XclExpChLineFormat > XclExpChLineFormatRef; +typedef boost::shared_ptr< XclExpChLineFormat > XclExpChLineFormatRef; // ---------------------------------------------------------------------------- @@ -294,7 +295,7 @@ private: sal_uInt32 mnBackColorId; /// Pattern background color identifier. }; -typedef ScfRef< XclExpChAreaFormat > XclExpChAreaFormatRef; +typedef boost::shared_ptr< XclExpChAreaFormat > XclExpChAreaFormatRef; // ---------------------------------------------------------------------------- @@ -329,7 +330,7 @@ private: sal_uInt32 mnColor2Id; /// Second fill color identifier. }; -typedef ScfRef< XclExpChEscherFormat > XclExpChEscherFormatRef; +typedef boost::shared_ptr< XclExpChEscherFormat > XclExpChEscherFormatRef; // ---------------------------------------------------------------------------- @@ -398,7 +399,7 @@ private: XclChObjectType meObjType; /// Type of the represented object. }; -typedef ScfRef< XclExpChFrame > XclExpChFrameRef; +typedef boost::shared_ptr< XclExpChFrame > XclExpChFrameRef; // Source links =============================================================== @@ -422,7 +423,7 @@ public: void AppendString( const String& rStr ); /** Returns true, if this source link contains explicit string data. */ - inline bool HasString() const { return mxString.is() && !mxString->IsEmpty(); } + inline bool HasString() const { return mxString && !mxString->IsEmpty(); } /** Writes the CHSOURCELINK record and optionally a CHSTRING record with explicit string data. */ virtual void Save( XclExpStream& rStrm ); @@ -436,7 +437,7 @@ private: XclExpStringRef mxString; /// Text data (CHSTRING record). }; -typedef ScfRef< XclExpChSourceLink > XclExpChSourceLinkRef; +typedef boost::shared_ptr< XclExpChSourceLink > XclExpChSourceLinkRef; // Text ======================================================================= @@ -447,7 +448,7 @@ public: explicit XclExpChFont( sal_uInt16 nFontIdx ); }; -typedef ScfRef< XclExpChFont > XclExpChFontRef; +typedef boost::shared_ptr< XclExpChFont > XclExpChFontRef; // ---------------------------------------------------------------------------- @@ -464,7 +465,7 @@ private: XclChObjectLink maData; /// Contents of the CHOBJECTLINK record. }; -typedef ScfRef< XclExpChObjectLink > XclExpChObjectLinkRef; +typedef boost::shared_ptr< XclExpChObjectLink > XclExpChObjectLinkRef; // ---------------------------------------------------------------------------- @@ -487,7 +488,7 @@ private: XclChFrLabelProps maData; /// Contents of the CHFRLABELPROPS record. }; -typedef ScfRef< XclExpChFrLabelProps > XclExpChFrLabelPropsRef; +typedef boost::shared_ptr< XclExpChFrLabelProps > XclExpChFrLabelPropsRef; // ---------------------------------------------------------------------------- @@ -542,7 +543,7 @@ public: void ConvertTrendLineEquation( const ScfPropertySet& rPropSet, const XclChDataPointPos& rPointPos ); /** Returns true, if the string object does not contain any text data. */ - inline bool HasString() const { return mxSrcLink.is() && mxSrcLink->HasString(); } + inline bool HasString() const { return mxSrcLink && mxSrcLink->HasString(); } /** Returns the flags needed for the CHATTACHEDLABEL record. */ sal_uInt16 GetAttLabelFlags() const; @@ -563,7 +564,7 @@ private: sal_uInt32 mnTextColorId; /// Text color identifier. }; -typedef ScfRef< XclExpChText > XclExpChTextRef; +typedef boost::shared_ptr< XclExpChText > XclExpChTextRef; // Data series ================================================================ @@ -599,7 +600,7 @@ private: sal_uInt32 mnFillColorId; /// Fill color identifier. }; -typedef ScfRef< XclExpChMarkerFormat > XclExpChMarkerFormatRef; +typedef boost::shared_ptr< XclExpChMarkerFormat > XclExpChMarkerFormatRef; // ---------------------------------------------------------------------------- @@ -613,7 +614,7 @@ public: void Convert( const ScfPropertySet& rPropSet ); }; -typedef ScfRef< XclExpChPieFormat > XclExpChPieFormatRef; +typedef boost::shared_ptr< XclExpChPieFormat > XclExpChPieFormatRef; // ---------------------------------------------------------------------------- @@ -633,7 +634,7 @@ private: XclCh3dDataFormat maData; /// Contents of the CH3DDATAFORMAT record. }; -typedef ScfRef< XclExpCh3dDataFormat > XclExpCh3dDataFormatRef; +typedef boost::shared_ptr< XclExpCh3dDataFormat > XclExpCh3dDataFormatRef; // ---------------------------------------------------------------------------- @@ -644,7 +645,7 @@ public: explicit XclExpChAttachedLabel( sal_uInt16 nFlags ); }; -typedef ScfRef< XclExpChAttachedLabel > XclExpChAttLabelRef; +typedef boost::shared_ptr< XclExpChAttachedLabel > XclExpChAttLabelRef; // ---------------------------------------------------------------------------- @@ -685,7 +686,7 @@ private: XclExpChAttLabelRef mxAttLabel; /// Data point label type (CHATTACHEDLABEL record). }; -typedef ScfRef< XclExpChDataFormat > XclExpChDataFormatRef; +typedef boost::shared_ptr< XclExpChDataFormat > XclExpChDataFormatRef; // ---------------------------------------------------------------------------- @@ -715,7 +716,7 @@ private: XclExpChTextRef mxLabel; /// Formatting of the equation text box. }; -typedef ScfRef< XclExpChSerTrendLine > XclExpChSerTrendLineRef; +typedef boost::shared_ptr< XclExpChSerTrendLine > XclExpChSerTrendLineRef; // ---------------------------------------------------------------------------- @@ -735,7 +736,7 @@ private: XclChSerErrorBar maData; /// Contents of the CHSERERRORBAR record. }; -typedef ScfRef< XclExpChSerErrorBar > XclExpChSerErrorBarRef; +typedef boost::shared_ptr< XclExpChSerErrorBar > XclExpChSerErrorBarRef; // ---------------------------------------------------------------------------- @@ -809,7 +810,7 @@ private: sal_uInt16 mnParentIdx; /// 0-based index of parent series (trend lines and error bars). }; -typedef ScfRef< XclExpChSeries > XclExpChSeriesRef; +typedef boost::shared_ptr< XclExpChSeries > XclExpChSeriesRef; // Chart type groups ========================================================== @@ -865,7 +866,7 @@ private: XclChChart3d maData; /// Contents of the CHCHART3D record. }; -typedef ScfRef< XclExpChChart3d > XclExpChChart3dRef; +typedef boost::shared_ptr< XclExpChChart3d > XclExpChChart3dRef; // ---------------------------------------------------------------------------- @@ -895,7 +896,7 @@ private: XclExpChFrameRef mxFrame; /// Legend frame format (CHFRAME group). }; -typedef ScfRef< XclExpChLegend > XclExpChLegendRef; +typedef boost::shared_ptr< XclExpChLegend > XclExpChLegendRef; // ---------------------------------------------------------------------------- @@ -923,7 +924,7 @@ private: sal_uInt16 mnBarDist; /// Distance between bars (CHDROPBAR record). }; -typedef ScfRef< XclExpChDropBar > XclExpChDropBarRef; +typedef boost::shared_ptr< XclExpChDropBar > XclExpChDropBarRef; // ---------------------------------------------------------------------------- @@ -967,7 +968,7 @@ public: /** Returns true, if chart type supports wall and floor format. */ inline bool Is3dWallChart() const { return Is3dChart() && (maTypeInfo.meTypeCateg != EXC_CHTYPECATEG_PIE); } /** Returns true, if the series in this chart type group are ordered on the Z axis. */ - inline bool Is3dDeepChart() const { return Is3dWallChart() && mxChart3d.is() && !mxChart3d->IsClustered(); } + inline bool Is3dDeepChart() const { return Is3dWallChart() && mxChart3d && !mxChart3d->IsClustered(); } /** Returns true, if this chart type can be combined with other types. */ inline bool IsCombinable2d() const { return !Is3dChart() && maTypeInfo.mbCombinable2d; } @@ -1004,7 +1005,7 @@ private: XclExpChLineFormatMap maChartLines; /// Global line formats (CHCHARTLINE group). }; -typedef ScfRef< XclExpChTypeGroup > XclExpChTypeGroupRef; +typedef boost::shared_ptr< XclExpChTypeGroup > XclExpChTypeGroupRef; // Axes ======================================================================= @@ -1028,7 +1029,7 @@ private: XclChLabelRange maData; /// Contents of the CHLABELRANGE record. }; -typedef ScfRef< XclExpChLabelRange > XclExpChLabelRangeRef; +typedef boost::shared_ptr< XclExpChLabelRange > XclExpChLabelRangeRef; // ---------------------------------------------------------------------------- @@ -1049,7 +1050,7 @@ private: XclChValueRange maData; /// Contents of the CHVALUERANGE record. }; -typedef ScfRef< XclExpChValueRange > XclExpChValueRangeRef; +typedef boost::shared_ptr< XclExpChValueRange > XclExpChValueRangeRef; // ---------------------------------------------------------------------------- @@ -1073,7 +1074,7 @@ private: sal_uInt32 mnTextColorId; /// Axis labels text color identifier. }; -typedef ScfRef< XclExpChTick > XclExpChTickRef; +typedef boost::shared_ptr< XclExpChTick > XclExpChTickRef; // ---------------------------------------------------------------------------- @@ -1126,7 +1127,7 @@ private: sal_uInt16 mnNumFmtIdx; /// Index into number format buffer (CHFORMAT record). }; -typedef ScfRef< XclExpChAxis > XclExpChAxisRef; +typedef boost::shared_ptr< XclExpChAxis > XclExpChAxisRef; // ---------------------------------------------------------------------------- @@ -1190,7 +1191,7 @@ private: XclExpChTypeGroupList maTypeGroups; /// Chart type groups (CHTYPEGROUP group). }; -typedef ScfRef< XclExpChAxesSet > XclExpChAxesSetRef; +typedef boost::shared_ptr< XclExpChAxesSet > XclExpChAxesSetRef; // The chart object =========================================================== @@ -1255,8 +1256,8 @@ public: virtual void Save( XclExpStream& rStrm ); private: - ScfRef< XclExpObjectManager > mxObjMgr; - ScfRef< XclExpRecordBase > mxObjRecs; + boost::shared_ptr< XclExpObjectManager > mxObjMgr; + boost::shared_ptr< XclExpRecordBase > mxObjRecs; }; // ---------------------------------------------------------------------------- diff --git a/sc/source/filter/inc/xeescher.hxx b/sc/source/filter/inc/xeescher.hxx index 1e6178ef6c62..34c80c4021ea 100644 --- a/sc/source/filter/inc/xeescher.hxx +++ b/sc/source/filter/inc/xeescher.hxx @@ -35,6 +35,7 @@ #include "xlescher.hxx" #include <com/sun/star/chart/XChartDocument.hpp> #include "svx/sdtaitm.hxx" +#include <boost/shared_ptr.hpp> namespace com { namespace sun { namespace star { @@ -330,7 +331,7 @@ public: void WriteShapeTransformation( sax_fastparser::FSHelperPtr pFS, const XShapeRef& rXShape, sal_Bool bFlipH = false, sal_Bool bFlipV = false, sal_Int32 nRotation = 0 ); private: - typedef ScfRef< XclExpChart > XclExpChartRef; + typedef boost::shared_ptr< XclExpChart > XclExpChartRef; XclExpChartRef mxChart; /// The chart itself (BOF/EOF substream data). XShapeRef mxShape; XChartDocRef mxChartDoc; @@ -423,17 +424,17 @@ public: /** Creates and returns the MSODRAWINGGROUP record containing global DFF data in the DGGCONTAINER. */ - ScfRef< XclExpRecordBase > CreateDrawingGroup(); + boost::shared_ptr< XclExpRecordBase > CreateDrawingGroup(); /** Initializes the object manager for a new sheet. */ void StartSheet(); /** Processes a drawing page and returns the record block containing all related records (MSODRAWING, OBJ, TXO, charts, etc.). */ - ScfRef< XclExpRecordBase > ProcessDrawing( SdrPage* pSdrPage ); + boost::shared_ptr< XclExpRecordBase > ProcessDrawing( SdrPage* pSdrPage ); /** Processes a collection of UNO shapes and returns the record block containing all related records (MSODRAWING, OBJ, TXO, charts, etc.). */ - ScfRef< XclExpRecordBase > ProcessDrawing( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& rxShapes ); + boost::shared_ptr< XclExpRecordBase > ProcessDrawing( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& rxShapes ); /** Finalizes the object manager after conversion of all sheets. */ void EndDocument(); @@ -451,10 +452,10 @@ private: void InitStream( bool bTempFile ); private: - ScfRef< ::utl::TempFile > mxTempFile; - ScfRef< SvStream > mxDffStrm; - ScfRef< XclEscherEx > mxEscherEx; - ScfRef< XclExpObjList > mxObjList; + boost::shared_ptr< ::utl::TempFile > mxTempFile; + boost::shared_ptr< SvStream > mxDffStrm; + boost::shared_ptr< XclEscherEx > mxEscherEx; + boost::shared_ptr< XclExpObjList > mxObjList; }; // ---------------------------------------------------------------------------- diff --git a/sc/source/filter/inc/xeformula.hxx b/sc/source/filter/inc/xeformula.hxx index 5cc3107bd25d..698ca9b0f494 100644 --- a/sc/source/filter/inc/xeformula.hxx +++ b/sc/source/filter/inc/xeformula.hxx @@ -31,6 +31,7 @@ #include "xlformula.hxx" #include "xeroot.hxx" +#include <boost/shared_ptr.hpp> // External reference log ===================================================== @@ -88,7 +89,7 @@ public: XclTokenArrayRef CreateNameXFormula( sal_uInt16 nExtSheet, sal_uInt16 nExtName ); private: - typedef ScfRef< XclExpFmlaCompImpl > XclExpFmlaCompImplRef; + typedef boost::shared_ptr< XclExpFmlaCompImpl > XclExpFmlaCompImplRef; XclExpFmlaCompImplRef mxImpl; }; diff --git a/sc/source/filter/inc/xehelper.hxx b/sc/source/filter/inc/xehelper.hxx index 00d758dd1991..f02e8ad12bc1 100644 --- a/sc/source/filter/inc/xehelper.hxx +++ b/sc/source/filter/inc/xehelper.hxx @@ -29,6 +29,8 @@ #ifndef SC_XEHELPER_HXX #define SC_XEHELPER_HXX +#include <boost/noncopyable.hpp> +#include <boost/shared_ptr.hpp> #include "xladdress.hxx" #include "xeroot.hxx" #include "xestring.hxx" @@ -175,14 +177,14 @@ class XclExpHyperlink; /** Helper to create HLINK records during creation of formatted cell strings. In Excel it is not possible to have more than one hyperlink in a cell. This - helper detects multiple occurences of hyperlinks and fills a string which + helper detects multiple occurrences of hyperlinks and fills a string which is used to create a cell note containing all URLs. Only cells containing one hyperlink are exported as hyperlink cells. */ class XclExpHyperlinkHelper : protected XclExpRoot { public: - typedef ScfRef< XclExpHyperlink > XclExpHyperlinkRef; + typedef boost::shared_ptr< XclExpHyperlink > XclExpHyperlinkRef; explicit XclExpHyperlinkHelper( const XclExpRoot& rRoot, const ScAddress& rScPos ); ~XclExpHyperlinkHelper(); @@ -219,7 +221,7 @@ class ScPatternAttr; /** This class provides methods to create an XclExpString. @descr The string can be created from an edit engine text object or directly from a Calc edit cell. */ -class XclExpStringHelper : ScfNoInstance +class XclExpStringHelper : boost::noncopyable { public: /** Creates a new unformatted string from the passed string. @@ -329,6 +331,12 @@ public: /** Returns the script type first text portion different to WEAK, or the system default script type, if there is only weak script in the passed string. */ static sal_Int16 GetLeadingScriptType( const XclExpRoot& rRoot, const String& rString ); + +private: + /** We don't want anybody to instantiate this class, since it is just a + collection of static methods. To enforce this, the default constructor + is made private */ + XclExpStringHelper(); }; // Header/footer conversion =================================================== @@ -364,7 +372,7 @@ class EditEngine; Known but unsupported control sequences: &G picture */ -class XclExpHFConverter : protected XclExpRoot, ScfNoCopy +class XclExpHFConverter : protected XclExpRoot, private boost::noncopyable { public: explicit XclExpHFConverter( const XclExpRoot& rRoot ); @@ -397,7 +405,7 @@ private: /** This class contains static methods to encode a file URL. @descr Excel stores URLs in a format that contains special control characters, i.e. for directory separators or volume names. */ -class XclExpUrlHelper : ScfNoInstance +class XclExpUrlHelper : boost::noncopyable { public: /** Encodes and returns the URL passed in rAbsUrl to an Excel like URL. @@ -405,6 +413,12 @@ public: static String EncodeUrl( const XclExpRoot& rRoot, const String& rAbsUrl, const String* pTableName = 0 ); /** Encodes and returns the passed DDE link to an Excel like DDE link. */ static String EncodeDde( const String& rApplic, const String rTopic ); + +private: + /** We don't want anybody to instantiate this class, since it is just a + collection of static methods. To enforce this, the default constructor + is made private */ + XclExpUrlHelper(); }; // ---------------------------------------------------------------------------- diff --git a/sc/source/filter/inc/xelink.hxx b/sc/source/filter/inc/xelink.hxx index ecdccae3172b..866151df28f5 100644 --- a/sc/source/filter/inc/xelink.hxx +++ b/sc/source/filter/inc/xelink.hxx @@ -35,6 +35,7 @@ #include "xehelper.hxx" #include "xeformula.hxx" #include "externalrefmgr.hxx" +#include <boost/shared_ptr.hpp> class ScRange; struct ScSingleRefData; @@ -210,7 +211,7 @@ public: virtual void Save( XclExpStream& rStrm ); private: - typedef ScfRef< XclExpLinkManagerImpl > XclExpLinkMgrImplPtr; + typedef boost::shared_ptr< XclExpLinkManagerImpl > XclExpLinkMgrImplPtr; XclExpLinkMgrImplPtr mxImpl; }; diff --git a/sc/source/filter/inc/xename.hxx b/sc/source/filter/inc/xename.hxx index 66e903553da8..24371e19b4dd 100644 --- a/sc/source/filter/inc/xename.hxx +++ b/sc/source/filter/inc/xename.hxx @@ -33,6 +33,7 @@ #include "xlname.hxx" #include "xlformula.hxx" #include "xeroot.hxx" +#include <boost/shared_ptr.hpp> // ============================================================================ @@ -80,7 +81,7 @@ public: virtual void SaveXml( XclExpXmlStream& rStrm ); private: - typedef ScfRef< XclExpNameManagerImpl > XclExpNameMgrImplRef; + typedef boost::shared_ptr< XclExpNameManagerImpl > XclExpNameMgrImplRef; XclExpNameMgrImplRef mxImpl; }; diff --git a/sc/source/filter/inc/xerecord.hxx b/sc/source/filter/inc/xerecord.hxx index 712da2b89d6e..17673e840d7b 100644 --- a/sc/source/filter/inc/xerecord.hxx +++ b/sc/source/filter/inc/xerecord.hxx @@ -31,6 +31,7 @@ #include "xlconst.hxx" #include "xestream.hxx" +#include <boost/shared_ptr.hpp> // Base classes to export Excel records ======================================= @@ -333,7 +334,7 @@ template< typename RecType = XclExpRecordBase > class XclExpRecordList : public XclExpRecordBase { public: - typedef ScfRef< RecType > RecordRefType; + typedef boost::shared_ptr< RecType > RecordRefType; /** Returns pointer to an existing record or 0 on error. */ inline bool IsEmpty() const { return maRecs.empty(); } diff --git a/sc/source/filter/inc/xeroot.hxx b/sc/source/filter/inc/xeroot.hxx index 0f8774489954..cac22f4101ae 100644 --- a/sc/source/filter/inc/xeroot.hxx +++ b/sc/source/filter/inc/xeroot.hxx @@ -30,6 +30,7 @@ #define SC_XEROOT_HXX #include "xlroot.hxx" +#include <boost/shared_ptr.hpp> // Forward declarations of objects in public use ============================== @@ -37,8 +38,8 @@ class XclExpStream; class XclExpRecordBase; class XclExpString; -typedef ScfRef< XclExpRecordBase > XclExpRecordRef; -typedef ScfRef< XclExpString > XclExpStringRef; +typedef boost::shared_ptr< XclExpRecordBase > XclExpRecordRef; +typedef boost::shared_ptr< XclExpString > XclExpStringRef; // Global data ================================================================ @@ -60,21 +61,21 @@ class XclExpPivotTableManager; /** Stores global buffers and data needed for Excel export filter. */ struct XclExpRootData : public XclRootData { - typedef ScfRef< XclExpTabInfo > XclExpTabInfoRef; - typedef ScfRef< XclExpAddressConverter > XclExpAddrConvRef; - typedef ScfRef< XclExpFormulaCompiler > XclExpFmlaCompRef; - typedef ScfRef< XclExpProgressBar > XclExpProgressRef; - - typedef ScfRef< XclExpSst > XclExpSstRef; - typedef ScfRef< XclExpPalette > XclExpPaletteRef; - typedef ScfRef< XclExpFontBuffer > XclExpFontBfrRef; - typedef ScfRef< XclExpNumFmtBuffer > XclExpNumFmtBfrRef; - typedef ScfRef< XclExpXFBuffer > XclExpXFBfrRef; - typedef ScfRef< XclExpNameManager > XclExpNameMgrRef; - typedef ScfRef< XclExpLinkManager > XclExpLinkMgrRef; - typedef ScfRef< XclExpObjectManager > XclExpObjectMgrRef; - typedef ScfRef< XclExpFilterManager > XclExpFilterMgrRef; - typedef ScfRef< XclExpPivotTableManager > XclExpPTableMgrRef; + typedef boost::shared_ptr< XclExpTabInfo > XclExpTabInfoRef; + typedef boost::shared_ptr< XclExpAddressConverter > XclExpAddrConvRef; + typedef boost::shared_ptr< XclExpFormulaCompiler > XclExpFmlaCompRef; + typedef boost::shared_ptr< XclExpProgressBar > XclExpProgressRef; + + typedef boost::shared_ptr< XclExpSst > XclExpSstRef; + typedef boost::shared_ptr< XclExpPalette > XclExpPaletteRef; + typedef boost::shared_ptr< XclExpFontBuffer > XclExpFontBfrRef; + typedef boost::shared_ptr< XclExpNumFmtBuffer > XclExpNumFmtBfrRef; + typedef boost::shared_ptr< XclExpXFBuffer > XclExpXFBfrRef; + typedef boost::shared_ptr< XclExpNameManager > XclExpNameMgrRef; + typedef boost::shared_ptr< XclExpLinkManager > XclExpLinkMgrRef; + typedef boost::shared_ptr< XclExpObjectManager > XclExpObjectMgrRef; + typedef boost::shared_ptr< XclExpFilterManager > XclExpFilterMgrRef; + typedef boost::shared_ptr< XclExpPivotTableManager > XclExpPTableMgrRef; XclExpTabInfoRef mxTabInfo; /// Calc->Excel sheet index conversion. XclExpAddrConvRef mxAddrConv; /// The address converter. diff --git a/sc/source/filter/inc/xestream.hxx b/sc/source/filter/inc/xestream.hxx index d0e56961e812..2d7e9c095fbc 100644 --- a/sc/source/filter/inc/xestream.hxx +++ b/sc/source/filter/inc/xestream.hxx @@ -52,7 +52,7 @@ Output stream class for Excel export class XclExpRoot; class XclExpBiff8Encrypter; -typedef ScfRef< XclExpBiff8Encrypter > XclExpEncrypterRef; +typedef boost::shared_ptr< XclExpBiff8Encrypter > XclExpEncrypterRef; /** This class is used to export Excel record streams. @descr An instance is constructed with an SvStream and the maximum size of Excel @@ -266,7 +266,7 @@ class ScRangeList; class ScTokenArray; struct XclAddress; struct XclFontData; -class XclRange; +struct XclRange; class XclRangeList; class XclXmlUtils diff --git a/sc/source/filter/inc/xestyle.hxx b/sc/source/filter/inc/xestyle.hxx index fa2d3e8eb782..458c2bb1e5ec 100644 --- a/sc/source/filter/inc/xestyle.hxx +++ b/sc/source/filter/inc/xestyle.hxx @@ -38,6 +38,7 @@ #include "xerecord.hxx" #include "xlstyle.hxx" #include "xeroot.hxx" +#include <boost/shared_ptr.hpp> /* ============================================================================ - Buffers for style records (PALETTE, FONT, FORMAT, XF, STYLE). @@ -125,7 +126,7 @@ private: virtual void WriteBody( XclExpStream& rStrm ); private: - typedef ScfRef< XclExpPaletteImpl > XclExpPaletteImplRef; + typedef boost::shared_ptr< XclExpPaletteImpl > XclExpPaletteImplRef; XclExpPaletteImplRef mxImpl; }; diff --git a/sc/source/filter/inc/xetable.hxx b/sc/source/filter/inc/xetable.hxx index 2c18f14d91f0..bb3f182768f6 100644 --- a/sc/source/filter/inc/xetable.hxx +++ b/sc/source/filter/inc/xetable.hxx @@ -100,7 +100,7 @@ protected: XclAddress maBaseXclPos; /// Address of base cell (first FORMULA record). }; -typedef ScfRef< XclExpRangeFmlaBase > XclExpRangeFmlaRef; +typedef boost::shared_ptr< XclExpRangeFmlaBase > XclExpRangeFmlaRef; // Array formulas ============================================================= @@ -130,7 +130,7 @@ private: XclTokenArrayRef mxTokArr; /// The token array of a matrix formula. }; -typedef ScfRef< XclExpArray > XclExpArrayRef; +typedef boost::shared_ptr< XclExpArray > XclExpArrayRef; // ---------------------------------------------------------------------------- @@ -181,7 +181,7 @@ private: sal_uInt8 mnUsedCount; /// Number of FORMULA records referring to this record. }; -typedef ScfRef< XclExpShrfmla > XclExpShrfmlaRef; +typedef boost::shared_ptr< XclExpShrfmla > XclExpShrfmlaRef; // ---------------------------------------------------------------------------- @@ -248,7 +248,7 @@ private: bool mbValid; /// true = Contains valid references. }; -typedef ScfRef< XclExpTableop > XclExpTableopRef; +typedef boost::shared_ptr< XclExpTableop > XclExpTableopRef; // ---------------------------------------------------------------------------- @@ -324,7 +324,7 @@ private: XclAddress maXclPos; /// Address of the cell. }; -typedef ScfRef< XclExpCellBase > XclExpCellRef; +typedef boost::shared_ptr< XclExpCellBase > XclExpCellRef; // Single cell records ======================================================== @@ -1046,11 +1046,11 @@ private: typedef XclExpRecordList< XclExpNote > XclExpNoteList; typedef XclExpRecordList< XclExpHyperlink > XclExpHyperlinkList; - typedef ScfRef< XclExpDefrowheight > XclExpDefrowhRef; - typedef ScfRef< XclExpNoteList > XclExpNoteListRef; - typedef ScfRef< XclExpMergedcells > XclExpMergedcellsRef; - typedef ScfRef< XclExpHyperlinkList > XclExpHyperlinkRef; - typedef ScfRef< XclExpDval > XclExpDvalRef; + typedef boost::shared_ptr< XclExpDefrowheight > XclExpDefrowhRef; + typedef boost::shared_ptr< XclExpNoteList > XclExpNoteListRef; + typedef boost::shared_ptr< XclExpMergedcells > XclExpMergedcellsRef; + typedef boost::shared_ptr< XclExpHyperlinkList > XclExpHyperlinkRef; + typedef boost::shared_ptr< XclExpDval > XclExpDvalRef; XclExpColinfoBuffer maColInfoBfr; /// Buffer for column formatting. XclExpRowBuffer maRowBfr; /// Rows and cell records. diff --git a/sc/source/filter/inc/xichart.hxx b/sc/source/filter/inc/xichart.hxx index 12b2e2d473b2..c731ba48e16f 100644 --- a/sc/source/filter/inc/xichart.hxx +++ b/sc/source/filter/inc/xichart.hxx @@ -42,6 +42,8 @@ #include "xlstyle.hxx" #include "xiescher.hxx" #include "xistring.hxx" +#include <boost/shared_ptr.hpp> +#include <boost/ptr_container/ptr_map.hpp> namespace com { namespace sun { namespace star { namespace awt @@ -168,7 +170,7 @@ public: sal_uInt16 nAngle ); private: - typedef ScfRef< XclImpChRootData > XclImpChRootDataRef; + typedef boost::shared_ptr< XclImpChRootData > XclImpChRootDataRef; XclImpChRootDataRef mxChData; /// Reference to the root data object. }; @@ -215,7 +217,7 @@ private: XclChFramePos maData; /// Position of the frame. }; -typedef ScfRef< XclImpChFramePos > XclImpChFramePosRef; +typedef boost::shared_ptr< XclImpChFramePos > XclImpChFramePosRef; // ---------------------------------------------------------------------------- @@ -249,7 +251,7 @@ private: XclChLineFormat maData; /// Contents of the CHLINEFORMAT record. }; -typedef ScfRef< XclImpChLineFormat > XclImpChLineFormatRef; +typedef boost::shared_ptr< XclImpChLineFormat > XclImpChLineFormatRef; // ---------------------------------------------------------------------------- @@ -279,7 +281,7 @@ private: XclChAreaFormat maData; /// Contents of the CHAREAFORMAT record. }; -typedef ScfRef< XclImpChAreaFormat > XclImpChAreaFormatRef; +typedef boost::shared_ptr< XclImpChAreaFormat > XclImpChAreaFormatRef; // ---------------------------------------------------------------------------- @@ -303,7 +305,7 @@ private: XclChPicFormat maPicFmt; /// Image options, e.g. stretched, stacked (CHPICFORMAT record). }; -typedef ScfRef< XclImpChEscherFormat > XclImpChEscherFormatRef; +typedef boost::shared_ptr< XclImpChEscherFormat > XclImpChEscherFormatRef; // ---------------------------------------------------------------------------- @@ -329,12 +331,12 @@ public: /** Returns true, if the line style is set to something visible. */ inline bool HasLine() const { return IsAutoLine() || mxLineFmt->HasLine(); } /** Returns the line weight used for this frame. */ - inline sal_Int16 GetLineWeight() const { return mxLineFmt.is() ? mxLineFmt->GetWeight() : EXC_CHLINEFORMAT_SINGLE; } + inline sal_Int16 GetLineWeight() const { return mxLineFmt ? mxLineFmt->GetWeight() : EXC_CHLINEFORMAT_SINGLE; } /** Returns true, if the area format is set to automatic. */ inline bool IsAutoArea() const { return !mxEscherFmt && (!mxAreaFmt || mxAreaFmt->IsAuto()); } /** Returns true, if the area style is set to something visible. */ - inline bool HasArea() const { return mxEscherFmt.is() || IsAutoArea() || mxAreaFmt->HasArea(); } + inline bool HasArea() const { return mxEscherFmt || IsAutoArea() || mxAreaFmt->HasArea(); } protected: /** Converts and writes the contained line formatting to the passed property set. */ @@ -385,7 +387,7 @@ private: XclChObjectType meObjType; /// Type of the represented object. }; -typedef ScfRef< XclImpChFrame > XclImpChFrameRef; +typedef boost::shared_ptr< XclImpChFrame > XclImpChFrameRef; // Source links =============================================================== @@ -413,9 +415,9 @@ public: inline sal_uInt8 GetLinkType() const { return maData.mnLinkType; } /** Returns true, if the source link contains explicit string data. */ - inline bool HasString() const { return mxString.is() && !mxString->IsEmpty(); } + inline bool HasString() const { return mxString && !mxString->IsEmpty(); } /** Returns explicit string data or an empty string. */ - inline const String& GetString() const { return mxString.is() ? mxString->GetText() : String::EmptyString(); } + inline const String& GetString() const { return mxString ? mxString->GetText() : String::EmptyString(); } /** Returns the number of data points of this source link. */ sal_uInt16 GetCellCount() const; @@ -428,15 +430,15 @@ public: XFormattedStringSeq CreateStringSequence( const XclImpChRoot& rRoot, sal_uInt16 nLeadFontIdx, const Color& rLeadFontColor ) const; - void FillSourceLink(::std::vector<ScSharedTokenRef>& rTokens) const; + void FillSourceLink(::std::vector<ScTokenRef>& rTokens) const; private: XclChSourceLink maData; /// Contents of the CHSOURCELINK record. XclImpStringRef mxString; /// Text data (CHSTRING record). - ScfRef< ScTokenArray> mxTokenArray; /// Token array representing the data ranges. + boost::shared_ptr< ScTokenArray> mxTokenArray; /// Token array representing the data ranges. }; -typedef ScfRef< XclImpChSourceLink > XclImpChSourceLinkRef; +typedef boost::shared_ptr< XclImpChSourceLink > XclImpChSourceLinkRef; // Text ======================================================================= @@ -476,7 +478,7 @@ private: sal_uInt16 mnFontIdx; /// Index into font buffer. }; -typedef ScfRef< XclImpChFont > XclImpChFontRef; +typedef boost::shared_ptr< XclImpChFont > XclImpChFontRef; // ---------------------------------------------------------------------------- @@ -517,7 +519,7 @@ public: /** Returns the position of the data point label this text is linked to. */ inline const XclChDataPointPos& GetPointPos() const { return maObjLink.maPointPos; } /** Returns true, if this text group contains string data. */ - inline bool HasString() const { return mxSrcLink.is() && mxSrcLink->HasString(); } + inline bool HasString() const { return mxSrcLink && mxSrcLink->HasString(); } /** Returns true, if the text object is marked as deleted. */ inline bool IsDeleted() const { return ::get_flag( maData.mnFlags, EXC_CHTEXT_DELETED ); } @@ -543,7 +545,7 @@ private: void ReadChFrLabelProps( XclImpStream& rStrm ); private: - typedef ScfRef< XclChFrLabelProps > XclChFrLabelPropsRef; + typedef boost::shared_ptr< XclChFrLabelProps > XclChFrLabelPropsRef; XclChText maData; /// Contents of the CHTEXT record. XclChObjectLink maObjLink; /// Link target for this text object. @@ -555,7 +557,7 @@ private: XclChFrLabelPropsRef mxLabelProps; /// Extended data label properties (CHFRLABELPROPS record). }; -typedef ScfRef< XclImpChText > XclImpChTextRef; +typedef boost::shared_ptr< XclImpChText > XclImpChTextRef; // Data series ================================================================ @@ -580,7 +582,7 @@ private: XclChMarkerFormat maData; /// Contents of the CHMARKERFORMAT record. }; -typedef ScfRef< XclImpChMarkerFormat > XclImpChMarkerFormatRef; +typedef boost::shared_ptr< XclImpChMarkerFormat > XclImpChMarkerFormatRef; // ---------------------------------------------------------------------------- @@ -598,7 +600,7 @@ private: sal_uInt16 mnPieDist; /// Pie distance to diagram center. }; -typedef ScfRef< XclImpChPieFormat > XclImpChPieFormatRef; +typedef boost::shared_ptr< XclImpChPieFormat > XclImpChPieFormatRef; // ---------------------------------------------------------------------------- @@ -616,7 +618,7 @@ private: sal_uInt16 mnFlags; /// Additional flags. }; -typedef ScfRef< XclImpChSeriesFormat > XclImpChSeriesFormatRef; +typedef boost::shared_ptr< XclImpChSeriesFormat > XclImpChSeriesFormatRef; // ---------------------------------------------------------------------------- @@ -633,7 +635,7 @@ private: XclCh3dDataFormat maData; /// Contents of the CH3DDATAFORMAT record. }; -typedef ScfRef< XclImpCh3dDataFormat > XclImpCh3dDataFormatRef; +typedef boost::shared_ptr< XclImpCh3dDataFormat > XclImpCh3dDataFormatRef; // ---------------------------------------------------------------------------- @@ -651,7 +653,7 @@ private: sal_uInt16 mnFlags; /// Additional flags. }; -typedef ScfRef< XclImpChAttachedLabel > XclImpChAttLabelRef; +typedef boost::shared_ptr< XclImpChAttachedLabel > XclImpChAttLabelRef; // ---------------------------------------------------------------------------- @@ -692,7 +694,7 @@ public: /** Returns true, if markers are set to automatic format. */ inline bool IsAutoMarker() const { return !mxMarkerFmt || mxMarkerFmt->IsAuto(); } /** Returns true, if the series line is smoothed. */ - inline bool HasSpline() const { return mxSeriesFmt.is() && mxSeriesFmt->HasSpline(); } + inline bool HasSpline() const { return mxSeriesFmt && mxSeriesFmt->HasSpline(); } /** Returns the data label text object. */ inline XclImpChTextRef GetDataLabel() const { return mxLabel; } @@ -719,7 +721,7 @@ private: XclImpChTextRef mxLabel; /// Data point label formatting (CHTEXT group). }; -typedef ScfRef< XclImpChDataFormat > XclImpChDataFormatRef; +typedef boost::shared_ptr< XclImpChDataFormat > XclImpChDataFormatRef; // ---------------------------------------------------------------------------- @@ -745,7 +747,7 @@ private: XclImpChDataFormatRef mxDataFmt; /// Formatting settings of the trend line. }; -typedef ScfRef< XclImpChSerTrendLine > XclImpChSerTrendLineRef; +typedef boost::shared_ptr< XclImpChSerTrendLine > XclImpChSerTrendLineRef; // ---------------------------------------------------------------------------- @@ -782,7 +784,7 @@ private: XclImpChDataFormatRef mxDataFmt; /// Formatting settings of the error bars. }; -typedef ScfRef< XclImpChSerErrorBar > XclImpChSerErrorBarRef; +typedef boost::shared_ptr< XclImpChSerErrorBar > XclImpChSerErrorBarRef; // ---------------------------------------------------------------------------- @@ -823,16 +825,16 @@ public: /** Returns the 0-based index of the parent series (e.g. of a trend line). */ inline sal_uInt16 GetParentIdx() const { return mnParentIdx; } /** Returns the format index of the series used for automatic line and area colors. */ - inline sal_uInt16 GetFormatIdx() const { return mxSeriesFmt.is() ? mxSeriesFmt->GetFormatIdx() : EXC_CHDATAFORMAT_DEFAULT; } + inline sal_uInt16 GetFormatIdx() const { return mxSeriesFmt ? mxSeriesFmt->GetFormatIdx() : EXC_CHDATAFORMAT_DEFAULT; } /** Returns true, if the series is child of another series (e.g. trend line). */ inline bool HasParentSeries() const { return mnParentIdx != EXC_CHSERIES_INVALID; } /** Returns true, if the series contains child series (e.g. trend lines). */ inline bool HasChildSeries() const { return !maTrendLines.empty() || !maErrorBars.empty(); } /** Returns series title or an empty string, if the series does not contain a title. */ - inline const String& GetTitle() const { return mxTitleLink.is() ? mxTitleLink->GetString() : String::EmptyString(); } + inline const String& GetTitle() const { return mxTitleLink ? mxTitleLink->GetString() : String::EmptyString(); } /** Returns true, if the series line is smoothed. */ - inline bool HasSpline() const { return mxSeriesFmt.is() && mxSeriesFmt->HasSpline(); } + inline bool HasSpline() const { return mxSeriesFmt && mxSeriesFmt->HasSpline(); } /** Creates a labeled data sequence object from value data link. */ XLabeledDataSeqRef CreateValueSequence( const ::rtl::OUString& rValueRole ) const; @@ -841,7 +843,7 @@ public: /** Creates a data series object with initialized source links. */ XDataSeriesRef CreateDataSeries() const; - void FillAllSourceLinks(::std::vector<ScSharedTokenRef>& rTokens) const; + void FillAllSourceLinks(::std::vector<ScTokenRef>& rTokens) const; private: /** Reads a CHSOURCELINK record. */ @@ -888,7 +890,7 @@ private: sal_uInt16 mnParentIdx; /// 0-based index of parent series (trend lines and error bars). }; -typedef ScfRef< XclImpChSeries > XclImpChSeriesRef; +typedef boost::shared_ptr< XclImpChSeries > XclImpChSeriesRef; // Chart type groups ========================================================== @@ -946,7 +948,7 @@ private: XclChChart3d maData; /// Contents of the CHCHART3D record. }; -typedef ScfRef< XclImpChChart3d > XclImpChChart3dRef; +typedef boost::shared_ptr< XclImpChChart3d > XclImpChChart3dRef; // ---------------------------------------------------------------------------- @@ -980,7 +982,7 @@ private: XclImpChFrameRef mxFrame; /// Legend frame format (CHFRAME group). }; -typedef ScfRef< XclImpChLegend > XclImpChLegendRef; +typedef boost::shared_ptr< XclImpChLegend > XclImpChLegendRef; // ---------------------------------------------------------------------------- @@ -1005,7 +1007,7 @@ private: sal_uInt16 mnBarDist; /// Distance between bars (CHDROPBAR record). }; -typedef ScfRef< XclImpChDropBar > XclImpChDropBarRef; +typedef boost::shared_ptr< XclImpChDropBar > XclImpChDropBarRef; // ---------------------------------------------------------------------------- @@ -1054,11 +1056,11 @@ public: /** Returns true, if the series in this chart type group are stacked on each other as percentage. */ inline bool IsPercent() const { return maType.IsPercent(); } /** Returns true, if the chart is three-dimensional. */ - inline bool Is3dChart() const { return mxChart3d.is() && maTypeInfo.mbSupports3d; } + inline bool Is3dChart() const { return mxChart3d && maTypeInfo.mbSupports3d; } /** Returns true, if chart type supports wall and floor format in 3d mode. */ inline bool Is3dWallChart() const { return Is3dChart() && (maTypeInfo.meTypeCateg != EXC_CHTYPECATEG_PIE); } /** Returns true, if the series in this chart type group are ordered on the Z axis. */ - inline bool Is3dDeepChart() const { return Is3dWallChart() && mxChart3d.is() && !mxChart3d->IsClustered(); } + inline bool Is3dDeepChart() const { return Is3dWallChart() && mxChart3d && !mxChart3d->IsClustered(); } /** Returns true, if category (X axis) labels are enabled (may be disabled in radar charts). */ inline bool HasCategoryLabels() const { return maType.HasCategoryLabels(); } /** Returns true, if points of a series show varying automatic area format. */ @@ -1091,7 +1093,7 @@ private: void ReadChDataFormat( XclImpStream& rStrm ); /** Returns true, if the chart type group contains a hi-lo line format. */ - inline bool HasHiLoLine() const { return maChartLines.has( EXC_CHCHARTLINE_HILO ); } + inline bool HasHiLoLine() const { return maChartLines.find( EXC_CHCHARTLINE_HILO ) != maChartLines.end(); } /** Returns true, if the chart type group contains drop bar formats. */ inline bool HasDropBars() const { return !maDropBars.empty(); } @@ -1104,10 +1106,10 @@ private: void CreateStockSeries( XChartTypeRef xChartType, sal_Int32 nApiAxesSetIdx ) const; private: - typedef ::std::vector< XclImpChSeriesRef > XclImpChSeriesVec; - typedef ScfRefMap< sal_uInt16, XclImpChDropBar > XclImpChDropBarMap; - typedef ScfRefMap< sal_uInt16, XclImpChLineFormat > XclImpChLineFormatMap; - typedef ::std::set< sal_uInt16 > UInt16Set; + typedef ::std::vector< XclImpChSeriesRef > XclImpChSeriesVec; + typedef ScfRefMap< sal_uInt16, XclImpChDropBar > XclImpChDropBarMap; + typedef boost::ptr_map< sal_uInt16, XclImpChLineFormat > XclImpChLineFormatMap; + typedef ::std::set< sal_uInt16 > UInt16Set; XclChTypeGroup maData; /// Contents of the CHTYPEGROUP record. XclImpChType maType; /// Chart type (e.g. CHBAR, CHLINE, ...). @@ -1122,7 +1124,7 @@ private: UInt16Set maUnusedFormats; /// Contains unused format indexes for automatic colors. }; -typedef ScfRef< XclImpChTypeGroup > XclImpChTypeGroupRef; +typedef boost::shared_ptr< XclImpChTypeGroup > XclImpChTypeGroupRef; // Axes ======================================================================= @@ -1144,7 +1146,7 @@ private: XclChLabelRange maData; /// Contents of the CHLABELRANGE record. }; -typedef ScfRef< XclImpChLabelRange > XclImpChLabelRangeRef; +typedef boost::shared_ptr< XclImpChLabelRange > XclImpChLabelRangeRef; // ---------------------------------------------------------------------------- @@ -1166,7 +1168,7 @@ private: XclChValueRange maData; /// Contents of the CHVALUERANGE record. }; -typedef ScfRef< XclImpChValueRange > XclImpChValueRangeRef; +typedef boost::shared_ptr< XclImpChValueRange > XclImpChValueRangeRef; // ---------------------------------------------------------------------------- @@ -1191,7 +1193,7 @@ private: XclChTick maData; /// Contents of the CHTICK record. }; -typedef ScfRef< XclImpChTick > XclImpChTickRef; +typedef boost::shared_ptr< XclImpChTick > XclImpChTickRef; // ---------------------------------------------------------------------------- @@ -1232,9 +1234,9 @@ public: /** Returns true, if the axis contains caption labels. */ inline bool HasLabels() const { return !mxTick || mxTick->HasLabels(); } /** Returns true, if the axis shows its major grid lines. */ - inline bool HasMajorGrid() const { return mxMajorGrid.is(); } + inline bool HasMajorGrid() const { return mxMajorGrid; } /** Returns true, if the axis shows its minor grid lines. */ - inline bool HasMinorGrid() const { return mxMinorGrid.is(); } + inline bool HasMinorGrid() const { return mxMinorGrid; } /** Creates an API axis object. */ XAxisRef CreateAxis( const XclImpChTypeGroup& rTypeGroup, const XclImpChAxis* pCrossingAxis ) const; @@ -1262,7 +1264,7 @@ private: sal_uInt16 mnNumFmtIdx; /// Index into number format buffer (CHFORMAT record). }; -typedef ScfRef< XclImpChAxis > XclImpChAxisRef; +typedef boost::shared_ptr< XclImpChAxis > XclImpChAxisRef; // ---------------------------------------------------------------------------- @@ -1350,7 +1352,7 @@ private: XclImpChTypeGroupMap maTypeGroups; /// Chart type groups (CHTYPEGROUP group). }; -typedef ScfRef< XclImpChAxesSet > XclImpChAxesSetRef; +typedef boost::shared_ptr< XclImpChAxesSet > XclImpChAxesSetRef; // The chart object =========================================================== @@ -1436,7 +1438,7 @@ private: XclImpChLegendRef mxLegend; /// Chart legend (CHLEGEND group). }; -typedef ScfRef< XclImpChChart > XclImpChChartRef; +typedef boost::shared_ptr< XclImpChChart > XclImpChChartRef; // ---------------------------------------------------------------------------- @@ -1501,7 +1503,7 @@ private: void ReadChChart( XclImpStream& rStrm ); private: - typedef ScfRef< XclImpChartDrawing > XclImpChartDrawingRef; + typedef boost::shared_ptr< XclImpChartDrawing > XclImpChartDrawingRef; XclImpChChartRef mxChartData; /// The chart data (CHCHART group). XclImpChartDrawingRef mxChartDrawing; /// Drawing container for embedded shapes. diff --git a/sc/source/filter/inc/xicontent.hxx b/sc/source/filter/inc/xicontent.hxx index 6bd2e38355f6..31a62aba7aa5 100644 --- a/sc/source/filter/inc/xicontent.hxx +++ b/sc/source/filter/inc/xicontent.hxx @@ -38,6 +38,7 @@ #include <map> #include <boost/ptr_container/ptr_vector.hpp> +#include <boost/noncopyable.hpp> /* ============================================================================ Classes to import the big Excel document contents (related to several cells or @@ -84,7 +85,7 @@ private: // Hyperlinks ================================================================= /** Provides importing hyperlinks and inserting them into a document. */ -class XclImpHyperlink : ScfNoInstance +class XclImpHyperlink : private boost::noncopyable { public: /** Reads a HLINK record and inserts it into the document. @@ -100,17 +101,29 @@ public: /** Convert the sheet name with invalid character(s) in URL when the URL is to a location within the same document (e.g. #'Sheet&Name'.A1). */ static void ConvertToValidTabName(String& rName); + +private: + /** We don't want anybody to instantiate this class, since it is just a + collection of static methods. To enforce this, the default constructor + is made private */ + XclImpHyperlink(); }; // Label ranges =============================================================== /** Provides importing label ranges and inserting them into a document. */ -class XclImpLabelranges : ScfNoInstance +class XclImpLabelranges : private boost::noncopyable { public: /** Reads a LABELRANGES record and inserts the label ranges into the document. @descr Import stream must be located at start of a LABELRANGES record. */ static void ReadLabelranges( XclImpStream& rStrm ); + +private: + /** We don't want anybody to instantiate this class, since it is just a + collection of static methods. To enforce this, the default constructor + is made private */ + XclImpLabelranges(); }; // Conditional formatting ===================================================== @@ -159,7 +172,7 @@ public: void Apply(); private: - typedef ScfDelList< XclImpCondFormat > XclImpCondFmtList; + typedef boost::ptr_vector< XclImpCondFormat > XclImpCondFmtList; XclImpCondFmtList maCondFmtList; /// List with all conditional formattings. }; @@ -193,7 +206,7 @@ private: // Web queries ================================================================ /** Stores the data of one web query. */ -class XclImpWebQuery : ScfNoCopy +class XclImpWebQuery : private boost::noncopyable { public: explicit XclImpWebQuery( const ScRange& rDestRange ); @@ -249,19 +262,25 @@ public: void Apply(); private: - typedef ScfDelList< XclImpWebQuery > XclImpWebQueryList; + typedef boost::ptr_vector< XclImpWebQuery > XclImpWebQueryList; XclImpWebQueryList maWQList; /// List of the web query objects. }; // Decryption ================================================================= /** Provides static functions to import stream decryption settings. */ -class XclImpDecryptHelper : ScfNoInstance +class XclImpDecryptHelper : private boost::noncopyable { public: /** Reads the FILEPASS record, queries a password and sets decryption algorihm. @return Error code that may cause an error message after import. */ static ErrCode ReadFilepass( XclImpStream& rStrm ); + +private: + /** We don't want anybody to instantiate this class, since it is just a + collection of static methods. To enforce this, the default constructor + is made private */ + XclImpDecryptHelper(); }; // ============================================================================ @@ -322,7 +341,6 @@ private: ProtectedSheetMap maProtectedSheets; }; - // ============================================================================ #endif diff --git a/sc/source/filter/inc/xiescher.hxx b/sc/source/filter/inc/xiescher.hxx index bf623b4a2da5..a41d39c1901b 100644 --- a/sc/source/filter/inc/xiescher.hxx +++ b/sc/source/filter/inc/xiescher.hxx @@ -38,6 +38,7 @@ #include "xlescher.hxx" #include "xiroot.hxx" #include "xistring.hxx" +#include <boost/shared_ptr.hpp> namespace com { namespace sun { namespace star { namespace drawing { class XShape; } @@ -54,7 +55,7 @@ class XclImpDrawing; // Drawing objects ============================================================ class XclImpDrawObjBase; -typedef ScfRef< XclImpDrawObjBase > XclImpDrawObjRef; +typedef boost::shared_ptr< XclImpDrawObjBase > XclImpDrawObjRef; /** Base class for drawing objects (OBJ records). */ class XclImpDrawObjBase : protected XclImpRoot @@ -448,7 +449,7 @@ private: void FinalizeTabChart(); private: - typedef ScfRef< XclImpChart > XclImpChartRef; + typedef boost::shared_ptr< XclImpChart > XclImpChartRef; XclImpChartRef mxChart; /// The chart itself (BOF/EOF substream data). bool mbOwnTab; /// true = own sheet; false = embedded object. @@ -484,9 +485,9 @@ public: virtual ~XclImpControlHelper(); /** Returns true, if a linked cell address is present. */ - inline bool HasCellLink() const { return mxCellLink.is(); } + inline bool HasCellLink() const { return mxCellLink != 0; } /** Returns true, if a linked source cell range is present. */ - inline bool HasSourceRange() const { return mxSrcRange.is(); } + inline bool HasSourceRange() const { return mxSrcRange != 0; } /** Returns the SdrObject from the passed control shape and sets the bounding rectangle. */ SdrObject* CreateSdrObjectFromShape( @@ -507,8 +508,8 @@ protected: void ApplySheetLinkProps() const; mutable ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > - mxShape; /// The UNO wrapper of the control shape. - ScfRef< ScAddress > mxCellLink; /// Linked cell in the Calc document. + mxShape; /// The UNO wrapper of the control shape. + boost::shared_ptr< ScAddress > mxCellLink; /// Linked cell in the Calc document. private: /** Reads a list of cell ranges from a formula at the current stream position. */ void ReadRangeList( ScRangeList& rScRanges, XclImpStream& rStrm ); @@ -516,9 +517,9 @@ private: void ReadRangeList( ScRangeList& rScRanges, XclImpStream& rStrm, bool bWithBoundSize ); private: - const XclImpRoot& mrRoot; /// Not derived from XclImpRoot to allow multiple inheritance. - ScfRef< ScRange > mxSrcRange; /// Source data range in the Calc document. - XclCtrlBindMode meBindMode; /// Value binding mode. + const XclImpRoot& mrRoot; /// Not derived from XclImpRoot to allow multiple inheritance. + boost::shared_ptr< ScRange > mxSrcRange; /// Source data range in the Calc document. + XclCtrlBindMode meBindMode; /// Value binding mode. }; // ---------------------------------------------------------------------------- @@ -977,7 +978,7 @@ public: protected: /** Returns a color from the Excel color palette. */ - virtual int GetColorFromPalette( USHORT nIndex, Color& rColor ) const; + virtual bool GetColorFromPalette( USHORT nIndex, Color& rColor ) const; }; // ---------------------------------------------------------------------------- @@ -1091,8 +1092,8 @@ private: void InitControlForm(); private: - typedef ScfRef< ScfProgressBar > ScfProgressBarRef; - typedef ScfRef< XclImpDffConvData > XclImpDffConvDataRef; + typedef boost::shared_ptr< ScfProgressBar > ScfProgressBarRef; + typedef boost::shared_ptr< XclImpDffConvData > XclImpDffConvDataRef; typedef ::std::vector< XclImpDffConvDataRef > XclImpDffConvDataStack; const ::rtl::OUString maStdFormName; /// Standard name of control forms. @@ -1162,7 +1163,7 @@ private: private: typedef ::std::map< sal_Size, XclImpDrawObjRef > XclImpObjMap; typedef ::std::map< sal_uInt16, XclImpDrawObjRef > XclImpObjMapById; - typedef ScfRef< XclImpObjTextData > XclImpObjTextRef; + typedef boost::shared_ptr< XclImpObjTextData > XclImpObjTextRef; typedef ::std::map< sal_Size, XclImpObjTextRef > XclImpObjTextMap; XclImpDrawObjVector maRawObjs; /// BIFF5 objects without DFF data. @@ -1213,8 +1214,6 @@ private: /** Stores all drawing and OLE objects and additional data related to these objects. */ class XclImpObjectManager : protected XclImpRoot { -typedef std::hash_map< sal_Int32, String > CntrlObjIdToName; -typedef std::map< String, CntrlObjIdToName > CodeNameToCntrlObjIdInfo; public: explicit XclImpObjectManager( const XclImpRoot& rRoot ); virtual ~XclImpObjectManager(); @@ -1231,13 +1230,15 @@ public: String GetDefaultObjName( const XclImpDrawObjBase& rDrawObj ) const; /** Returns the used area in the sheet with the passed index. */ ScRange GetUsedArea( SCTAB nScTab ) const; - void SetOleNameOverrideInfo( const CodeNameToCntrlObjIdInfo& rOverrideInfo ) { maOleCtrlNameOverride = rOverrideInfo; } + /** Sets the container to receive overridden shape/ctrl names from + the filter. */ + void SetOleNameOverrideInfo( const com::sun::star::uno::Reference< com::sun::star::container::XNameContainer >& rxOverrideInfo ) { mxOleCtrlNameOverride = rxOverrideInfo; } + /** Returns the name of overridden name ( or zero length string ) for + associated object id. */ String GetOleNameOverride( SCTAB nTab, sal_uInt16 nObjId ); // ------------------------------------------------------------------------ private: - CodeNameToCntrlObjIdInfo maOleCtrlNameOverride; - /** Reads and returns a bitmap from WMF/PICT format. */ static void ReadWmf( Graphic& rGraphic, XclImpStream& rStrm ); /** Reads and returns a bitmap from BMP format. */ @@ -1262,14 +1263,15 @@ private: private: typedef ::std::map< sal_Size, XclImpDrawObjRef > XclImpObjMap; typedef ::std::map< XclObjId, XclImpDrawObjRef > XclImpObjMapById; - typedef ScfRef< XclImpObjTextData > XclImpObjTextRef; + typedef boost::shared_ptr< XclImpObjTextData > XclImpObjTextRef; typedef ::std::map< sal_Size, XclImpObjTextRef > XclImpObjTextMap; typedef ::std::vector< XclObjId > XclObjIdVec; typedef ::std::map< sal_uInt16, String > DefObjNameMap; - typedef ScfRef< XclImpSheetDrawing > XclImpSheetDrawingRef; + typedef boost::shared_ptr< XclImpSheetDrawing > XclImpSheetDrawingRef; typedef ::std::map< SCTAB, XclImpSheetDrawingRef > XclImpSheetDrawingMap; + com::sun::star::uno::Reference< com::sun::star::container::XNameContainer > mxOleCtrlNameOverride; DefObjNameMap maDefObjNames; /// Default base names for all object types. SvMemoryStream maDggStrm; /// Copy of global DFF data (DGG container) in memory. XclImpSheetDrawingMap maSheetDrawings; /// Drawing managers of all sheets. diff --git a/sc/source/filter/inc/xiformula.hxx b/sc/source/filter/inc/xiformula.hxx index 5ed9d04b0ea9..b245fe92cee1 100644 --- a/sc/source/filter/inc/xiformula.hxx +++ b/sc/source/filter/inc/xiformula.hxx @@ -31,6 +31,7 @@ #include "xlformula.hxx" #include "xiroot.hxx" +#include <boost/shared_ptr.hpp> // Formula compiler =========================================================== @@ -59,7 +60,7 @@ public: const ScTokenArray* CreateFormula( XclFormulaType eType, const XclTokenArray& rXclTokArr ); private: - typedef ScfRef< XclImpFmlaCompImpl > XclImpFmlaCompImplRef; + typedef boost::shared_ptr< XclImpFmlaCompImpl > XclImpFmlaCompImplRef; XclImpFmlaCompImplRef mxImpl; }; diff --git a/sc/source/filter/inc/xihelper.hxx b/sc/source/filter/inc/xihelper.hxx index 6ee969c6b0a0..278d601f13ac 100644 --- a/sc/source/filter/inc/xihelper.hxx +++ b/sc/source/filter/inc/xihelper.hxx @@ -30,6 +30,9 @@ #define SC_XIHELPER_HXX #include <editeng/editdata.hxx> +#include <boost/noncopyable.hpp> +#include <boost/shared_ptr.hpp> +#include <boost/ptr_container/ptr_vector.hpp> #include "scmatrix.hxx" #include "xladdress.hxx" #include "xiroot.hxx" @@ -111,7 +114,7 @@ class EditTextObject; /** This class provides methods to convert an XclImpString. @The string can be converted to an edit engine text object or directly to a Calc edit cell. */ -class XclImpStringHelper : ScfNoInstance +class XclImpStringHelper : boost::noncopyable { public: /** Returns a new edit engine text object. @@ -126,6 +129,11 @@ public: const XclImpRoot& rRoot, const XclImpString& rString, sal_uInt16 nXFIndex = 0 ); +private: + /** We don't want anybody to instantiate this class, since it is just a + collection of static methods. To enforce this, the default constructor + is made private */ + XclImpStringHelper(); }; // Header/footer conversion =================================================== @@ -165,7 +173,7 @@ struct XclFontData; Known but unsupported control sequences: &G picture */ -class XclImpHFConverter : protected XclImpRoot, ScfNoCopy +class XclImpHFConverter : protected XclImpRoot, private boost::noncopyable { public: explicit XclImpHFConverter( const XclImpRoot& rRoot ); @@ -188,7 +196,7 @@ private: // types /** Contains all information about a header/footer portion. */ struct XclImpHFPortionInfo { - typedef ScfRef< EditTextObject > EditTextObjectRef; + typedef boost::shared_ptr< EditTextObject > EditTextObjectRef; EditTextObjectRef mxObj; /// Edit engine text object. ESelection maSel; /// Edit engine selection. sal_Int32 mnHeight; /// Height of previous lines in twips. @@ -250,7 +258,7 @@ private: /** This class contains static methods to decode an URL stored in an Excel file. @descr Excel URLs can contain a sheet name, for instance: path\[test.xls]Sheet1 This sheet name will be extracted automatically. */ -class XclImpUrlHelper : ScfNoInstance +class XclImpUrlHelper : boost::noncopyable { public: /** Decodes an encoded external document URL with optional sheet name. @@ -280,6 +288,12 @@ public: For OLE object links: Decodes to class name and document URL. @return true = decoding was successful, returned strings are valid (not empty). */ static bool DecodeLink( String& rApplic, String& rTopic, const String rEncUrl ); + +private: + /** We don't want anybody to instantiate this class, since it is just a + collection of static methods. To enforce this, the default constructor + is made private */ + XclImpUrlHelper(); }; // Cached values ============================================================== @@ -288,7 +302,7 @@ class ScTokenArray; /** This class stores one cached value of a cached value list (used for instance in CRN, EXTERNNAME, tArray). */ -class XclImpCachedValue : ScfNoCopy +class XclImpCachedValue : boost::noncopyable { public: /** Creates a cached value and reads contents from stream and stores it with its array address. */ @@ -334,7 +348,7 @@ public: ScMatrixRef CreateScMatrix() const; private: - typedef ScfDelList< XclImpCachedValue > XclImpValueList; + typedef boost::ptr_vector< XclImpCachedValue > XclImpValueList; XclImpValueList maValueList; /// List of cached cell values. SCSIZE mnScCols; /// Number of cached columns. diff --git a/sc/source/filter/inc/xiname.hxx b/sc/source/filter/inc/xiname.hxx index bf260a76548e..8d05d680d690 100644 --- a/sc/source/filter/inc/xiname.hxx +++ b/sc/source/filter/inc/xiname.hxx @@ -29,7 +29,7 @@ #ifndef SC_XINAME_HXX #define SC_XINAME_HXX -#include <map> +#include <boost/ptr_container/ptr_vector.hpp> #include "xlname.hxx" #include "xiroot.hxx" @@ -91,7 +91,7 @@ public: const XclImpName* GetName( sal_uInt16 nXclNameIdx ) const; private: - typedef ScfDelList< XclImpName > XclImpNameList; + typedef boost::ptr_vector< XclImpName > XclImpNameList; XclImpNameList maNameList; }; diff --git a/sc/source/filter/inc/xipivot.hxx b/sc/source/filter/inc/xipivot.hxx index 72bb174b8d62..5096ff97bc2b 100644 --- a/sc/source/filter/inc/xipivot.hxx +++ b/sc/source/filter/inc/xipivot.hxx @@ -32,6 +32,7 @@ #include <list> #include "xlpivot.hxx" #include "xiroot.hxx" +#include <boost/shared_ptr.hpp> class ScDPSaveData; class ScDPSaveDimension; @@ -66,7 +67,7 @@ private: void ReadSxempty( XclImpStream& rStrm ); }; -typedef ScfRef< XclImpPCItem > XclImpPCItemRef; +typedef boost::shared_ptr< XclImpPCItem > XclImpPCItemRef; // ============================================================================ @@ -153,7 +154,7 @@ private: bool mbNumGroupInfoRead; /// true = Numeric grouping info read (SXNUMGROUP record). }; -typedef ScfRef< XclImpPCField > XclImpPCFieldRef; +typedef boost::shared_ptr< XclImpPCField > XclImpPCFieldRef; // ============================================================================ @@ -199,7 +200,7 @@ private: bool mbSelfRef; /// true = Source data from own document. }; -typedef ScfRef< XclImpPivotCache > XclImpPivotCacheRef; +typedef boost::shared_ptr< XclImpPivotCache > XclImpPivotCacheRef; // ============================================================================ // Pivot table @@ -230,7 +231,7 @@ private: const XclImpPCField* mpCacheField; /// Corresponding pivot cache field. }; -typedef ScfRef< XclImpPTItem > XclImpPTItemRef; +typedef boost::shared_ptr< XclImpPTItem > XclImpPTItemRef; // ============================================================================ @@ -309,7 +310,7 @@ private: XclImpPTItemVec maItems; /// List of all items of this field. }; -typedef ScfRef< XclImpPTField > XclImpPTFieldRef; +typedef boost::shared_ptr< XclImpPTField > XclImpPTFieldRef; // ============================================================================ @@ -385,7 +386,7 @@ private: ScDPObject* mpDPObj; }; -typedef ScfRef< XclImpPivotTable > XclImpPivotTableRef; +typedef boost::shared_ptr< XclImpPivotTable > XclImpPivotTableRef; // ============================================================================ // ============================================================================ diff --git a/sc/source/filter/inc/xiroot.hxx b/sc/source/filter/inc/xiroot.hxx index c53c09029bdc..898f4eea4971 100644 --- a/sc/source/filter/inc/xiroot.hxx +++ b/sc/source/filter/inc/xiroot.hxx @@ -30,13 +30,14 @@ #define SC_XIROOT_HXX #include "xlroot.hxx" +#include <boost/shared_ptr.hpp> // Forward declarations of objects in public use ============================== class XclImpStream; class XclImpString; -typedef ScfRef< XclImpString > XclImpStringRef; +typedef boost::shared_ptr< XclImpString > XclImpStringRef; // Global data ================================================================ @@ -70,28 +71,28 @@ class ExcelToSc; /** Stores global buffers and data needed for Excel import filter. */ struct XclImpRootData : public XclRootData { - typedef ScfRef< XclImpAddressConverter > XclImpAddrConvRef; - typedef ScfRef< XclImpFormulaCompiler > XclImpFmlaCompRef; - - typedef ScfRef< XclImpSst > XclImpSstRef; - typedef ScfRef< XclImpPalette > XclImpPaletteRef; - typedef ScfRef< XclImpFontBuffer > XclImpFontBfrRef; - typedef ScfRef< XclImpNumFmtBuffer > XclImpNumFmtBfrRef; - typedef ScfRef< XclImpXFBuffer > XclImpXFBfrRef; - typedef ScfRef< XclImpXFRangeBuffer > XclImpXFRangeBfrRef; - typedef ScfRef< XclImpTabInfo > XclImpTabInfoRef; - typedef ScfRef< XclImpNameManager > XclImpNameMgrRef; - typedef ScfRef< XclImpLinkManager > XclImpLinkMgrRef; - typedef ScfRef< XclImpObjectManager > XclImpObjectMgrRef; - typedef ScfRef< XclImpCondFormatManager > XclImpCondFmtMgrRef; - typedef ScfRef< XclImpValidationManager > XclImpValidationMgrRef; - typedef ScfRef< XclImpWebQueryBuffer > XclImpWebQueryBfrRef; - typedef ScfRef< XclImpPivotTableManager > XclImpPTableMgrRef; - typedef ScfRef< XclImpPageSettings > XclImpPageSettRef; - typedef ScfRef< XclImpDocViewSettings > XclImpDocViewSettRef; - typedef ScfRef< XclImpTabViewSettings > XclImpTabViewSettRef; - typedef ScfRef< XclImpSheetProtectBuffer > XclImpTabProtectRef; - typedef ScfRef< XclImpDocProtectBuffer > XclImpDocProtectRef; + typedef boost::shared_ptr< XclImpAddressConverter > XclImpAddrConvRef; + typedef boost::shared_ptr< XclImpFormulaCompiler > XclImpFmlaCompRef; + + typedef boost::shared_ptr< XclImpSst > XclImpSstRef; + typedef boost::shared_ptr< XclImpPalette > XclImpPaletteRef; + typedef boost::shared_ptr< XclImpFontBuffer > XclImpFontBfrRef; + typedef boost::shared_ptr< XclImpNumFmtBuffer > XclImpNumFmtBfrRef; + typedef boost::shared_ptr< XclImpXFBuffer > XclImpXFBfrRef; + typedef boost::shared_ptr< XclImpXFRangeBuffer > XclImpXFRangeBfrRef; + typedef boost::shared_ptr< XclImpTabInfo > XclImpTabInfoRef; + typedef boost::shared_ptr< XclImpNameManager > XclImpNameMgrRef; + typedef boost::shared_ptr< XclImpLinkManager > XclImpLinkMgrRef; + typedef boost::shared_ptr< XclImpObjectManager > XclImpObjectMgrRef; + typedef boost::shared_ptr< XclImpCondFormatManager > XclImpCondFmtMgrRef; + typedef boost::shared_ptr< XclImpValidationManager > XclImpValidationMgrRef; + typedef boost::shared_ptr< XclImpWebQueryBuffer > XclImpWebQueryBfrRef; + typedef boost::shared_ptr< XclImpPivotTableManager > XclImpPTableMgrRef; + typedef boost::shared_ptr< XclImpPageSettings > XclImpPageSettRef; + typedef boost::shared_ptr< XclImpDocViewSettings > XclImpDocViewSettRef; + typedef boost::shared_ptr< XclImpTabViewSettings > XclImpTabViewSettRef; + typedef boost::shared_ptr< XclImpSheetProtectBuffer > XclImpTabProtectRef; + typedef boost::shared_ptr< XclImpDocProtectBuffer > XclImpDocProtectRef; XclImpAddrConvRef mxAddrConv; /// The address converter. XclImpFmlaCompRef mxFmlaComp; /// The formula compiler. diff --git a/sc/source/filter/inc/xistream.hxx b/sc/source/filter/inc/xistream.hxx index 6dff1a867f2e..86428c199639 100644 --- a/sc/source/filter/inc/xistream.hxx +++ b/sc/source/filter/inc/xistream.hxx @@ -31,6 +31,7 @@ #include <comphelper/docpasswordhelper.hxx> #include <filter/msfilter/mscodec.hxx> +#include <boost/shared_ptr.hpp> #include "xlstream.hxx" #include "xlconst.hxx" @@ -48,7 +49,7 @@ Input stream class for Excel import // ============================================================================ class XclImpDecrypter; -typedef ScfRef< XclImpDecrypter > XclImpDecrypterRef; +typedef boost::shared_ptr< XclImpDecrypter > XclImpDecrypterRef; /** Base class for BIFF stream decryption. */ class XclImpDecrypter : public ::comphelper::IDocPasswordVerifier diff --git a/sc/source/filter/inc/xistyle.hxx b/sc/source/filter/inc/xistyle.hxx index b4aa9e96d384..399f0027b155 100644 --- a/sc/source/filter/inc/xistyle.hxx +++ b/sc/source/filter/inc/xistyle.hxx @@ -31,6 +31,9 @@ #include <list> #include <tools/mempool.hxx> +#include <boost/noncopyable.hpp> +#include <boost/shared_ptr.hpp> +#include <boost/ptr_container/ptr_vector.hpp> #include "rangelst.hxx" #include "patattr.hxx" #include "xladdress.hxx" @@ -38,7 +41,7 @@ #include "xiroot.hxx" class ScDocumentPool; -class ScAttrEntry; +struct ScAttrEntry; /* ============================================================================ - Buffers for style records (PALETTE, FONT, FORMAT, XF) @@ -168,7 +171,7 @@ private: // ---------------------------------------------------------------------------- /** Stores the data of all fonts occurred in an Excel file. */ -class XclImpFontBuffer : protected XclImpRoot, ScfNoCopy +class XclImpFontBuffer : protected XclImpRoot, private boost::noncopyable { public: explicit XclImpFontBuffer( const XclImpRoot& rRoot ); @@ -206,15 +209,15 @@ private: void UpdateAppFont( const XclFontData& rFontData, bool bHasCharSet ); private: - ScfDelList< XclImpFont > maFontList; /// List of all FONT records in the Excel file. - XclFontData maAppFont; /// Application font (for column width). - XclImpFont maFont4; /// Built-in font with index 4. - XclImpFont maCtrlFont; /// BIFF5 default form controls font (Helv,8pt,bold). + boost::ptr_vector< XclImpFont > maFontList; /// List of all FONT records in the Excel file. + XclFontData maAppFont; /// Application font (for column width). + XclImpFont maFont4; /// Built-in font with index 4. + XclImpFont maCtrlFont; /// BIFF5 default form controls font (Helv,8pt,bold). }; // FORMAT record - number formats ============================================= -/** Stores all user defined number formats occured in the file. */ +/** Stores all user defined number formats occurred in the file. */ class XclImpNumFmtBuffer : public XclNumFmtBuffer, protected XclImpRoot { public: @@ -392,7 +395,7 @@ inline bool operator!=( const XclImpXFIndex& rLeft, const XclImpXFIndex& rRight // ---------------------------------------------------------------------------- /** Contains all data of a XF record and a Calc item set. */ -class XclImpXF : public XclXFBase, protected XclImpRoot, ScfNoCopy +class XclImpXF : public XclXFBase, protected XclImpRoot, private boost::noncopyable { public: explicit XclImpXF( const XclImpRoot& rRoot ); @@ -478,9 +481,9 @@ private: // ---------------------------------------------------------------------------- -/** Contains all XF records occured in the file. +/** Contains all XF records occurred in the file. @descr This class is able to read XF records (BIFF2 - BIFF8) and STYLE records (BIFF8). */ -class XclImpXFBuffer : protected XclImpRoot, ScfNoCopy +class XclImpXFBuffer : protected XclImpRoot, private boost::noncopyable { public: explicit XclImpXFBuffer( const XclImpRoot& rRoot ); @@ -494,8 +497,11 @@ public: void ReadStyle( XclImpStream& rStrm ); /** Returns the object that stores all contents of an XF record. */ - inline XclImpXF* GetXF( sal_uInt16 nXFIndex ) const - { return maXFList.GetObject( nXFIndex ); } + inline XclImpXF* GetXF( sal_uInt16 nXFIndex ) + { return (nXFIndex >= maXFList.size()) ? NULL : &maXFList.at(nXFIndex); } + + inline const XclImpXF* GetXF( sal_uInt16 nXFIndex ) const + { return (nXFIndex >= maXFList.size()) ? NULL : &maXFList.at(nXFIndex); } /** Returns the index to the Excel font used in the specified XF record. */ sal_uInt16 GetFontIndex( sal_uInt16 nXFIndex ) const; @@ -509,10 +515,10 @@ public: ScStyleSheet* CreateStyleSheet( sal_uInt16 nXFIndex ); private: - typedef ScfDelList< XclImpStyle > XclImpStyleList; + typedef boost::ptr_vector< XclImpStyle > XclImpStyleList; typedef ::std::map< sal_uInt16, XclImpStyle* > XclImpStyleMap; - ScfDelList< XclImpXF > maXFList; /// List of contents of all XF record. + boost::ptr_vector< XclImpXF > maXFList; /// List of contents of all XF record. XclImpStyleList maBuiltinStyles; /// List of built-in cell styles. XclImpStyleList maUserStyles; /// List of user defined cell styles. XclImpStyleMap maStylesByXf; /// Maps XF records to cell styles. @@ -564,15 +570,15 @@ inline bool XclImpXFRange::Contains( SCROW nScRow ) const // ---------------------------------------------------------------------------- /** Contains the XF indexes for every used cell in a column. */ -class XclImpXFRangeColumn : ScfNoCopy +class XclImpXFRangeColumn : private boost::noncopyable { public: + typedef ::boost::ptr_vector<XclImpXFRange> IndexList; + inline explicit XclImpXFRangeColumn() {} - /** Returns the first formatted cell range in this column. */ - inline XclImpXFRange* First() { return maIndexList.First(); } - /** Returns the next formatted cell range in this column. */ - inline XclImpXFRange* Next() { return maIndexList.Next(); } + IndexList::iterator begin() { return maIndexList.begin(); } + IndexList::iterator end() { return maIndexList.end(); } /** Inserts a single row range into the list. */ void SetDefaultXF( const XclImpXFIndex& rXFIndex ); @@ -587,21 +593,24 @@ private: XclImpXFRange*& rpPrevRange, XclImpXFRange*& rpNextRange, ULONG& rnNextIndex, - SCROW nScRow ) const; + SCROW nScRow ); /** Tries to concatenate a range with its predecessor. @descr The ranges must have the same XF index and must not have a gap. The resulting range has the index nIndex-1. */ void TryConcatPrev( ULONG nIndex ); + /** Insert a range into the list at the specified index. */ + void Insert(XclImpXFRange* pXFRange, ULONG nIndex); + private: - ScfDelList< XclImpXFRange > maIndexList; /// The list of XF index range. + IndexList maIndexList; /// The list of XF index range. }; // ---------------------------------------------------------------------------- /** Contains the XF indexes for every used cell in a single sheet. */ -class XclImpXFRangeBuffer : protected XclImpRoot, ScfNoCopy +class XclImpXFRangeBuffer : protected XclImpRoot, private boost::noncopyable { public: explicit XclImpXFRangeBuffer( const XclImpRoot& rRoot ); @@ -654,10 +663,10 @@ private: void SetBorderLine( const ScRange& rRange, SCTAB nScTab, USHORT nLine ); private: - typedef ScfRef< XclImpXFRangeColumn > XclImpXFRangeColumnRef; - typedef ::std::vector< XclImpXFRangeColumnRef > XclImpXFRangeColumnVec; - typedef ::std::pair< XclRange, String > XclImpHyperlinkRange; - typedef ::std::list< XclImpHyperlinkRange > XclImpHyperlinkList; + typedef boost::shared_ptr< XclImpXFRangeColumn > XclImpXFRangeColumnRef; + typedef ::std::vector< XclImpXFRangeColumnRef > XclImpXFRangeColumnVec; + typedef ::std::pair< XclRange, String > XclImpHyperlinkRange; + typedef ::std::list< XclImpHyperlinkRange > XclImpHyperlinkList; XclImpXFRangeColumnVec maColumns; /// Array of column XF index buffers. XclImpHyperlinkList maHyperlinks; /// Maps URLs to hyperlink cells. diff --git a/sc/source/filter/inc/xlchart.hxx b/sc/source/filter/inc/xlchart.hxx index c6ebe7382c7b..6c4ced698745 100644 --- a/sc/source/filter/inc/xlchart.hxx +++ b/sc/source/filter/inc/xlchart.hxx @@ -37,6 +37,7 @@ #include <map> #include <tools/gen.hxx> #include "fapihelper.hxx" +#include <boost/shared_ptr.hpp> namespace com { namespace sun { namespace star { namespace container { class XNameContainer; } @@ -823,8 +824,8 @@ class EscherPropertyContainer; struct XclChEscherFormat { - typedef ScfRef< SfxItemSet > SfxItemSetRef; - typedef ScfRef< EscherPropertyContainer > EscherPropSetRef; + typedef boost::shared_ptr< SfxItemSet > SfxItemSetRef; + typedef boost::shared_ptr< EscherPropertyContainer > EscherPropSetRef; SfxItemSetRef mxItemSet; /// Item set for Escher properties import. EscherPropSetRef mxEscherSet; /// Container for Escher properties export. @@ -1445,9 +1446,9 @@ private: /** Base struct for internal root data structs for import and export. */ struct XclChRootData { - typedef ScfRef< XclChTypeInfoProvider > XclChTypeProvRef; - typedef ScfRef< XclChFormatInfoProvider > XclChFmtInfoProvRef; - typedef ScfRef< XclChObjectTable > XclChObjectTableRef; + typedef boost::shared_ptr< XclChTypeInfoProvider > XclChTypeProvRef; + typedef boost::shared_ptr< XclChFormatInfoProvider > XclChFmtInfoProvRef; + typedef boost::shared_ptr< XclChObjectTable > XclChObjectTableRef; typedef ::std::map< XclChTextKey, XclChGetShapeFunc > XclChGetShapeFuncMap; ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument > diff --git a/sc/source/filter/inc/xlformula.hxx b/sc/source/filter/inc/xlformula.hxx index 5dfdb3ca1c12..520af6f1d69b 100644 --- a/sc/source/filter/inc/xlformula.hxx +++ b/sc/source/filter/inc/xlformula.hxx @@ -33,6 +33,7 @@ #include <formula/opcode.hxx> #include "address.hxx" #include "ftools.hxx" +#include <boost/shared_ptr.hpp> // Constants ================================================================== @@ -409,7 +410,7 @@ private: bool mbVolatile; /// True = Formula contains volatile function. }; -typedef ScfRef< XclTokenArray > XclTokenArrayRef; +typedef boost::shared_ptr< XclTokenArray > XclTokenArrayRef; /** Calls the Read() function at the passed token array. */ XclImpStream& operator>>( XclImpStream& rStrm, XclTokenArray& rTokArr ); diff --git a/sc/source/filter/inc/xlpage.hxx b/sc/source/filter/inc/xlpage.hxx index dfed44b91afd..f58f815edcbe 100644 --- a/sc/source/filter/inc/xlpage.hxx +++ b/sc/source/filter/inc/xlpage.hxx @@ -30,6 +30,7 @@ #define SC_XLPAGE_HXX #include <tools/gen.hxx> +#include <boost/noncopyable.hpp> #include "xltools.hxx" // Constants and Enumerations ================================================= @@ -100,7 +101,7 @@ class SvxBrushItem; class SfxPrinter; /** Contains all page (print) settings for a single sheet. */ -struct XclPageData : ScfNoCopy +struct XclPageData : private boost::noncopyable { typedef ::std::auto_ptr< SvxBrushItem > SvxBrushItemPtr; diff --git a/sc/source/filter/inc/xlroot.hxx b/sc/source/filter/inc/xlroot.hxx index e1261be05be0..9df1ccc04e44 100644 --- a/sc/source/filter/inc/xlroot.hxx +++ b/sc/source/filter/inc/xlroot.hxx @@ -33,6 +33,7 @@ #include <sot/storage.hxx> #include "xlconst.hxx" #include "xltools.hxx" +#include <boost/shared_ptr.hpp> namespace comphelper { class IDocPasswordVerifier; } @@ -76,14 +77,14 @@ struct XclRootData : public XclDebugObjCounter #endif { - typedef ScfRef< ScEditEngineDefaulter > ScEEDefaulterRef; - typedef ScfRef< ScHeaderEditEngine > ScHeaderEERef; - typedef ScfRef< EditEngine > EditEngineRef; - typedef ScfRef< XclFontPropSetHelper > XclFontPropSetHlpRef; - typedef ScfRef< XclChPropSetHelper > XclChPropSetHlpRef; - typedef ScfRef< ScExtDocOptions > ScExtDocOptRef; - typedef ScfRef< XclTracer > XclTracerRef; - typedef ScfRef< RootData > RootDataRef; + typedef boost::shared_ptr< ScEditEngineDefaulter > ScEEDefaulterRef; + typedef boost::shared_ptr< ScHeaderEditEngine > ScHeaderEERef; + typedef boost::shared_ptr< EditEngine > EditEngineRef; + typedef boost::shared_ptr< XclFontPropSetHelper > XclFontPropSetHlpRef; + typedef boost::shared_ptr< XclChPropSetHelper > XclChPropSetHlpRef; + typedef boost::shared_ptr< ScExtDocOptions > ScExtDocOptRef; + typedef boost::shared_ptr< XclTracer > XclTracerRef; + typedef boost::shared_ptr< RootData > RootDataRef; XclBiff meBiff; /// Current BIFF version. XclOutput meOutput; /// Current Output format. diff --git a/sc/source/filter/inc/xltools.hxx b/sc/source/filter/inc/xltools.hxx index 7ae02d758151..b34cd4c3b8cf 100644 --- a/sc/source/filter/inc/xltools.hxx +++ b/sc/source/filter/inc/xltools.hxx @@ -31,6 +31,7 @@ #include "address.hxx" #include "ftools.hxx" +#include <boost/noncopyable.hpp> class SfxObjectShell; @@ -89,7 +90,7 @@ class SvStream; class ScDocument; /** This class contains static helper methods for the Excel import and export filters. */ -class XclTools : ScfNoInstance +class XclTools : boost::noncopyable { public: // GUID's ----------------------------------------------------------------- @@ -250,6 +251,11 @@ private: static const String maCFStyleNamePrefix2; /// Prefix for cond. formatting style names from OOX filter. static const ::rtl::OUString maSbMacroPrefix; /// Prefix for StarBasic macros. static const ::rtl::OUString maSbMacroSuffix; /// Suffix for StarBasic macros. + + /** We don't want anybody to instantiate this class, since it is just a + collection of static items. To enforce this, the default constructor + is made private */ + XclTools(); }; // read/write colors ---------------------------------------------------------- diff --git a/sc/source/filter/inc/xlview.hxx b/sc/source/filter/inc/xlview.hxx index 0b2f91ad6e21..be84506a6fe8 100644 --- a/sc/source/filter/inc/xlview.hxx +++ b/sc/source/filter/inc/xlview.hxx @@ -33,6 +33,7 @@ #include <tools/color.hxx> #include "ftools.hxx" #include "xladdress.hxx" +#include <boost/shared_ptr.hpp> // Constants and enumerations ================================================= @@ -122,7 +123,7 @@ struct XclSelectionData inline explicit XclSelectionData() : mnCursorIdx( 0 ) {} }; -typedef ScfRef< XclSelectionData > XclSelectionDataRef; +typedef boost::shared_ptr< XclSelectionData > XclSelectionDataRef; // ---------------------------------------------------------------------------- diff --git a/sc/source/filter/lotus/lotform.cxx b/sc/source/filter/lotus/lotform.cxx index c307af332680..7a050d22f69c 100644 --- a/sc/source/filter/lotus/lotform.cxx +++ b/sc/source/filter/lotus/lotform.cxx @@ -166,7 +166,6 @@ void LotusToSc::DoFunc( DefTokenId eOc, BYTE nAnz, const sal_Char* pExtString ) if( nAnz > 0 ) { - INT16 nNull = -1; // gibt einen auszulassenden Parameter an // ACHTUNG: 0 ist der letzte Parameter, nAnz-1 der erste INT16 nLast = nAnz - 1; @@ -184,6 +183,7 @@ void LotusToSc::DoFunc( DefTokenId eOc, BYTE nAnz, const sal_Char* pExtString ) // [Parameter{;Parameter}] aPool << eParam[ nLast ]; + INT16 nNull = -1; // gibt einen auszulassenden Parameter an for( nLauf = nLast - 1 ; nLauf >= 0 ; nLauf-- ) { if( nLauf != nNull ) diff --git a/sc/source/filter/lotus/makefile.mk b/sc/source/filter/lotus/makefile.mk index e4d18f8f9a7d..96e0133af309 100644 --- a/sc/source/filter/lotus/makefile.mk +++ b/sc/source/filter/lotus/makefile.mk @@ -44,22 +44,22 @@ VISIBILITY_HIDDEN=TRUE # --- Files -------------------------------------------------------- -SLOFILES = \ +SLOFILES = \ + $(EXCEPTIONSFILES) \ + $(SLO)$/optab.obj + +EXCEPTIONSFILES = \ + $(SLO)$/expop.obj \ + $(SLO)$/export.obj \ $(SLO)$/filter.obj \ - $(SLO)$/lotus.obj \ - $(SLO)$/lotimpop.obj \ - $(SLO)$/lotread.obj \ + $(SLO)$/lotattr.obj \ $(SLO)$/lotform.obj \ + $(SLO)$/lotimpop.obj \ + $(SLO)$/lotread.obj \ + $(SLO)$/lotus.obj \ $(SLO)$/memory.obj \ $(SLO)$/op.obj \ - $(SLO)$/optab.obj \ - $(SLO)$/tool.obj \ - $(SLO)$/expop.obj \ - $(SLO)$/export.obj \ - $(SLO)$/lotattr.obj - -EXCEPTIONSFILES = \ - $(SLO)$/op.obj + $(SLO)$/tool.obj # --- Tagets ------------------------------------------------------- diff --git a/sc/source/filter/lotus/op.cxx b/sc/source/filter/lotus/op.cxx index 5d38852c2170..e92e52bfb5e9 100644 --- a/sc/source/filter/lotus/op.cxx +++ b/sc/source/filter/lotus/op.cxx @@ -256,12 +256,10 @@ void OP_SymphNamedRange( SvStream& r, UINT16 /*n*/ ) // POST: waren Koordinaten ungueltig, wird nicht gespeichert UINT16 nColSt, nRowSt, nColEnd, nRowEnd; BYTE nType; - sal_Char* pName; sal_Char cPuffer[ 32 ]; r.Read( cPuffer, 16 ); cPuffer[ 16 ] = 0; - pName = cPuffer; r >> nColSt >> nRowSt >> nColEnd >> nRowEnd >> nType; diff --git a/sc/source/filter/qpro/makefile.mk b/sc/source/filter/qpro/makefile.mk index 7406f05e3308..f5e66ea0e514 100644 --- a/sc/source/filter/qpro/makefile.mk +++ b/sc/source/filter/qpro/makefile.mk @@ -43,11 +43,14 @@ AUTOSEG=true # --- Files -------------------------------------------------------- -SLOFILES = \ - $(SLO)$/qpro.obj \ +SLOFILES = \ + $(EXCEPTIONSFILES) + +EXCEPTIONSFILES = \ + $(SLO)$/biff.obj \ + $(SLO)$/qpro.obj \ $(SLO)$/qproform.obj \ - $(SLO)$/qprostyle.obj \ - $(SLO)$/biff.obj + $(SLO)$/qprostyle.obj # --- Tagets ------------------------------------------------------- diff --git a/sc/source/filter/qpro/qproform.cxx b/sc/source/filter/qpro/qproform.cxx index b579dade9331..0e39d2c7a919 100644 --- a/sc/source/filter/qpro/qproform.cxx +++ b/sc/source/filter/qpro/qproform.cxx @@ -152,7 +152,6 @@ void QProToSc::DoFunc( DefTokenId eOc, sal_uInt16 nArgs, const sal_Char* pExtStr if( nArgs> 0 ) { - INT16 nNull = -1; INT16 nLast = nArgs- 1; if( eOc == ocZGZ ) @@ -161,6 +160,7 @@ void QProToSc::DoFunc( DefTokenId eOc, sal_uInt16 nArgs, const sal_Char* pExtStr aPool << eParam[ 3 ] << ocSep << eParam[ 2 ] << ocSep << eParam[ 1 ] << ocSep << eParam[ 0 ]; else { + INT16 nNull = -1; aPool << eParam[ nLast ]; for( nCount = nLast - 1 ; nCount >= 0 ; nCount-- ) { diff --git a/sc/source/filter/rtf/eeimpars.cxx b/sc/source/filter/rtf/eeimpars.cxx index 126ce0ef6865..71e67bde85ca 100644 --- a/sc/source/filter/rtf/eeimpars.cxx +++ b/sc/source/filter/rtf/eeimpars.cxx @@ -131,7 +131,7 @@ ULONG ScEEImport::Read( SvStream& rStream, const String& rBaseURL ) void ScEEImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor, SvNumberFormatter* pFormatter, bool bConvertDate ) { ScProgress* pProgress = new ScProgress( mpDoc->GetDocumentShell(), - ScGlobal::GetRscString( STR_LOAD_DOC ), mpParser->Count() ); + ScGlobal::GetRscString( STR_LOAD_DOC ), mpParser->ListSize() ); ULONG nProgress = 0; SCCOL nStartCol, nEndCol; @@ -160,8 +160,9 @@ void ScEEImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor, SvNu } ScDocumentPool* pDocPool = mpDoc->GetPool(); ScRangeName* pRangeNames = mpDoc->GetRangeName(); - for ( pE = mpParser->First(); pE; pE = mpParser->Next() ) + for ( size_t i = 0, nListSize = mpParser->ListSize(); i < nListSize; ++i ) { + pE = mpParser->ListEntry( i ); SCROW nRow = nStartRow + pE->nRow; if ( nRow != nLastMergedRow ) nMergeColAdd = 0; @@ -279,22 +280,22 @@ void ScEEImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor, SvNu BYTE nScriptType = mpDoc->GetStringScriptType( aStr ); const BYTE nScripts[3] = { SCRIPTTYPE_LATIN, SCRIPTTYPE_ASIAN, SCRIPTTYPE_COMPLEX }; - for ( BYTE i=0; i<3; ++i ) + for ( BYTE j=0; j<3; ++j ) { - if ( nScriptType & nScripts[i] ) + if ( nScriptType & nScripts[j] ) { if ( pFont ) rSet.Put( *pFont, ScGlobal::GetScriptedWhichID( - nScripts[i], ATTR_FONT )); + nScripts[j], ATTR_FONT )); if ( pHeight ) rSet.Put( *pHeight, ScGlobal::GetScriptedWhichID( - nScripts[i], ATTR_FONT_HEIGHT )); + nScripts[j], ATTR_FONT_HEIGHT )); if ( pWeight ) rSet.Put( *pWeight, ScGlobal::GetScriptedWhichID( - nScripts[i], ATTR_FONT_WEIGHT )); + nScripts[j], ATTR_FONT_WEIGHT )); if ( pPosture ) rSet.Put( *pPosture, ScGlobal::GetScriptedWhichID( - nScripts[i], ATTR_FONT_POSTURE )); + nScripts[j], ATTR_FONT_POSTURE )); } } } @@ -399,7 +400,7 @@ void ScEEImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor, SvNu mpDoc, mpEngine->GetEditTextObjectPool() ) ); delete pObject; } - if ( pE->pImageList ) + if ( pE->maImageList.size() ) bHasGraphics |= GraphicSize( nCol, nRow, nTab, pE ); if ( pE->pName ) { // Anchor Name => RangeName @@ -451,10 +452,12 @@ void ScEEImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor, SvNu } } if ( bHasGraphics ) - { // Grafiken einfuegen - for ( pE = mpParser->First(); pE; pE = mpParser->Next() ) + { + // Grafiken einfuegen + for ( size_t i = 0, nListSize = mpParser->ListSize(); i < nListSize; ++i ) { - if ( pE->pImageList ) + pE = mpParser->ListEntry( i ); + if ( !pE->maImageList.empty() ) { SCCOL nCol = pE->nCol; SCROW nRow = pE->nRow; @@ -468,19 +471,18 @@ void ScEEImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor, SvNu } -BOOL ScEEImport::GraphicSize( SCCOL nCol, SCROW nRow, SCTAB /*nTab*/, - ScEEParseEntry* pE ) +BOOL ScEEImport::GraphicSize( SCCOL nCol, SCROW nRow, SCTAB /*nTab*/, ScEEParseEntry* pE ) { - ScHTMLImageList* pIL = pE->pImageList; - if ( !pIL || !pIL->Count() ) + if ( !pE->maImageList.size() ) return FALSE; BOOL bHasGraphics = FALSE; OutputDevice* pDefaultDev = Application::GetDefaultDevice(); long nWidth, nHeight; nWidth = nHeight = 0; sal_Char nDir = nHorizontal; - for ( ScHTMLImage* pI = pIL->First(); pI; pI = pIL->Next() ) + for ( sal_uInt32 i = 0; i < pE->maImageList.size() ; ++i ) { + ScHTMLImage* pI = &pE->maImageList[ i ]; if ( pI->pGraphic ) bHasGraphics = TRUE; Size aSizePix = pI->aSize; @@ -536,8 +538,7 @@ BOOL ScEEImport::GraphicSize( SCCOL nCol, SCROW nRow, SCTAB /*nTab*/, void ScEEImport::InsertGraphic( SCCOL nCol, SCROW nRow, SCTAB nTab, ScEEParseEntry* pE ) { - ScHTMLImageList* pIL = pE->pImageList; - if ( !pIL || !pIL->Count() ) + if ( !pE->maImageList.size() ) return ; ScDrawLayer* pModel = mpDoc->GetDrawLayer(); if (!pModel) @@ -556,8 +557,9 @@ void ScEEImport::InsertGraphic( SCCOL nCol, SCROW nRow, SCTAB nTab, Point aSpace; Size aLogicSize; sal_Char nDir = nHorizontal; - for ( ScHTMLImage* pI = pIL->First(); pI; pI = pIL->Next() ) + for ( sal_uInt32 i = 0; i < pE->maImageList.size(); ++i ) { + ScHTMLImage* pI = &pE->maImageList[ i ]; if ( nDir & nHorizontal ) { // horizontal aInsertPos.X() += aLogicSize.Width(); @@ -604,7 +606,6 @@ ScEEParser::ScEEParser( EditEngine* pEditP ) : pEdit( pEditP ), pPool( EditEngine::CreatePool() ), pDocPool( new ScDocumentPool ), - pList( new ScEEParseList ), pColWidths( new Table ), nLastToken(0), nColCnt(0), @@ -623,9 +624,7 @@ ScEEParser::~ScEEParser() { delete pActEntry; delete pColWidths; - for ( ScEEParseEntry* pE = pList->First(); pE; pE = pList->Next() ) - delete pE; - delete pList; + if ( !maList.empty() ) maList.clear(); // Pool erst loeschen nachdem die Listen geloescht wurden pPool->SetSecondaryPool( NULL ); diff --git a/sc/source/filter/rtf/expbase.cxx b/sc/source/filter/rtf/expbase.cxx index 4c0aa3a1619c..6ae7a310a69a 100644 --- a/sc/source/filter/rtf/expbase.cxx +++ b/sc/source/filter/rtf/expbase.cxx @@ -40,9 +40,9 @@ //------------------------------------------------------------------ #if defined(UNX) -const sal_Char __FAR_DATA ScExportBase::sNewLine = '\012'; +const sal_Char ScExportBase::sNewLine = '\012'; #else -const sal_Char __FAR_DATA ScExportBase::sNewLine[] = "\015\012"; +const sal_Char ScExportBase::sNewLine[] = "\015\012"; #endif diff --git a/sc/source/filter/rtf/makefile.mk b/sc/source/filter/rtf/makefile.mk index 651309fb454d..3aa6dbe8ad8d 100644 --- a/sc/source/filter/rtf/makefile.mk +++ b/sc/source/filter/rtf/makefile.mk @@ -44,8 +44,11 @@ VISIBILITY_HIDDEN=TRUE # --- Files -------------------------------------------------------- -SLOFILES = \ - $(SLO)$/eeimpars.obj \ +SLOFILES = \ + $(EXCEPTIONSFILES) + +EXCEPTIONSFILES = \ + $(SLO)$/eeimpars.obj \ $(SLO)$/expbase.obj \ $(SLO)$/rtfexp.obj \ $(SLO)$/rtfimp.obj \ diff --git a/sc/source/filter/rtf/rtfparse.cxx b/sc/source/filter/rtf/rtfparse.cxx index b9db5db760f8..d3db0458bc6a 100644 --- a/sc/source/filter/rtf/rtfparse.cxx +++ b/sc/source/filter/rtf/rtfparse.cxx @@ -79,8 +79,7 @@ ScRTFParser::~ScRTFParser() { delete pInsDefault; delete pColTwips; - for ( ScRTFCellDefault* pD = pDefaultList->First(); pD; pD = pDefaultList->Next() ) - delete pD; + pDefaultList->clear(); delete pDefaultList; } @@ -92,18 +91,23 @@ ULONG ScRTFParser::Read( SvStream& rStream, const String& rBaseURL ) ULONG nErr = pEdit->Read( rStream, rBaseURL, EE_FORMAT_RTF ); if ( nLastToken == RTF_PAR ) { - ScEEParseEntry* pE = pList->Last(); - if ( pE - // komplett leer - && (( pE->aSel.nStartPara == pE->aSel.nEndPara - && pE->aSel.nStartPos == pE->aSel.nEndPos) - // leerer Paragraph - || ( pE->aSel.nStartPara + 1 == pE->aSel.nEndPara - && pE->aSel.nStartPos == pEdit->GetTextLen( pE->aSel.nStartPara ) - && pE->aSel.nEndPos == 0 )) ) - { // den letzten leeren Absatz nicht uebernehmen - pList->Remove(); - delete pE; + if ( !maList.empty() ) + { + ScEEParseEntry* pE = maList.back(); + if ( // komplett leer + ( ( pE->aSel.nStartPara == pE->aSel.nEndPara + && pE->aSel.nStartPos == pE->aSel.nEndPos + ) + || // leerer Paragraph + ( pE->aSel.nStartPara + 1 == pE->aSel.nEndPara + && pE->aSel.nStartPos == pEdit->GetTextLen( pE->aSel.nStartPara ) + && pE->aSel.nEndPos == 0 + ) + ) + ) + { // den letzten leeren Absatz nicht uebernehmen + maList.pop_back(); + } } } ColAdjust(); @@ -158,9 +162,9 @@ void ScRTFParser::ColAdjust() { SCCOL nCol = 0; ScEEParseEntry* pE; - pE = pList->Seek( nStartAdjust ); - while ( pE ) + for ( size_t i = nStartAdjust, nListSize = maList.size(); i < nListSize; ++ i ) { + pE = maList[ i ]; if ( pE->nCol == 0 ) nCol = 0; pE->nCol = nCol; @@ -175,7 +179,6 @@ void ScRTFParser::ColAdjust() } if ( nCol > nColMax ) nColMax = nCol; - pE = pList->Next(); } nStartAdjust = (ULONG)~0; pColTwips->Remove( (USHORT)0, pColTwips->Count() ); @@ -236,8 +239,10 @@ void ScRTFParser::NewCellRow( ImportInfo* /*pInfo*/ ) ScRTFCellDefault* pD; bNewDef = FALSE; // rechts nicht buendig? => neue Tabelle - if ( nLastWidth - && ((pD = pDefaultList->Last()) != 0) && pD->nTwips != nLastWidth ) + if ( nLastWidth + && ( (pD = &(pDefaultList->back())) != 0 ) + && pD->nTwips != nLastWidth + ) { SCCOL n1, n2; if ( !( SeekTwips( nLastWidth, &n1 ) @@ -245,15 +250,16 @@ void ScRTFParser::NewCellRow( ImportInfo* /*pInfo*/ ) ColAdjust(); } // TwipCols aufbauen, erst nach nLastWidth Vergleich! - for ( pD = pDefaultList->First(); pD; pD = pDefaultList->Next() ) + for ( size_t i = 0, nListSize = pDefaultList->size(); i < nListSize; ++i ) { + pD = &( pDefaultList->at( i ) ); SCCOL n; if ( !SeekTwips( pD->nTwips, &n ) ) pColTwips->Insert( pD->nTwips ); } } pDefMerge = NULL; - pActDefault = pDefaultList->First(); + pActDefault = &(pDefaultList->front()); DBG_ASSERT( pActDefault, "NewCellRow: pActDefault==0" ); } @@ -293,12 +299,10 @@ void ScRTFParser::ProcToken( ImportInfo* pInfo ) { case RTF_TROWD: // denotes table row defauls, before RTF_CELLX { - if ( (pD = pDefaultList->Last()) != 0 ) + if ( (pD = &(pDefaultList->back())) != 0 ) nLastWidth = pD->nTwips; nColCnt = 0; - for ( pD = pDefaultList->First(); pD; pD = pDefaultList->Next() ) - delete pD; - pDefaultList->Clear(); + pDefaultList->clear(); pDefMerge = NULL; nLastToken = pInfo->nToken; } @@ -311,8 +315,10 @@ void ScRTFParser::ProcToken( ImportInfo* pInfo ) break; case RTF_CLMRG: // A cell to be merged with the preceding cell { - if ( !pDefMerge ) - pDefMerge = pDefaultList->Last(); + if ( !pDefMerge + && !(pDefaultList->empty()) + ) + pDefMerge = &( pDefaultList->back() ); DBG_ASSERT( pDefMerge, "RTF_CLMRG: pDefMerge==0" ); if ( pDefMerge ) // sonst rottes RTF pDefMerge->nColOverlap++; // mehrere nacheinander moeglich @@ -325,7 +331,7 @@ void ScRTFParser::ProcToken( ImportInfo* pInfo ) bNewDef = TRUE; pInsDefault->nCol = nColCnt; pInsDefault->nTwips = pInfo->nTokenValue; // rechter Zellenrand - pDefaultList->Insert( pInsDefault, LIST_APPEND ); + pDefaultList->push_back( pInsDefault ); // neuer freifliegender pInsDefault pInsDefault = new ScRTFCellDefault( pPool ); if ( ++nColCnt > nColMax ) @@ -362,19 +368,25 @@ void ScRTFParser::ProcToken( ImportInfo* pInfo ) EntryEnd( pActEntry, pInfo->aSelection ); if ( nStartAdjust == (ULONG)~0 ) - nStartAdjust = pList->Count(); - pList->Insert( pActEntry, LIST_APPEND ); + nStartAdjust = maList.size(); + maList.push_back( pActEntry ); NewActEntry( pActEntry ); // neuer freifliegender pActEntry } else { // aktuelle Twips der MergeCell zuweisen - if ( (pE = pList->Last()) != 0 ) + if ( !maList.empty() ) + { + pE = maList.back(); pE->nTwips = pActDefault->nTwips; + } // Selection des freifliegenden pActEntry anpassen // Paragraph -1 wg. Textaufbruch in EditEngine waehrend Parse pActEntry->aSel.nStartPara = pInfo->aSelection.nEndPara - 1; } - pActDefault = pDefaultList->Next(); + if ( pDefaultList->empty() ) + pActDefault = NULL; + else + pActDefault = &( pDefaultList->back() ); nLastToken = pInfo->nToken; } break; @@ -392,7 +404,7 @@ void ScRTFParser::ProcToken( ImportInfo* pInfo ) pActEntry->nCol = 0; pActEntry->nRow = nRowCnt; EntryEnd( pActEntry, pInfo->aSelection ); - pList->Insert( pActEntry, LIST_APPEND ); + maList.push_back( pActEntry ); NewActEntry( pActEntry ); // new pActEntry NextRow(); } diff --git a/sc/source/filter/starcalc/makefile.mk b/sc/source/filter/starcalc/makefile.mk index 157059d433ec..a9c06eb14a4d 100644 --- a/sc/source/filter/starcalc/makefile.mk +++ b/sc/source/filter/starcalc/makefile.mk @@ -44,8 +44,11 @@ VISIBILITY_HIDDEN=TRUE # --- Files -------------------------------------------------------- -SLOFILES = \ - $(SLO)$/scflt.obj \ +SLOFILES = \ + $(EXCEPTIONSFILES) + +EXCEPTIONSFILES = \ + $(SLO)$/scflt.obj \ $(SLO)$/scfobj.obj # --- Tagets ------------------------------------------------------- diff --git a/sc/source/filter/xcl97/XclExpChangeTrack.cxx b/sc/source/filter/xcl97/XclExpChangeTrack.cxx index daab6245d730..5d460bf44d77 100644 --- a/sc/source/filter/xcl97/XclExpChangeTrack.cxx +++ b/sc/source/filter/xcl97/XclExpChangeTrack.cxx @@ -741,7 +741,7 @@ void XclExpChTrData::Clear() void XclExpChTrData::WriteFormula( XclExpStream& rStrm, const XclExpChTrTabIdBuffer& rTabIdBuffer ) { - DBG_ASSERT( mxTokArr.is() && !mxTokArr->Empty(), "XclExpChTrData::Write - no formula" ); + DBG_ASSERT( mxTokArr && !mxTokArr->Empty(), "XclExpChTrData::Write - no formula" ); rStrm << *mxTokArr; for( XclExpRefLog::const_iterator aIt = maRefLog.begin(), aEnd = maRefLog.end(); aIt != aEnd; ++aIt ) @@ -949,24 +949,26 @@ static const char* lcl_GetType( XclExpChTrData* pData ) { switch( pData->nType ) { - case EXC_CHTR_TYPE_RK: - case EXC_CHTR_TYPE_DOUBLE: - return "n"; - break; - case EXC_CHTR_TYPE_FORMULA: - { - ScFormulaCell* pFormulaCell = const_cast< ScFormulaCell* >( pData->mpFormulaCell ); - const char* sType; - OUString sValue; - XclXmlUtils::GetFormulaTypeAndValue( *pFormulaCell, sType, sValue ); - return sType; - } - break; - case EXC_CHTR_TYPE_STRING: - return "inlineStr"; - default: - return "*unknown*"; + case EXC_CHTR_TYPE_RK: + case EXC_CHTR_TYPE_DOUBLE: + return "n"; + break; + case EXC_CHTR_TYPE_FORMULA: + { + ScFormulaCell* pFormulaCell = const_cast< ScFormulaCell* >( pData->mpFormulaCell ); + const char* sType; + OUString sValue; + XclXmlUtils::GetFormulaTypeAndValue( *pFormulaCell, sType, sValue ); + return sType; + } + break; + case EXC_CHTR_TYPE_STRING: + return "inlineStr"; + break; + default: + break; } + return "*unknown*"; } static void lcl_WriteCell( XclExpXmlStream& rStrm, sal_Int32 nElement, const ScAddress& rPosition, XclExpChTrData* pData ) @@ -1000,7 +1002,7 @@ static void lcl_WriteCell( XclExpXmlStream& rStrm, sal_Int32 nElement, const ScA break; case EXC_CHTR_TYPE_STRING: pStream->startElement( XML_is, FSEND ); - if( pData->mpFormattedString.is() ) + if( pData->mpFormattedString ) pData->mpFormattedString->WriteXml( rStrm ); else pData->pString->WriteXml( rStrm ); @@ -1661,8 +1663,8 @@ void XclExpChangeTrack::Write() static void lcl_WriteUserNamesXml( XclExpXmlStream& rWorkbookStrm ) { sax_fastparser::FSHelperPtr pUserNames = rWorkbookStrm.CreateOutputStream( - OUString::createFromAscii( "xl/revisions/userNames.xml" ), - OUString::createFromAscii( "revisions/userNames.xml" ), + OUString(RTL_CONSTASCII_USTRINGPARAM( "xl/revisions/userNames.xml" )), + OUString(RTL_CONSTASCII_USTRINGPARAM( "revisions/userNames.xml" )), rWorkbookStrm.GetCurrentStream()->getOutputStream(), "application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/usernames" ); @@ -1685,8 +1687,8 @@ void XclExpChangeTrack::WriteXml( XclExpXmlStream& rWorkbookStrm ) lcl_WriteUserNamesXml( rWorkbookStrm ); sax_fastparser::FSHelperPtr pRevisionHeaders = rWorkbookStrm.CreateOutputStream( - OUString::createFromAscii( "xl/revisions/revisionHeaders.xml" ), - OUString::createFromAscii( "revisions/revisionHeaders.xml" ), + OUString(RTL_CONSTASCII_USTRINGPARAM( "xl/revisions/revisionHeaders.xml" )), + OUString(RTL_CONSTASCII_USTRINGPARAM( "revisions/revisionHeaders.xml" )), rWorkbookStrm.GetCurrentStream()->getOutputStream(), "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/revisionHeaders" ); diff --git a/sc/source/filter/xcl97/makefile.mk b/sc/source/filter/xcl97/makefile.mk index 04a028e04af3..0ce4670875b2 100644 --- a/sc/source/filter/xcl97/makefile.mk +++ b/sc/source/filter/xcl97/makefile.mk @@ -44,14 +44,13 @@ VISIBILITY_HIDDEN=TRUE # --- Files -------------------------------------------------------- -SLOFILES = \ - $(SLO)$/xcl97esc.obj \ - $(SLO)$/xcl97rec.obj \ - $(SLO)$/XclImpChangeTrack.obj \ - $(SLO)$/XclExpChangeTrack.obj +SLOFILES = \ + $(EXCEPTIONSFILES) -EXCEPTIONSFILES = \ - $(SLO)$/xcl97esc.obj \ +EXCEPTIONSFILES = \ + $(SLO)$/XclImpChangeTrack.obj \ + $(SLO)$/XclExpChangeTrack.obj \ + $(SLO)$/xcl97esc.obj \ $(SLO)$/xcl97rec.obj # --- Targets ------------------------------------------------------- diff --git a/sc/source/filter/xcl97/xcl97rec.cxx b/sc/source/filter/xcl97/xcl97rec.cxx index 14858d41362c..eb82c188592c 100644 --- a/sc/source/filter/xcl97/xcl97rec.cxx +++ b/sc/source/filter/xcl97/xcl97rec.cxx @@ -103,9 +103,9 @@ sal_Int32 XclExpObjList::mnVmlCount; XclExpObjList::XclExpObjList( const XclExpRoot& rRoot, XclEscherEx& rEscherEx ) : XclExpRoot( rRoot ), + mnScTab( rRoot.GetCurrScTab() ), mrEscherEx( rEscherEx ), - pSolverContainer( 0 ), - mnScTab( rRoot.GetCurrScTab() ) + pSolverContainer( 0 ) { pMsodrawingPerSheet = new XclExpMsoDrawing( rEscherEx ); // open the DGCONTAINER and the patriarch group shape @@ -972,49 +972,13 @@ void XclObjAny::WriteFromTo( XclExpXmlStream& rStrm, const XclObjAny& rObj ) WriteFromTo( rStrm, rObj.GetShape(), rObj.GetTab() ); } -static void -WritePicPr( sax_fastparser::FSHelperPtr pDrawing, sal_Int32 nId, Reference< XPropertySet > xPropSet ) -{ - pDrawing->startElement( FSNS( XML_xdr, XML_nvPicPr ), - FSEND ); - OUString sName, sDescr; - xPropSet->getPropertyValue( XclXmlUtils::ToOUString( "Name" ) ) >>= sName; - xPropSet->getPropertyValue( XclXmlUtils::ToOUString( "Description" ) ) >>= sDescr; - pDrawing->singleElement( FSNS( XML_xdr, XML_cNvPr ), - XML_id, OString::valueOf( nId ).getStr(), - XML_name, XclXmlUtils::ToOString( sName ).getStr(), - XML_descr, XclXmlUtils::ToOString( sDescr ).getStr(), - FSEND ); - // OOXTODO: //xdr:cNvPr children: XML_extLst, XML_hlinkClick, XML_hlinkHover - pDrawing->startElement( FSNS( XML_xdr, XML_cNvPicPr ), - // OOXTODO: FSNS( XML_xdr, XML_preferRelativeSize ) - FSEND ); - // OOXTODO: XML_extLst - pDrawing->singleElement( FSNS( XML_a, XML_picLocks ), - // OOXTODO: XML_noGrp, - // OOXTODO: XML_noSelect, - // OOXTODO: XML_noRot, - // OOXTODO: XML_noChangeAspect, - // OOXTODO: XML_noMove, - // OOXTODO: XML_noResize, - // OOXTODO: XML_noEditPoints, - // OOXTODO: XML_noAdjustHandles, - // OOXTODO: XML_noChangeArrowheads, - // OOXTODO: XML_noChangeShapeType, - // OOXTODO: XML_noCrop, - FSEND ); - pDrawing->endElement( FSNS( XML_xdr, XML_cNvPicPr ) ); - pDrawing->endElement( FSNS( XML_xdr, XML_nvPicPr ) ); -} - - static const char* GetEditAs( XclObjAny& rObj ) { if( const SdrObject* pShape = EscherEx::GetSdrObject( rObj.GetShape() ) ) { // OOXTODO: returning "twoCell" - switch( ScDrawLayer::GetAnchor( pShape ) ) + switch( ScDrawLayer::GetAnchorType( *pShape ) ) { case SCA_CELL: return "oneCell"; default: break; @@ -1252,9 +1216,9 @@ ExcEScenario::ExcEScenario( const XclExpRoot& rRoot, SCTAB nTab ) String sText; double fVal; - for( UINT32 nRange = 0; (nRange < pRList->Count()) && bContLoop; nRange++ ) + for( size_t nRange = 0; (nRange < pRList->size()) && bContLoop; nRange++ ) { - const ScRange* pRange = pRList->GetObject( nRange ); + const ScRange* pRange = (*pRList)[nRange]; for( nRow = pRange->aStart.Row(); (nRow <= pRange->aEnd.Row()) && bContLoop; nRow++ ) for( nCol = pRange->aStart.Col(); (nCol <= pRange->aEnd.Col()) && bContLoop; nCol++ ) { diff --git a/sc/source/filter/xml/XMLCalculationSettingsContext.cxx b/sc/source/filter/xml/XMLCalculationSettingsContext.cxx index 98d7a41da7c7..cd4875a9079a 100644 --- a/sc/source/filter/xml/XMLCalculationSettingsContext.cxx +++ b/sc/source/filter/xml/XMLCalculationSettingsContext.cxx @@ -157,11 +157,10 @@ void ScXMLCalculationSettingsContext::EndElement() xPropertySet->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_NULLDATE)), uno::makeAny(aNullDate) ); if (GetScImport().GetDocument()) { - GetScImport().LockSolarMutex(); + ScXMLImport::MutexGuard aGuard(GetScImport()); ScDocOptions aDocOptions (GetScImport().GetDocument()->GetDocOptions()); aDocOptions.SetYear2000(nYear2000); GetScImport().GetDocument()->SetDocOptions(aDocOptions); - GetScImport().UnlockSolarMutex(); } } } diff --git a/sc/source/filter/xml/XMLConsolidationContext.cxx b/sc/source/filter/xml/XMLConsolidationContext.cxx index f075dfc68129..4be134c74f7d 100644 --- a/sc/source/filter/xml/XMLConsolidationContext.cxx +++ b/sc/source/filter/xml/XMLConsolidationContext.cxx @@ -57,7 +57,7 @@ ScXMLConsolidationContext::ScXMLConsolidationContext( bLinkToSource( sal_False ), bTargetAddr(sal_False) { - rImport.LockSolarMutex(); + ScXMLImport::MutexGuard aGuard(GetScImport()); if( !xAttrList.is() ) return; sal_Int16 nAttrCount = xAttrList->getLength(); diff --git a/sc/source/filter/xml/XMLConverter.cxx b/sc/source/filter/xml/XMLConverter.cxx index ee6a345fdc11..f18c26d3b188 100644 --- a/sc/source/filter/xml/XMLConverter.cxx +++ b/sc/source/filter/xml/XMLConverter.cxx @@ -585,7 +585,7 @@ bool lclSkipEmptyParentheses( const sal_Unicode*& rpcString, const sal_Unicode* // ---------------------------------------------------------------------------- -/*static*/ void ScXMLConditionHelper::parseCondition( +void ScXMLConditionHelper::parseCondition( ScXMLConditionParseResult& rParseResult, const OUString& rAttribute, sal_Int32 nStartIndex ) { rParseResult.meToken = XML_COND_INVALID; diff --git a/sc/source/filter/xml/XMLDDELinksContext.cxx b/sc/source/filter/xml/XMLDDELinksContext.cxx index 792c19b5e30a..1ebfab3a212c 100644 --- a/sc/source/filter/xml/XMLDDELinksContext.cxx +++ b/sc/source/filter/xml/XMLDDELinksContext.cxx @@ -137,7 +137,7 @@ void ScXMLDDELinkContext::CreateDDELink() String sAppl(sApplication); String sTop(sTopic); String sIt(sItem); - GetScImport().GetDocument()->CreateDdeLink(sAppl, sTop, sIt, nMode); + GetScImport().GetDocument()->CreateDdeLink(sAppl, sTop, sIt, nMode, ScMatrixRef()); sal_uInt16 nPos; if(GetScImport().GetDocument()->FindDdeLink(sAppl, sTop, sIt, nMode, nPos)) nPosition = nPos; diff --git a/sc/source/filter/xml/XMLDetectiveContext.cxx b/sc/source/filter/xml/XMLDetectiveContext.cxx index 131dea72379d..3c52f96b558a 100644 --- a/sc/source/filter/xml/XMLDetectiveContext.cxx +++ b/sc/source/filter/xml/XMLDetectiveContext.cxx @@ -154,9 +154,8 @@ ScXMLDetectiveHighlightedContext::ScXMLDetectiveHighlightedContext( case XML_TOK_DETECTIVE_HIGHLIGHTED_ATTR_CELL_RANGE: { sal_Int32 nOffset(0); - GetScImport().LockSolarMutex(); + ScXMLImport::MutexGuard aGuard(GetScImport()); bValid = ScRangeStringConverter::GetRangeFromString( aDetectiveObj.aSourceRange, sValue, GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset ); - GetScImport().UnlockSolarMutex(); } break; case XML_TOK_DETECTIVE_HIGHLIGHTED_ATTR_DIRECTION: diff --git a/sc/source/filter/xml/XMLExportDDELinks.cxx b/sc/source/filter/xml/XMLExportDDELinks.cxx index f0b80840098c..810edc372ba3 100644 --- a/sc/source/filter/xml/XMLExportDDELinks.cxx +++ b/sc/source/filter/xml/XMLExportDDELinks.cxx @@ -29,8 +29,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sc.hxx" - - // INCLUDE --------------------------------------------------------------- #include "XMLExportDDELinks.hxx" #include <xmloff/xmltoken.hxx> @@ -47,6 +45,7 @@ class ScMatrix; using namespace com::sun::star; using namespace xmloff::token; +using ::rtl::OUStringBuffer; ScXMLExportDDELinks::ScXMLExportDDELinks(ScXMLExport& rTempExport) : rExport(rTempExport) @@ -58,7 +57,7 @@ ScXMLExportDDELinks::~ScXMLExportDDELinks() } sal_Bool ScXMLExportDDELinks::CellsEqual(const sal_Bool bPrevEmpty, const sal_Bool bPrevString, const String& sPrevValue, const double& fPrevValue, - const sal_Bool bEmpty, const sal_Bool bString, const String& sValue, const double& fValue) + const sal_Bool bEmpty, const sal_Bool bString, const String& sValue, const double& fValue) const { if (bEmpty == bPrevEmpty) if (bEmpty) @@ -74,103 +73,78 @@ sal_Bool ScXMLExportDDELinks::CellsEqual(const sal_Bool bPrevEmpty, const sal_Bo return sal_False; } -void ScXMLExportDDELinks::WriteCell(const sal_Bool bEmpty, const sal_Bool bString, const String& sValue, const double& fValue, const sal_Int32 nRepeat) +void ScXMLExportDDELinks::WriteCell(const ScMatrixValue& aVal, sal_Int32 nRepeat) { - rtl::OUStringBuffer sBuffer; + bool bString = ScMatrix::IsNonValueType(aVal.nType); + bool bEmpty = ScMatrix::IsEmptyType(aVal.nType); + if (!bEmpty) { if (bString) { rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_VALUE_TYPE, XML_STRING); - rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_STRING_VALUE, rtl::OUString(sValue)); + rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_STRING_VALUE, aVal.GetString()); } else { + OUStringBuffer aBuf; rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_VALUE_TYPE, XML_FLOAT); - rExport.GetMM100UnitConverter().convertDouble(sBuffer, fValue); - rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_VALUE, sBuffer.makeStringAndClear()); + rExport.GetMM100UnitConverter().convertDouble(aBuf, aVal.fVal); + rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_VALUE, aBuf.makeStringAndClear()); } } + if (nRepeat > 1) { - rExport.GetMM100UnitConverter().convertNumber(sBuffer, nRepeat); - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_NUMBER_COLUMNS_REPEATED, sBuffer.makeStringAndClear()); + OUStringBuffer aBuf; + rExport.GetMM100UnitConverter().convertNumber(aBuf, nRepeat); + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_NUMBER_COLUMNS_REPEATED, aBuf.makeStringAndClear()); } SvXMLElementExport(rExport, XML_NAMESPACE_TABLE, XML_TABLE_CELL, sal_True, sal_True); } void ScXMLExportDDELinks::WriteTable(const sal_Int32 nPos) { - const ScMatrix* pMatrix(NULL); - if (rExport.GetDocument()) - pMatrix = rExport.GetDocument()->GetDdeLinkResultMatrix( static_cast<USHORT>(nPos) ); - if (pMatrix) + ScDocument* pDoc = rExport.GetDocument(); + if (!pDoc) + return; + + const ScMatrix* pMatrix = pDoc->GetDdeLinkResultMatrix(static_cast<USHORT>(nPos)); + if (!pMatrix) + return; + + SCSIZE nCols, nRows; + pMatrix->GetDimensions(nCols, nRows); + + SvXMLElementExport aTableElem(rExport, XML_NAMESPACE_TABLE, XML_TABLE, sal_True, sal_True); + if (nCols > 1) { - SCSIZE nuCol; - SCSIZE nuRow; - pMatrix->GetDimensions( nuCol, nuRow ); - sal_Int32 nRowCount = static_cast<sal_Int32>(nuRow); - sal_Int32 nColCount = static_cast<sal_Int32>(nuCol); - SvXMLElementExport aTableElem(rExport, XML_NAMESPACE_TABLE, XML_TABLE, sal_True, sal_True); - rtl::OUStringBuffer sBuffer; - if (nColCount > 1) - { - rExport.GetMM100UnitConverter().convertNumber(sBuffer, nColCount); - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_NUMBER_COLUMNS_REPEATED, sBuffer.makeStringAndClear()); - } - { - SvXMLElementExport aElemCol(rExport, XML_NAMESPACE_TABLE, XML_TABLE_COLUMN, sal_True, sal_True); - } - sal_Bool bPrevString(sal_True); - sal_Bool bPrevEmpty(sal_True); - double fPrevValue; - String sPrevValue; - sal_Int32 nRepeatColsCount(1); - for(sal_Int32 nRow = 0; nRow < nRowCount; ++nRow) + OUStringBuffer aBuf; + rExport.GetMM100UnitConverter().convertNumber(aBuf, static_cast<sal_Int32>(nCols)); + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_NUMBER_COLUMNS_REPEATED, aBuf.makeStringAndClear()); + } + { + SvXMLElementExport aElemCol(rExport, XML_NAMESPACE_TABLE, XML_TABLE_COLUMN, sal_True, sal_True); + } + + for (SCSIZE nRow = 0; nRow < nRows; ++nRow) + { + sal_Int32 nRepeat = 0; + ScMatrixValue aPrevVal; + SvXMLElementExport aElemRow(rExport, XML_NAMESPACE_TABLE, XML_TABLE_ROW, sal_True, sal_True); + for (SCSIZE nCol = 0; nCol < nCols; ++nCol, ++nRepeat) { - SvXMLElementExport aElemRow(rExport, XML_NAMESPACE_TABLE, XML_TABLE_ROW, sal_True, sal_True); - for(sal_Int32 nColumn = 0; nColumn < nColCount; ++nColumn) + ScMatrixValue aVal = pMatrix->Get(nCol, nRow); + if (nCol > 0 && aVal != aPrevVal) { - ScMatValType nType = SC_MATVAL_VALUE; - const ScMatrixValue* pMatVal = pMatrix->Get( static_cast<SCSIZE>(nColumn), static_cast<SCSIZE>(nRow), nType ); - BOOL bIsString = ScMatrix::IsNonValueType( nType); - - if (nColumn == 0) - { - bPrevEmpty = !pMatVal; - bPrevString = bIsString; - if( bIsString ) - sPrevValue = pMatVal->GetString(); - else - fPrevValue = pMatVal->fVal; - } - else - { - double fValue; - String sValue; - sal_Bool bEmpty(!pMatVal); - sal_Bool bString(bIsString); - if( bIsString ) - sValue = pMatVal->GetString(); - else - fValue = pMatVal->fVal; - - if (CellsEqual(bPrevEmpty, bPrevString, sPrevValue, fPrevValue, - bEmpty, bString, sValue, fValue)) - ++nRepeatColsCount; - else - { - WriteCell(bPrevEmpty, bPrevString, sPrevValue, fPrevValue, nRepeatColsCount); - nRepeatColsCount = 1; - bPrevEmpty = bEmpty; - fPrevValue = fValue; - sPrevValue = sValue; - } - } + // Cell value differs. Flush the cell content. + WriteCell(aPrevVal, nRepeat); + nRepeat = 0; } - WriteCell(bPrevEmpty, bPrevString, sPrevValue, fPrevValue, nRepeatColsCount); - nRepeatColsCount = 1; + aPrevVal = aVal; } + + WriteCell(aPrevVal, nRepeat); } } diff --git a/sc/source/filter/xml/XMLExportDDELinks.hxx b/sc/source/filter/xml/XMLExportDDELinks.hxx index f7fd55574cf9..7edb3e8ed8dc 100644 --- a/sc/source/filter/xml/XMLExportDDELinks.hxx +++ b/sc/source/filter/xml/XMLExportDDELinks.hxx @@ -33,14 +33,15 @@ class String; class ScXMLExport; +class ScMatrixValue; class ScXMLExportDDELinks { ScXMLExport& rExport; sal_Bool CellsEqual(const sal_Bool bPrevEmpty, const sal_Bool bPrevString, const String& sPrevValue, const double& fPrevValue, - const sal_Bool bEmpty, const sal_Bool bString, const String& sValue, const double& fValue); - void WriteCell(const sal_Bool bEmpty, const sal_Bool bString, const String& sValue, const double& fValue, const sal_Int32 nRepeat); + const sal_Bool bEmpty, const sal_Bool bString, const String& sValue, const double& fValue) const; + void WriteCell(const ScMatrixValue& aVal, sal_Int32 nRepeat); void WriteTable(const sal_Int32 nPos); public: ScXMLExportDDELinks(ScXMLExport& rExport); diff --git a/sc/source/filter/xml/XMLExportDataPilot.cxx b/sc/source/filter/xml/XMLExportDataPilot.cxx index 0bfdafc4d566..2fe7957cb1b8 100644 --- a/sc/source/filter/xml/XMLExportDataPilot.cxx +++ b/sc/source/filter/xml/XMLExportDataPilot.cxx @@ -479,7 +479,7 @@ void ScXMLExportDataPilot::WriteMembers(ScDPSaveDimension* pDim) { SvXMLElementExport aElemDPMs(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_MEMBERS, sal_True, sal_True); rExport.CheckAttrList(); - for (ScDPSaveDimension::MemberList::const_iterator i=rMembers.begin(); i != rMembers.end() ; i++) + for (ScDPSaveDimension::MemberList::const_iterator i=rMembers.begin(); i != rMembers.end() ; ++i) { rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_NAME, rtl::OUString((*i)->GetName())); @@ -755,12 +755,12 @@ void ScXMLExportDataPilot::WriteDataPilots(const uno::Reference <sheet::XSpreads ScDPCollection* pDPs = pDoc->GetDPCollection(); if (pDPs) { - sal_Int16 nDPCount = pDPs->GetCount(); + size_t nDPCount = pDPs->GetCount(); if (nDPCount > 0) { SvXMLElementExport aElemDPs(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_TABLES, sal_True, sal_True); rExport.CheckAttrList(); - for (sal_Int16 i = 0; i < nDPCount; ++i) + for (size_t i = 0; i < nDPCount; ++i) { ScDPSaveData* pDPSave = (*pDPs)[i]->GetSaveData(); if (pDPSave) diff --git a/sc/source/filter/xml/XMLExportDatabaseRanges.cxx b/sc/source/filter/xml/XMLExportDatabaseRanges.cxx index 530ea31e47c7..1414193dc947 100644 --- a/sc/source/filter/xml/XMLExportDatabaseRanges.cxx +++ b/sc/source/filter/xml/XMLExportDatabaseRanges.cxx @@ -80,7 +80,6 @@ ScMyEmptyDatabaseRangesContainer ScXMLExportDatabaseRanges::GetEmptyDatabaseRang ScMyEmptyDatabaseRangesContainer aSkipRanges; if (rExport.GetModel().is()) { - sal_Int32 nSkipRangesCount = 0; uno::Reference <beans::XPropertySet> xPropertySet (rExport.GetModel(), uno::UNO_QUERY); if (xPropertySet.is()) { @@ -118,8 +117,6 @@ ScMyEmptyDatabaseRangesContainer ScXMLExportDatabaseRanges::GetEmptyDatabaseRang } } } - if (nSkipRangesCount > 1) - aSkipRanges.Sort(); } } } diff --git a/sc/source/filter/xml/XMLExportIterator.cxx b/sc/source/filter/xml/XMLExportIterator.cxx index 57b2534ed6ad..47ce7964ae77 100644 --- a/sc/source/filter/xml/XMLExportIterator.cxx +++ b/sc/source/filter/xml/XMLExportIterator.cxx @@ -614,6 +614,7 @@ void ScMyDetectiveOpContainer::Sort() ScMyCell::ScMyCell() : aShapeList(), aDetectiveObjVec(), + fValue(0.0), nValidationIndex(-1), pBaseCell(NULL), bIsAutoStyle( sal_False ), diff --git a/sc/source/filter/xml/XMLExportIterator.hxx b/sc/source/filter/xml/XMLExportIterator.hxx index 1334e42c3e5c..faa3e9bf75c2 100644 --- a/sc/source/filter/xml/XMLExportIterator.hxx +++ b/sc/source/filter/xml/XMLExportIterator.hxx @@ -71,6 +71,8 @@ struct ScMyShape { ScAddress aAddress; ScAddress aEndAddress; + sal_Int32 nEndX; + sal_Int32 nEndY; com::sun::star::uno::Reference<com::sun::star::drawing::XShape> xShape; sal_Bool operator<(const ScMyShape& aShape) const; @@ -91,7 +93,7 @@ public: using ScMyIteratorBase::UpdateAddress; void AddNewShape(const ScMyShape& aShape); sal_Bool HasShapes() { return !aShapeList.empty(); } - const ScMyShapeList* GetShapes() { return &aShapeList; } + const ScMyShapeList* GetShapes() const { return &aShapeList; } virtual void SetCellData( ScMyCell& rMyCell ); virtual void Sort(); void SkipTable(SCTAB nSkip); @@ -120,7 +122,7 @@ public: using ScMyIteratorBase::UpdateAddress; void AddNewNote(const ScMyNoteShape& aNote); sal_Bool HasNotes() { return !aNoteShapeList.empty(); } - const ScMyNoteShapeList* GetNotes() { return &aNoteShapeList; } + const ScMyNoteShapeList* GetNotes() const { return &aNoteShapeList; } virtual void SetCellData( ScMyCell& rMyCell ); virtual void Sort(); void SkipTable(SCTAB nSkip); diff --git a/sc/source/filter/xml/XMLExportSharedData.cxx b/sc/source/filter/xml/XMLExportSharedData.cxx index a3e4d3ae80b5..1e7b3e506cc5 100644 --- a/sc/source/filter/xml/XMLExportSharedData.cxx +++ b/sc/source/filter/xml/XMLExportSharedData.cxx @@ -69,7 +69,7 @@ void ScMySharedData::SetLastColumn(const sal_Int32 nTable, const sal_Int32 nCol) if(nCol > nLastColumns[nTable]) nLastColumns[nTable] = nCol; } -sal_Int32 ScMySharedData::GetLastColumn(const sal_Int32 nTable) +sal_Int32 ScMySharedData::GetLastColumn(const sal_Int32 nTable) const { return nLastColumns[nTable]; } @@ -79,7 +79,7 @@ void ScMySharedData::SetLastRow(const sal_Int32 nTable, const sal_Int32 nRow) if(nRow > nLastRows[nTable]) nLastRows[nTable] = nRow; } -sal_Int32 ScMySharedData::GetLastRow(const sal_Int32 nTable) +sal_Int32 ScMySharedData::GetLastRow(const sal_Int32 nTable) const { return nLastRows[nTable]; } diff --git a/sc/source/filter/xml/XMLExportSharedData.hxx b/sc/source/filter/xml/XMLExportSharedData.hxx index 7337cbbc27e7..e12a7111fd9e 100644 --- a/sc/source/filter/xml/XMLExportSharedData.hxx +++ b/sc/source/filter/xml/XMLExportSharedData.hxx @@ -68,12 +68,12 @@ public: void SetLastColumn(const sal_Int32 nTable, const sal_Int32 nCol); void SetLastRow(const sal_Int32 nTable, const sal_Int32 nRow); - sal_Int32 GetLastColumn(const sal_Int32 nTable); - sal_Int32 GetLastRow(const sal_Int32 nTable); + sal_Int32 GetLastColumn(const sal_Int32 nTable) const; + sal_Int32 GetLastRow(const sal_Int32 nTable) const; void AddDrawPage(const ScMyDrawPage& aDrawPage, const sal_Int32 nTable); void SetDrawPageHasForms(const sal_Int32 nTable, sal_Bool bHasForms); com::sun::star::uno::Reference<com::sun::star::drawing::XDrawPage> GetDrawPage(const sal_Int32 nTable); - sal_Bool HasDrawPage() { return pDrawPages != NULL; } + sal_Bool HasDrawPage() const { return pDrawPages != NULL; } sal_Bool HasForm(const sal_Int32 nTable, com::sun::star::uno::Reference<com::sun::star::drawing::XDrawPage>& xDrawPage); void AddNewShape(const ScMyShape& aMyShape); void SortShapesContainer(); diff --git a/sc/source/filter/xml/XMLStylesExportHelper.cxx b/sc/source/filter/xml/XMLStylesExportHelper.cxx index 79c0d24eb1f8..d01b08b99d01 100644 --- a/sc/source/filter/xml/XMLStylesExportHelper.cxx +++ b/sc/source/filter/xml/XMLStylesExportHelper.cxx @@ -746,18 +746,20 @@ sal_Bool ScRowFormatRanges::GetNext(ScMyRowFormatRange& aFormatRange) return sal_False; } -sal_Int32 ScRowFormatRanges::GetMaxRows() +sal_Int32 ScRowFormatRanges::GetMaxRows() const { - ScMyRowFormatRangesList::iterator aItr(aRowFormatRanges.begin()); - ScMyRowFormatRangesList::iterator aEndItr(aRowFormatRanges.end()); + ScMyRowFormatRangesList::const_iterator aItr(aRowFormatRanges.begin()); + ScMyRowFormatRangesList::const_iterator aEndItr(aRowFormatRanges.end()); sal_Int32 nMaxRows = MAXROW + 1; if (aItr != aEndItr) + { while (aItr != aEndItr) { if ((*aItr).nRepeatRows < nMaxRows) nMaxRows = (*aItr).nRepeatRows; ++aItr; } + } else { DBG_ERROR("no ranges found"); @@ -765,7 +767,7 @@ sal_Int32 ScRowFormatRanges::GetMaxRows() return nMaxRows; } -sal_Int32 ScRowFormatRanges::GetSize() +sal_Int32 ScRowFormatRanges::GetSize() const { return nSize; } @@ -1201,9 +1203,16 @@ rtl::OUString* ScColumnStyles::GetStyleName(const sal_Int32 nTable, const sal_In //=========================================================================== +ScRowStyles::Cache::Cache() : + mnTable(-1), mnStart(-1), mnEnd(-1), mnStyle(-1) {} + +bool ScRowStyles::Cache::hasCache(sal_Int32 nTable, sal_Int32 nField) const +{ + return mnTable == nTable && mnStart <= nField && nField <= mnEnd; +} + ScRowStyles::ScRowStyles() - : ScColumnRowStylesBase(), - aTables() + : ScColumnRowStylesBase() { } @@ -1217,29 +1226,41 @@ void ScRowStyles::AddNewTable(const sal_Int32 nTable, const sal_Int32 nFields) if (nTable > nSize) for (sal_Int32 i = nSize; i < nTable; ++i) { - ScMysalInt32Vec aFieldsVec(nFields + 1, -1); - aTables.push_back(aFieldsVec); + aTables.push_back(new StylesType(0, nFields+1, -1)); } } sal_Int32 ScRowStyles::GetStyleNameIndex(const sal_Int32 nTable, const sal_Int32 nField) { DBG_ASSERT(static_cast<size_t>(nTable) < aTables.size(), "wrong table"); - if (static_cast<size_t>(nField) < aTables[nTable].size()) - return aTables[nTable][nField]; - else - return aTables[nTable][aTables[nTable].size() - 1]; + if (maCache.hasCache(nTable, nField)) + // Cache hit ! + return maCache.mnStyle; + + StylesType& r = aTables[nTable]; + if (!r.is_tree_valid()) + r.build_tree(); + sal_Int32 nStyle; + sal_Int32 nStart, nEnd; + if (r.search_tree(nField, nStyle, &nStart, &nEnd)) + { + // Cache this value for better performance. + maCache.mnTable = nTable; + maCache.mnStart = nStart; + maCache.mnEnd = nEnd; + maCache.mnStyle = nStyle; + return nStyle; + } + + return -1; } void ScRowStyles::AddFieldStyleName(const sal_Int32 nTable, const sal_Int32 nField, const sal_Int32 nStringIndex) { DBG_ASSERT(static_cast<size_t>(nTable) < aTables.size(), "wrong table"); - DBG_ASSERT(aTables[nTable].size() >= static_cast<size_t>(nField), "wrong field"); - if (aTables[nTable].size() == static_cast<size_t>(nField)) - aTables[nTable].push_back(nStringIndex); - else - aTables[nTable][nField] = nStringIndex; + StylesType& r = aTables[nTable]; + r.insert_back(nField, nField+1, nStringIndex); } void ScRowStyles::AddFieldStyleName(const sal_Int32 nTable, const sal_Int32 nStartField, @@ -1247,19 +1268,8 @@ void ScRowStyles::AddFieldStyleName(const sal_Int32 nTable, const sal_Int32 nSta { DBG_ASSERT( nStartField <= nEndField, "bad field range"); DBG_ASSERT(static_cast<size_t>(nTable) < aTables.size(), "wrong table"); - DBG_ASSERT(aTables[nTable].size() >= static_cast<size_t>(nStartField), "wrong field"); - ScMysalInt32Vec& rTable = aTables[nTable]; - size_t nSize = rTable.size(); - if (nSize == static_cast<size_t>(nStartField)) - rTable.insert( rTable.end(), static_cast<size_t>(nEndField - nStartField + 1), nStringIndex); - else - { - size_t nField = static_cast<size_t>(nStartField); - for ( ; nField < nSize && nField <= static_cast<size_t>(nEndField); ++nField) - rTable[nField] = nStringIndex; - if (nField <= static_cast<size_t>(nEndField)) - rTable.insert( rTable.end(), static_cast<size_t>(nEndField - nField + 1), nStringIndex); - } + StylesType& r = aTables[nTable]; + r.insert_back(nStartField, nEndField+1, nStringIndex); } rtl::OUString* ScRowStyles::GetStyleName(const sal_Int32 nTable, const sal_Int32 nField) diff --git a/sc/source/filter/xml/XMLStylesExportHelper.hxx b/sc/source/filter/xml/XMLStylesExportHelper.hxx index 405dedf9f26b..e3baa64cb68c 100644 --- a/sc/source/filter/xml/XMLStylesExportHelper.hxx +++ b/sc/source/filter/xml/XMLStylesExportHelper.hxx @@ -38,6 +38,9 @@ #include <com/sun/star/sheet/ValidationAlertStyle.hpp> #include <com/sun/star/sheet/ValidationType.hpp> +#include <boost/ptr_container/ptr_vector.hpp> +#include <mdds/flat_segment_tree.hpp> + class ScDocument; class ScXMLExport; @@ -139,8 +142,8 @@ public: const sal_Int32 nLastRow, const sal_Int32 nLastCol, const ScFormatRangeStyles* pCellStyles, ScDocument* pDoc); - const ScMyDefaultStyleList* GetRowDefaults() { return pRowDefaults; } - const ScMyDefaultStyleList* GetColDefaults() { return pColDefaults; } + const ScMyDefaultStyleList* GetRowDefaults() const { return pRowDefaults; } + const ScMyDefaultStyleList* GetColDefaults() const { return pColDefaults; } }; struct ScMyRowFormatRange @@ -156,10 +159,9 @@ struct ScMyRowFormatRange sal_Bool operator<(const ScMyRowFormatRange& rRange) const; }; -typedef std::list<ScMyRowFormatRange> ScMyRowFormatRangesList; - class ScRowFormatRanges { + typedef std::list<ScMyRowFormatRange> ScMyRowFormatRangesList; ScMyRowFormatRangesList aRowFormatRanges; const ScMyDefaultStyleList* pRowDefaults; const ScMyDefaultStyleList* pColDefaults; @@ -178,8 +180,8 @@ public: void Clear(); void AddRange(ScMyRowFormatRange& rFormatRange, const sal_Int32 nStartRow); sal_Bool GetNext(ScMyRowFormatRange& rFormatRange); - sal_Int32 GetMaxRows(); - sal_Int32 GetSize(); + sal_Int32 GetMaxRows() const; + sal_Int32 GetSize() const; void Sort(); }; @@ -197,11 +199,11 @@ struct ScMyFormatRange sal_Bool operator< (const ScMyFormatRange& rRange) const; }; -typedef std::list<ScMyFormatRange> ScMyFormatRangeAddresses; -typedef std::vector<ScMyFormatRangeAddresses*> ScMyFormatRangeListVec; - class ScFormatRangeStyles { + typedef std::list<ScMyFormatRange> ScMyFormatRangeAddresses; + typedef std::vector<ScMyFormatRangeAddresses*> ScMyFormatRangeListVec; + ScMyFormatRangeListVec aTables; ScMyOUStringVec aStyleNames; ScMyOUStringVec aAutoStyleNames; @@ -254,12 +256,10 @@ struct ScColumnStyle ScColumnStyle() : nIndex(-1), bIsVisible(sal_True) {} }; - -typedef std::vector<ScColumnStyle> ScMyColumnStyleVec; -typedef std::vector<ScMyColumnStyleVec> ScMyColumnVectorVec; - class ScColumnStyles : public ScColumnRowStylesBase { + typedef std::vector<ScColumnStyle> ScMyColumnStyleVec; + typedef std::vector<ScMyColumnStyleVec> ScMyColumnVectorVec; ScMyColumnVectorVec aTables; public: @@ -273,12 +273,21 @@ public: virtual rtl::OUString* GetStyleName(const sal_Int32 nTable, const sal_Int32 nField); }; -typedef std::vector<sal_Int32> ScMysalInt32Vec; -typedef std::vector<ScMysalInt32Vec> ScMyRowVectorVec; - class ScRowStyles : public ScColumnRowStylesBase { - ScMyRowVectorVec aTables; + typedef ::mdds::flat_segment_tree<sal_Int32, sal_Int32> StylesType; + ::boost::ptr_vector<StylesType> aTables; + struct Cache + { + sal_Int32 mnTable; + sal_Int32 mnStart; + sal_Int32 mnEnd; + sal_Int32 mnStyle; + Cache(); + + bool hasCache(sal_Int32 nTable, sal_Int32 nField) const; + }; + Cache maCache; public: ScRowStyles(); diff --git a/sc/source/filter/xml/XMLStylesImportHelper.cxx b/sc/source/filter/xml/XMLStylesImportHelper.cxx index 3a4ea8384539..bc0063fd07df 100644 --- a/sc/source/filter/xml/XMLStylesImportHelper.cxx +++ b/sc/source/filter/xml/XMLStylesImportHelper.cxx @@ -65,54 +65,6 @@ ScMyStyleRanges::~ScMyStyleRanges() delete pCurrencyList; } -void ScMyStyleRanges::AddRange(const ScRange& rRange, ScRangeList* pList, - const rtl::OUString* pStyleName, const sal_Int16 nType, - ScXMLImport& rImport, const sal_uInt32 nMaxRanges) -{ - pList->Join(rRange); - DBG_ASSERT(nMaxRanges > 0, "MaxRanges to less"); - if (pList->Count() > nMaxRanges) - { - sal_Int32 nCount(pList->Count()); - ScRange* pRange(NULL); - for (sal_Int32 i = 0; i < nCount; ++i) - { - pRange = pList->GetObject(i); - if (pRange && (pRange->aEnd.Row() + 1 < rRange.aStart.Row())) - { - rImport.SetStyleToRange(*pRange, pStyleName, nType, NULL); - delete pRange; - pRange = NULL; - pList->Remove(i); - } - } - } -} - -void ScMyStyleRanges::AddCurrencyRange(const ScRange& rRange, ScRangeListRef xList, - const rtl::OUString* pStyleName, const rtl::OUString* pCurrency, - ScXMLImport& rImport, const sal_uInt32 nMaxRanges) -{ - xList->Join(rRange); - DBG_ASSERT(nMaxRanges > 0, "MaxRanges to less"); - if (xList->Count() > nMaxRanges) - { - sal_Int32 nCount(xList->Count()); - ScRange* pRange(NULL); - for (sal_Int32 i = 0; i < nCount; ++i) - { - pRange = xList->GetObject(i); - if (pRange && (pRange->aEnd.Row() + 1 < rRange.aStart.Row())) - { - rImport.SetStyleToRange(*pRange, pStyleName, util::NumberFormat::CURRENCY, pCurrency); - delete pRange; - pRange = NULL; - xList->Remove(i); - } - } - } -} - void ScMyStyleRanges::AddRange(const ScRange& rRange, const rtl::OUString* /*pStyleName*/, const sal_Int16 nType, ScXMLImport& /*rImport*/, const sal_uInt32 /*nMaxRanges*/) @@ -270,18 +222,16 @@ void ScMyStyleRanges::SetStylesToRanges(ScRangeList* pList, const rtl::OUString* pStyleName, const sal_Int16 nCellType, const rtl::OUString* pCurrency, ScXMLImport& rImport) { - sal_Int32 nCount(pList->Count()); - for (sal_Int32 i = 0; i < nCount; ++i) - rImport.SetStyleToRange(*pList->GetObject(i), pStyleName, nCellType, pCurrency); + for ( size_t i = 0, nCount = pList->size(); i < nCount; ++i) + rImport.SetStyleToRange( *(*pList)[i], pStyleName, nCellType, pCurrency ); } void ScMyStyleRanges::SetStylesToRanges(ScRangeListRef xList, const rtl::OUString* pStyleName, const sal_Int16 nCellType, const rtl::OUString* pCurrency, ScXMLImport& rImport) { - sal_Int32 nCount(xList->Count()); - for (sal_Int32 i = 0; i < nCount; ++i) - rImport.SetStyleToRange(*xList->GetObject(i), pStyleName, nCellType, pCurrency); + for (size_t i = 0, nCount = xList->size(); i < nCount; ++i) + rImport.SetStyleToRange( *(*xList)[i], pStyleName, nCellType, pCurrency ); } void ScMyStyleRanges::SetStylesToRanges(const rtl::OUString* pStyleName, ScXMLImport& rImport) @@ -578,7 +528,7 @@ void ScMyStylesImportHelper::AddCell(const com::sun::star::table::CellAddress& r void ScMyStylesImportHelper::InsertRow(const sal_Int32 nRow, const sal_Int32 nTab, ScDocument* pDoc) { - rImport.LockSolarMutex(); + ScXMLImport::MutexGuard aGuard(rImport); ScMyStylesSet::iterator aItr(aCellStyles.begin()); ScMyStylesSet::iterator aEndItr(aCellStyles.end()); while (aItr != aEndItr) @@ -586,12 +536,11 @@ void ScMyStylesImportHelper::InsertRow(const sal_Int32 nRow, const sal_Int32 nTa aItr->xRanges->InsertRow(nRow, nTab, pDoc); ++aItr; } - rImport.UnlockSolarMutex(); } void ScMyStylesImportHelper::InsertCol(const sal_Int32 nCol, const sal_Int32 nTab, ScDocument* pDoc) { - rImport.LockSolarMutex(); + ScXMLImport::MutexGuard aGuard(rImport); ScMyStylesSet::iterator aItr(aCellStyles.begin()); ScMyStylesSet::iterator aEndItr(aCellStyles.end()); while (aItr != aEndItr) @@ -599,7 +548,6 @@ void ScMyStylesImportHelper::InsertCol(const sal_Int32 nCol, const sal_Int32 nTa aItr->xRanges->InsertCol(nCol, nTab, pDoc); ++aItr; } - rImport.UnlockSolarMutex(); } void ScMyStylesImportHelper::EndTable() diff --git a/sc/source/filter/xml/XMLStylesImportHelper.hxx b/sc/source/filter/xml/XMLStylesImportHelper.hxx index 2c39d4eacf12..b7f3e18906aa 100644 --- a/sc/source/filter/xml/XMLStylesImportHelper.hxx +++ b/sc/source/filter/xml/XMLStylesImportHelper.hxx @@ -105,12 +105,6 @@ class ScMyStyleRanges : public SvRefBase ::boost::shared_ptr<ScSimpleRangeList> mpUndefinedList; ScMyCurrencyStylesSet* pCurrencyList; - void AddRange(const ScRange& rRange, ScRangeList* pList, - const rtl::OUString* pStyleName, const sal_Int16 nType, - ScXMLImport& rImport, const sal_uInt32 nMaxRanges); - void AddCurrencyRange(const ScRange& rRange, ScRangeListRef xList, - const rtl::OUString* pStyleName, const rtl::OUString* pCurrency, - ScXMLImport& rImport, const sal_uInt32 nMaxRanges); void SetStylesToRanges(const ::std::list<ScRange>& rList, const rtl::OUString* pStyleName, const sal_Int16 nCellType, const rtl::OUString* pCurrency, ScXMLImport& rImport); diff --git a/sc/source/filter/xml/XMLTableHeaderFooterContext.cxx b/sc/source/filter/xml/XMLTableHeaderFooterContext.cxx index ec79d21aba40..07c983e90180 100644 --- a/sc/source/filter/xml/XMLTableHeaderFooterContext.cxx +++ b/sc/source/filter/xml/XMLTableHeaderFooterContext.cxx @@ -57,10 +57,10 @@ XMLTableHeaderFooterContext::XMLTableHeaderFooterContext( SvXMLImport& rImport, sal_Bool bFooter, sal_Bool bLft ) : SvXMLImportContext( rImport, nPrfx, rLName ), xPropSet( rPageStylePropSet ), - sOn( OUString::createFromAscii( bFooter ? SC_UNO_PAGE_FTRON : SC_UNO_PAGE_HDRON ) ), - sShareContent( OUString::createFromAscii( bFooter ? SC_UNO_PAGE_FTRSHARED : SC_UNO_PAGE_HDRSHARED ) ), - sContent( OUString::createFromAscii( bFooter ? SC_UNO_PAGE_RIGHTFTRCON : SC_UNO_PAGE_RIGHTHDRCON ) ), - sContentLeft( OUString::createFromAscii( bFooter ? SC_UNO_PAGE_LEFTFTRCONT : SC_UNO_PAGE_LEFTHDRCONT ) ), + sOn( bFooter ? OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_PAGE_FTRON)) : OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_PAGE_HDRON)) ), + sShareContent( bFooter ? OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_PAGE_FTRSHARED)) : OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_PAGE_HDRSHARED)) ), + sContent( bFooter ? OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_PAGE_RIGHTFTRCON)) : OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_PAGE_RIGHTHDRCON)) ), + sContentLeft( bFooter ? OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_PAGE_LEFTFTRCONT)) : OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_PAGE_LEFTHDRCONT)) ), bDisplay( sal_True ), bInsertContent( sal_True ), bLeft( bLft ), diff --git a/sc/source/filter/xml/XMLTableShapeImportHelper.cxx b/sc/source/filter/xml/XMLTableShapeImportHelper.cxx index 9ddc5ede06a5..cf0581f9ff58 100644 --- a/sc/source/filter/xml/XMLTableShapeImportHelper.cxx +++ b/sc/source/filter/xml/XMLTableShapeImportHelper.cxx @@ -34,6 +34,7 @@ #include "drwlayer.hxx" #include "xmlannoi.hxx" #include "rangeutl.hxx" +#include "userdat.hxx" #include "docuno.hxx" #include "sheetdata.hxx" #include <xmloff/nmspmap.hxx> @@ -90,6 +91,11 @@ void XMLTableShapeImportHelper::finishShape( { if (!pAnnotationContext) { + ScDrawObjData aAnchor; + aAnchor.maStart = ScAddress(aStartCell.Column, aStartCell.Row, aStartCell.Sheet); + awt::Point aStartPoint(rShape->getPosition()); + aAnchor.maStartOffset = Point(aStartPoint.X, aStartPoint.Y); + sal_Int32 nEndX(-1); sal_Int32 nEndY(-1); sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; @@ -111,11 +117,18 @@ void XMLTableShapeImportHelper::finishShape( { sal_Int32 nOffset(0); ScRangeStringConverter::GetAddressFromString(aEndCell, rValue, static_cast<ScXMLImport&>(mrImporter).GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset); + aAnchor.maEnd = ScAddress(aEndCell.Column, aEndCell.Row, aEndCell.Sheet); } else if (IsXMLToken(aLocalName, XML_END_X)) + { static_cast<ScXMLImport&>(mrImporter).GetMM100UnitConverter().convertMeasure(nEndX, rValue); + aAnchor.maEndOffset.X() = nEndX; + } else if (IsXMLToken(aLocalName, XML_END_Y)) + { static_cast<ScXMLImport&>(mrImporter).GetMM100UnitConverter().convertMeasure(nEndY, rValue); + aAnchor.maEndOffset.Y() = nEndY; + } else if (IsXMLToken(aLocalName, XML_TABLE_BACKGROUND)) if (IsXMLToken(rValue, XML_TRUE)) nLayerID = SC_LAYER_BACK; @@ -128,39 +141,28 @@ void XMLTableShapeImportHelper::finishShape( } SetLayer(rShape, nLayerID, rShape->getShapeType()); - if (!bOnTable) + if (SvxShape* pShapeImp = SvxShape::getImplementation(rShape)) { - rTables.AddShape(rShape, - pRangeList, aStartCell, aEndCell, nEndX, nEndY); - SvxShape* pShapeImp = SvxShape::getImplementation(rShape); - if (pShapeImp) + if (SdrObject *pSdrObj = pShapeImp->GetSdrObject()) { - SdrObject *pSdrObj = pShapeImp->GetSdrObject(); - if (pSdrObj) - ScDrawLayer::SetAnchor(pSdrObj, SCA_CELL); + if (!bOnTable) + ScDrawLayer::SetCellAnchored(*pSdrObj, aAnchor); + else + ScDrawLayer::SetPageAnchored(*pSdrObj); } } - else - { - if ( pRangeList ) - { - // #i78086# If there are notification ranges, the ChartListener must be created - // also when anchored to the sheet - // -> call AddShape with invalid cell position (checked in ScMyShapeResizer::ResizeShapes) - table::CellAddress aInvalidPos( -1, -1, -1 ); - rTables.AddShape(rShape, - pRangeList, aInvalidPos, aInvalidPos, 0, 0); - } + if ( bOnTable && pRangeList ) + { + // #i78086# If there are notification ranges, the ChartListener must be created + // also when anchored to the sheet + // -> call AddOLE with invalid cell position (checked in ScMyShapeResizer::ResizeShapes) - SvxShape* pShapeImp = SvxShape::getImplementation(rShape); - if (pShapeImp) - { - SdrObject *pSdrObj = pShapeImp->GetSdrObject(); - if (pSdrObj) - ScDrawLayer::SetAnchor(pSdrObj, SCA_PAGE); - } + if (rTables.IsOLE(rShape)) + rTables.AddOLE(rShape, *pRangeList); } + + delete pRangeList; } else // shape is annotation { diff --git a/sc/source/filter/xml/XMLTableShapeResizer.cxx b/sc/source/filter/xml/XMLTableShapeResizer.cxx index 23e72c369267..6207885ac5a8 100644 --- a/sc/source/filter/xml/XMLTableShapeResizer.cxx +++ b/sc/source/filter/xml/XMLTableShapeResizer.cxx @@ -49,38 +49,38 @@ using ::std::auto_ptr; using ::std::vector; using ::rtl::OUString; -ScMyShapeResizer::ScMyShapeResizer(ScXMLImport& rTempImport) +ScMyOLEFixer::ScMyOLEFixer(ScXMLImport& rTempImport) : rImport(rTempImport), aShapes(), pCollection(NULL) { } -ScMyShapeResizer::~ScMyShapeResizer() +ScMyOLEFixer::~ScMyOLEFixer() { } -sal_Bool ScMyShapeResizer::IsOLE(uno::Reference< drawing::XShape >& rShape) const +sal_Bool ScMyOLEFixer::IsOLE(uno::Reference< drawing::XShape >& rShape) { - return rShape->getShapeType().equals(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.OLE2Shape"))); + return rShape->getShapeType().equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.OLE2Shape")); } -void ScMyShapeResizer::CreateChartListener(ScDocument* pDoc, +void ScMyOLEFixer::CreateChartListener(ScDocument* pDoc, const rtl::OUString& rName, - const rtl::OUString* pRangeList) + const rtl::OUString& rRangeList) { - if (!pDoc || !pRangeList) - // These are minimum required. + // This is the minimum required. + if (!pDoc) return; - if (!pRangeList->getLength()) + if (!rRangeList.getLength()) { pDoc->AddOLEObjectToCollection(rName); return; } OUString aRangeStr; - ScRangeStringConverter::GetStringFromXMLRangeString(aRangeStr, *pRangeList, pDoc); + ScRangeStringConverter::GetStringFromXMLRangeString(aRangeStr, rRangeList, pDoc); if (!aRangeStr.getLength()) { pDoc->AddOLEObjectToCollection(rName); @@ -93,7 +93,7 @@ void ScMyShapeResizer::CreateChartListener(ScDocument* pDoc, if (!pCollection) return; - auto_ptr< vector<ScSharedTokenRef> > pRefTokens(new vector<ScSharedTokenRef>); + auto_ptr< vector<ScTokenRef> > pRefTokens(new vector<ScTokenRef>); ScRefTokenHelper::compileRangeRepresentation(*pRefTokens, aRangeStr, pDoc); if (!pRefTokens->empty()) { @@ -116,271 +116,43 @@ void ScMyShapeResizer::CreateChartListener(ScDocument* pDoc, } } -void ScMyShapeResizer::AddShape(uno::Reference <drawing::XShape>& rShape, - rtl::OUString* pRangeList, - table::CellAddress& rStartAddress, table::CellAddress& rEndAddress, - sal_Int32 nEndX, sal_Int32 nEndY) +void ScMyOLEFixer::AddOLE(uno::Reference <drawing::XShape>& rShape, + const rtl::OUString &rRangeList) { - ScMyToResizeShape aShape; + ScMyToFixupOLE aShape; aShape.xShape.set(rShape); - aShape.pRangeList = pRangeList; - aShape.aEndCell = rEndAddress; - aShape.aStartCell = rStartAddress; - aShape.nEndY = nEndY; - aShape.nEndX = nEndX; + aShape.sRangeList = rRangeList; aShapes.push_back(aShape); } -void ScMyShapeResizer::GetNewShapeSizePos(ScDocument* pDoc, const Rectangle& rStartRect, - const table::CellAddress& rEndCell, - awt::Point& rPoint, awt::Size& rSize, - sal_Int32& rEndX, sal_Int32& rEndY) const -{ - awt::Point aRefPoint; - BOOL bNegativePage(pDoc->IsNegativePage(rEndCell.Sheet)); - if (bNegativePage) - aRefPoint.X = rStartRect.Right(); - else - aRefPoint.X = rStartRect.Left(); - aRefPoint.Y = rStartRect.Top(); - Rectangle aRect(pDoc->GetMMRect( - static_cast<SCCOL>(rEndCell.Column), static_cast<SCROW>(rEndCell.Row), - static_cast<SCCOL>(rEndCell.Column), static_cast<SCROW>(rEndCell.Row), rEndCell.Sheet )); - if (bNegativePage) - rEndX = -rEndX + aRect.Right(); - else - rEndX += aRect.Left(); - rEndY += aRect.Top(); - rPoint.X += aRefPoint.X; - if (bNegativePage) - { - if (rPoint.X < rStartRect.Left()) - rPoint.X = rStartRect.Left() + 2; // increment by 2 100th_mm because the cellwidth is internal in twips - } - else - { - if (rPoint.X > rStartRect.Right()) - rPoint.X = rStartRect.Right() - 2; // decrement by 2 100th_mm because the cellwidth is internal in twips - } - rPoint.Y += aRefPoint.Y; - if (rPoint.Y > rStartRect.Bottom()) - rPoint.Y = rStartRect.Bottom() - 2; // decrement by 2 100th_mm because the cellheight is internal in twips - if (bNegativePage) - { - rSize.Width = -(rEndX - rPoint.X); - } - else - rSize.Width = rEndX - rPoint.X; - rSize.Height = rEndY - rPoint.Y; -} - -void ScMyShapeResizer::ResizeShapes() +void ScMyOLEFixer::FixupOLEs() { if (!aShapes.empty() && rImport.GetModel().is()) { - rtl::OUString sRowHeight(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_CELLHGT)); rtl::OUString sPersistName (RTL_CONSTASCII_USTRINGPARAM("PersistName")); - rtl::OUString sCaptionPoint( RTL_CONSTASCII_USTRINGPARAM( "CaptionPoint" )); - rtl::OUString sConnectorShape( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.ConnectorShape") ); - rtl::OUString sCaptionShape( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.CaptionShape") ); - rtl::OUString sStartShape(RTL_CONSTASCII_USTRINGPARAM("StartShape")); - rtl::OUString sEndShape(RTL_CONSTASCII_USTRINGPARAM("EndShape")); - rtl::OUString sStartPosition(RTL_CONSTASCII_USTRINGPARAM("StartPosition")); - rtl::OUString sEndPosition(RTL_CONSTASCII_USTRINGPARAM("EndPosition")); - uno::Reference<table::XCellRange> xTableRow; - uno::Reference<sheet::XSpreadsheet> xSheet; - uno::Reference<table::XTableRows> xTableRows; - sal_Int32 nOldRow(-1); - sal_Int32 nOldSheet(-1); - ScMyToResizeShapes::iterator aItr(aShapes.begin()); - ScMyToResizeShapes::iterator aEndItr(aShapes.end()); - uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( rImport.GetModel(), uno::UNO_QUERY ); - if ( xSpreadDoc.is() ) - { - uno::Reference<container::XIndexAccess> xIndex( xSpreadDoc->getSheets(), uno::UNO_QUERY ); - ScDocument* pDoc(rImport.GetDocument()); - if ( pDoc && xIndex.is() ) - { - rImport.LockSolarMutex(); - while (aItr != aEndItr) - { - // #i78086# invalid cell position is used to call CreateChartListener only - if ( aItr->aEndCell.Sheet >= 0 ) - { - if ((nOldSheet != aItr->aEndCell.Sheet) || !xSheet.is()) - { - nOldSheet = aItr->aEndCell.Sheet; - xSheet.set(xIndex->getByIndex(nOldSheet), uno::UNO_QUERY); - if (xSheet.is()) - { - uno::Reference<table::XColumnRowRange> xColumnRowRange (xSheet, uno::UNO_QUERY); - if (xColumnRowRange.is()) - xTableRows = xColumnRowRange->getRows(); - } - } - if (xTableRows.is()) - { - if (nOldRow != aItr->aEndCell.Row || !xTableRow.is()) - { - nOldRow = aItr->aEndCell.Row; - xTableRows->getByIndex(nOldRow) >>= xTableRow; - } - if (xTableRow.is()) - { - uno::Reference <beans::XPropertySet> xRowProperties(xTableRow, uno::UNO_QUERY); - if (xRowProperties.is()) - { - sal_Int32 nHeight; - if (xRowProperties->getPropertyValue(sRowHeight) >>= nHeight) - { - Rectangle aRec = pDoc->GetMMRect(static_cast<SCCOL>(aItr->aStartCell.Column), static_cast<SCROW>(aItr->aStartCell.Row), - static_cast<SCCOL>(aItr->aStartCell.Column), static_cast<SCROW>(aItr->aStartCell.Row), aItr->aStartCell.Sheet); - awt::Point aPoint(aItr->xShape->getPosition()); - awt::Size aSize(aItr->xShape->getSize()); - if (pDoc->IsNegativePage(static_cast<SCTAB>(nOldSheet))) - aPoint.X += aSize.Width; - if (aItr->nEndY >= 0 && aItr->nEndX >= 0) - { - if (aItr->xShape->getShapeType().equals(sConnectorShape)) - { - //#103122#; handle connected Connectorshapes - uno::Reference<beans::XPropertySet> xShapeProps (aItr->xShape, uno::UNO_QUERY); - if(xShapeProps.is()) - { - uno::Reference<drawing::XShape> xStartShape(xShapeProps->getPropertyValue( sStartShape ), uno::UNO_QUERY); - uno::Reference<drawing::XShape> xEndShape(xShapeProps->getPropertyValue( sEndShape ), uno::UNO_QUERY); - if (!xStartShape.is() && !xEndShape.is()) - { - awt::Size aOldSize(aSize); - GetNewShapeSizePos(pDoc, aRec, aItr->aEndCell, aPoint, aSize, aItr->nEndX, aItr->nEndY); - aItr->xShape->setPosition(aPoint); - if( (aSize.Width != aOldSize.Width) || - (aSize.Height != aOldSize.Height) ) - aItr->xShape->setSize(aSize); - } - else if (xStartShape.is() && xEndShape.is()) - { - // do nothing, because they are connected - } - else - { - // only one point is connected, the other should be moved - - rtl::OUString sProperty; - if (xStartShape.is()) - { - awt::Point aEndPoint; - xShapeProps->getPropertyValue(sEndPosition) >>= aEndPoint; - aPoint.X = aRec.Left() + aEndPoint.X; - aPoint.Y = aRec.Top() + aEndPoint.Y; - sProperty = sEndPosition; - } - else - { - awt::Point aStartPoint; - xShapeProps->getPropertyValue(sStartPosition) >>= aStartPoint; - aPoint.X = aRec.Left() + aStartPoint.X; - aPoint.Y = aRec.Top() + aStartPoint.Y; - sProperty = sStartPosition; - } - xShapeProps->setPropertyValue(sProperty, uno::makeAny(aPoint)); - } - } - } - else - { - awt::Size aOldSize(aSize); - GetNewShapeSizePos(pDoc, aRec, aItr->aEndCell, aPoint, aSize, aItr->nEndX, aItr->nEndY); - if (pDoc->IsNegativePage(static_cast<SCTAB>(nOldSheet))) - aPoint.X -= aSize.Width; - aItr->xShape->setPosition(aPoint); - if( (aSize.Width != aOldSize.Width) || - (aSize.Height != aOldSize.Height) ) - aItr->xShape->setSize(aSize); - } - } - else - { - if (aItr->xShape->getShapeType().equals(sCaptionShape)) - { - Rectangle aRectangle(aPoint.X, aPoint.Y, aPoint.X + aSize.Width, aPoint.Y + aSize.Height); + ScMyToFixupOLEs::iterator aItr(aShapes.begin()); + ScMyToFixupOLEs::iterator aEndItr(aShapes.end()); + ScDocument* pDoc(rImport.GetDocument()); - awt::Point aCaptionPoint; - uno::Reference< beans::XPropertySet > xShapeProps(aItr->xShape, uno::UNO_QUERY); - if (xShapeProps.is()) - { - try - { - xShapeProps->getPropertyValue( sCaptionPoint ) >>= aCaptionPoint; - } - catch ( uno::Exception& ) - { - DBG_ERROR("This Captionshape has no CaptionPoint property."); - } - } - Point aCorePoint(aPoint.X, aPoint.Y); - Point aCoreCaptionPoint(aCaptionPoint.X, aCaptionPoint.Y); - aCoreCaptionPoint += aCorePoint; - aRectangle.Union(Rectangle(aCoreCaptionPoint, aCoreCaptionPoint)); + ScXMLImport::MutexGuard aGuard(rImport); - Point aBeforeRightBottomPoint(aRectangle.BottomRight()); - - aRectangle += aRec.TopLeft(); - if (aRectangle.Left() > aRec.Right()) - aRectangle -= (Point(aRectangle.Left() - aRec.Right() + 2, 0)); - if (aRectangle.Top() > aRec.Bottom()) - aRectangle -= (Point(0, aRectangle.Top() - aRec.Bottom() + 2)); + while (aItr != aEndItr) + { + // #i78086# also call CreateChartListener for invalid position (anchored to sheet) + if (!IsOLE(aItr->xShape)) + DBG_ERROR("Only OLEs should be in here now"); - Point aDifferencePoint(aRectangle.BottomRight() - aBeforeRightBottomPoint); - aPoint.X += aDifferencePoint.X(); - aPoint.Y += aDifferencePoint.Y(); + if (IsOLE(aItr->xShape)) + { + uno::Reference < beans::XPropertySet > xShapeProps ( aItr->xShape, uno::UNO_QUERY ); + uno::Reference < beans::XPropertySetInfo > xShapeInfo(xShapeProps->getPropertySetInfo()); - aItr->xShape->setPosition(aPoint); - } - else - { - // #96159# it is possible, that shapes have a negative position - // this is now handled here - DBG_ERROR("no or negative end address of this shape"); - awt::Point aRefPoint; - aRefPoint.X = aRec.Left(); - aRefPoint.Y = aRec.Top(); - aPoint.X += aRefPoint.X; - if (aPoint.X > aRec.Right()) - aPoint.X = aRec.Right() - 2; // decrement by 2 100th_mm because the cellheight is internal in twips - aPoint.Y += aRefPoint.Y; - if (aPoint.Y > aRec.Bottom()) - aPoint.Y = aRec.Bottom() - 2; // decrement by 2 100th_mm because the cellheight is internal in twips - aItr->xShape->setPosition(aPoint); - } - } - } - } - } - } - else - { - DBG_ERROR("something wents wrong"); - } - } - // #i78086# call CreateChartListener also for invalid position (anchored to sheet) - if (IsOLE(aItr->xShape)) - { - uno::Reference < beans::XPropertySet > xShapeProps ( aItr->xShape, uno::UNO_QUERY ); - uno::Reference < beans::XPropertySetInfo > xShapeInfo(xShapeProps->getPropertySetInfo()); - rtl::OUString sName; - if (xShapeProps.is() && xShapeInfo.is() && xShapeInfo->hasPropertyByName(sPersistName) && - (xShapeProps->getPropertyValue(sPersistName) >>= sName)) - CreateChartListener(pDoc, sName, aItr->pRangeList); - } - if (aItr->pRangeList) - delete aItr->pRangeList; - aItr = aShapes.erase(aItr); - } - rImport.UnlockSolarMutex(); -// if (pCollection) -// pDoc->SetChartListenerCollection(pCollection); + rtl::OUString sName; + if (pDoc && xShapeProps.is() && xShapeInfo.is() && xShapeInfo->hasPropertyByName(sPersistName) && + (xShapeProps->getPropertyValue(sPersistName) >>= sName)) + CreateChartListener(pDoc, sName, aItr->sRangeList); } + aItr = aShapes.erase(aItr); } } } diff --git a/sc/source/filter/xml/XMLTableShapeResizer.hxx b/sc/source/filter/xml/XMLTableShapeResizer.hxx index 6372f50be673..fde729ef2e7c 100644 --- a/sc/source/filter/xml/XMLTableShapeResizer.hxx +++ b/sc/source/filter/xml/XMLTableShapeResizer.hxx @@ -39,44 +39,31 @@ class ScChartListenerCollection; class ScDocument; class Rectangle; -struct ScMyToResizeShape +struct ScMyToFixupOLE { com::sun::star::uno::Reference <com::sun::star::drawing::XShape> xShape; - rtl::OUString* pRangeList; - com::sun::star::table::CellAddress aEndCell; - com::sun::star::table::CellAddress aStartCell; - sal_Int32 nEndX; - sal_Int32 nEndY; - - ScMyToResizeShape() : pRangeList(NULL) {} + rtl::OUString sRangeList; }; -typedef std::list<ScMyToResizeShape> ScMyToResizeShapes; +typedef std::list<ScMyToFixupOLE> ScMyToFixupOLEs; -class ScMyShapeResizer +class ScMyOLEFixer { ScXMLImport& rImport; - ScMyToResizeShapes aShapes; + ScMyToFixupOLEs aShapes; ScChartListenerCollection* pCollection; - sal_Bool IsOLE(com::sun::star::uno::Reference< com::sun::star::drawing::XShape >& rShape) const; void CreateChartListener(ScDocument* pDoc, const rtl::OUString& rName, - const rtl::OUString* pRangeList); - void GetNewShapeSizePos(ScDocument* pDoc, const Rectangle& rStartRect, - const com::sun::star::table::CellAddress& rEndCell, - com::sun::star::awt::Point& rPoint, com::sun::star::awt::Size& rSize, - sal_Int32& rEndX, sal_Int32& rEndY) const; + const rtl::OUString& rRangeList); public: - ScMyShapeResizer(ScXMLImport& rImport); - ~ScMyShapeResizer(); + ScMyOLEFixer(ScXMLImport& rImport); + ~ScMyOLEFixer(); - void AddShape(com::sun::star::uno::Reference <com::sun::star::drawing::XShape>& rShape, - rtl::OUString* pRangeList, - com::sun::star::table::CellAddress& rStartAddress, - com::sun::star::table::CellAddress& rEndAddress, - sal_Int32 nEndX, sal_Int32 nEndY); - void ResizeShapes(); + static sal_Bool IsOLE(com::sun::star::uno::Reference< com::sun::star::drawing::XShape >& rShape); + void AddOLE(com::sun::star::uno::Reference <com::sun::star::drawing::XShape>& rShape, + const rtl::OUString &rRangeList); + void FixupOLEs(); }; #endif diff --git a/sc/source/filter/xml/XMLTableSourceContext.cxx b/sc/source/filter/xml/XMLTableSourceContext.cxx index 9cc6d9a7090a..d3607a2ab279 100644 --- a/sc/source/filter/xml/XMLTableSourceContext.cxx +++ b/sc/source/filter/xml/XMLTableSourceContext.cxx @@ -117,7 +117,7 @@ void ScXMLTableSourceContext::EndElement() ScDocument* pDoc(GetScImport().GetDocument()); if (xLinkable.is() && pDoc) { - GetScImport().LockSolarMutex(); + ScXMLImport::MutexGuard aGuard(GetScImport()); if (pDoc->RenameTab( static_cast<SCTAB>(GetScImport().GetTables().GetCurrentSheet()), GetScImport().GetTables().GetCurrentSheetName(), sal_False, sal_True)) { @@ -140,7 +140,6 @@ void ScXMLTableSourceContext::EndElement() nLinkMode, aFileString, aFilterString, aOptString, aSheetString, nRefresh ); } - GetScImport().UnlockSolarMutex(); } } } diff --git a/sc/source/filter/xml/cachedattraccess.cxx b/sc/source/filter/xml/cachedattraccess.cxx new file mode 100644 index 000000000000..b5ef932a4410 --- /dev/null +++ b/sc/source/filter/xml/cachedattraccess.cxx @@ -0,0 +1,70 @@ +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Initial Developer of the Original Code is + * [ Kohei Yoshida <kyoshida@novell.com> ] + * Portions created by the Initial Developer are Copyright (C) 2010 the + * Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sc.hxx" + +#include "cachedattraccess.hxx" +#include "document.hxx" + +ScXMLCachedRowAttrAccess::Cache::Cache() : + mnTab(-1), mnRow1(-1), mnRow2(-1), mbValue(false) {} + +bool ScXMLCachedRowAttrAccess::Cache::hasCache(sal_Int32 nTab, sal_Int32 nRow) const +{ + return mnTab == nTab && mnRow1 <= nRow && nRow <= mnRow2; +} + +ScXMLCachedRowAttrAccess::ScXMLCachedRowAttrAccess(ScDocument* pDoc) : + mpDoc(pDoc) {} + +bool ScXMLCachedRowAttrAccess::rowHidden(sal_Int32 nTab, sal_Int32 nRow) +{ + if (!maHidden.hasCache(nTab, nRow)) + { + SCROW nRow1, nRow2; + maHidden.mbValue = mpDoc->RowHidden( + static_cast<SCTAB>(nTab), static_cast<SCROW>(nRow), &nRow1, &nRow2); + maHidden.mnRow1 = static_cast<sal_Int32>(nRow1); + maHidden.mnRow2 = static_cast<sal_Int32>(nRow2); + } + return maHidden.mbValue; +} + +bool ScXMLCachedRowAttrAccess::rowFiltered(sal_Int32 nTab, sal_Int32 nRow) +{ + if (!maFiltered.hasCache(nTab, nRow)) + { + SCROW nRow1, nRow2; + maFiltered.mbValue = mpDoc->RowFiltered( + static_cast<SCTAB>(nTab), static_cast<SCROW>(nRow), &nRow1, &nRow2); + maFiltered.mnRow1 = static_cast<sal_Int32>(nRow1); + maFiltered.mnRow2 = static_cast<sal_Int32>(nRow2); + } + return maFiltered.mbValue; +} + diff --git a/sc/source/filter/xml/cachedattraccess.hxx b/sc/source/filter/xml/cachedattraccess.hxx new file mode 100644 index 000000000000..5ef6e4118089 --- /dev/null +++ b/sc/source/filter/xml/cachedattraccess.hxx @@ -0,0 +1,63 @@ +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Initial Developer of the Original Code is + * [ Kohei Yoshida <kyoshida@novell.com> ] + * Portions created by the Initial Developer are Copyright (C) 2010 the + * Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ + +#ifndef __SC_FILTER_XML_CACHEDATTRACCESS_HXX__ +#define __SC_FILTER_XML_CACHEDATTRACCESS_HXX__ + +#include "sal/types.h" + +class ScDocument; + +/** + * Wrapper for accessing hidden and filtered row attributes. It caches last + * accessed values for a current range, to avoid fetching values for every + * single row. + */ +class ScXMLCachedRowAttrAccess +{ + struct Cache + { + sal_Int32 mnTab; + sal_Int32 mnRow1; + sal_Int32 mnRow2; + bool mbValue; + Cache(); + bool hasCache(sal_Int32 nTab, sal_Int32 nRow) const; + }; + +public: + ScXMLCachedRowAttrAccess(ScDocument* pDoc); + + bool rowHidden(sal_Int32 nTab, sal_Int32 nRow); + bool rowFiltered(sal_Int32 nTab, sal_Int32 nRow); +private: + Cache maHidden; + Cache maFiltered; + ScDocument* mpDoc; +}; + +#endif diff --git a/sc/source/filter/xml/makefile.mk b/sc/source/filter/xml/makefile.mk index 47d428157993..777d68c086bf 100644 --- a/sc/source/filter/xml/makefile.mk +++ b/sc/source/filter/xml/makefile.mk @@ -47,6 +47,7 @@ PROJECTPCHSOURCE=..\pch\filt_pch SLOFILES = \ $(SLO)$/sheetdata.obj \ + $(SLO)$/cachedattraccess.obj \ $(SLO)$/xmlwrap.obj \ $(SLO)$/xmlimprt.obj \ $(SLO)$/xmlexprt.obj \ diff --git a/sc/source/filter/xml/xmlbodyi.cxx b/sc/source/filter/xml/xmlbodyi.cxx index 7f92f82aa1a6..3f8539d9b37c 100644 --- a/sc/source/filter/xml/xmlbodyi.cxx +++ b/sc/source/filter/xml/xmlbodyi.cxx @@ -268,7 +268,9 @@ void ScXMLBodyContext::EndElement() SvXMLImportContext *pContext = new ScXMLCalculationSettingsContext( GetScImport(), XML_NAMESPACE_TABLE, GetXMLToken(XML_CALCULATION_SETTINGS), NULL ); pContext->EndElement(); } - GetScImport().LockSolarMutex(); + + ScXMLImport::MutexGuard aGuard(GetScImport()); + ScMyImpDetectiveOpArray* pDetOpArray = GetScImport().GetDetectiveOpArray(); ScDocument* pDoc = GetScImport().GetDocument(); ScMyImpDetectiveOp aDetOp; @@ -304,7 +306,6 @@ void ScXMLBodyContext::EndElement() pDoc->SetDocProtection(pProtection.get()); } } - GetScImport().UnlockSolarMutex(); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/xml/xmlcoli.cxx b/sc/source/filter/xml/xmlcoli.cxx index 4b05c89dc4e2..fa2cc817fa7a 100644 --- a/sc/source/filter/xml/xmlcoli.cxx +++ b/sc/source/filter/xml/xmlcoli.cxx @@ -319,7 +319,7 @@ void ScXMLTableColsContext::EndElement() ScDocument* pDoc = GetScImport().GetDocument(); if (pDoc) { - rXMLImport.LockSolarMutex(); + ScXMLImport::MutexGuard aGuard(GetScImport()); ScOutlineTable* pOutlineTable = pDoc->GetOutlineTable(static_cast<SCTAB>(nSheet), sal_True); ScOutlineArray* pColArray = pOutlineTable ? pOutlineTable->GetColArray() : NULL; if (pColArray) @@ -327,7 +327,6 @@ void ScXMLTableColsContext::EndElement() sal_Bool bResized; pColArray->Insert(static_cast<SCCOL>(nGroupStartCol), static_cast<SCCOL>(nGroupEndCol), bResized, !bGroupDisplay, sal_True); } - rXMLImport.UnlockSolarMutex(); } } } diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx index 2f31b209d375..e5229d2fbcf5 100644 --- a/sc/source/filter/xml/xmlexprt.cxx +++ b/sc/source/filter/xml/xmlexprt.cxx @@ -69,6 +69,7 @@ #include "externalrefmgr.hxx" #include "editutil.hxx" #include "tabprotection.hxx" +#include "cachedattraccess.hxx" #include <xmloff/xmltoken.hxx> #include <xmloff/xmlnmspe.hxx> @@ -161,11 +162,13 @@ #define SC_SHOW_CHANGES_BY_RANGES 11 #define SC_SHOW_CHANGES_BY_RANGES_LIST 12 -using namespace rtl; using namespace formula; using namespace com::sun::star; using namespace xmloff::token; using ::std::vector; +using ::rtl::OUString; +using ::rtl::OUStringBuffer; +using ::com::sun::star::uno::Reference; using ::com::sun::star::uno::UNO_QUERY; //---------------------------------------------------------------------------- @@ -527,7 +530,7 @@ ScXMLExport::ScXMLExport( // This name is reserved for the external ref cache tables. This // should not conflict with user-defined styles since this name is // used for a table style which is not available in the UI. - sExternalRefTabStyleName = rtl::OUString::createFromAscii("ta_extref"); + sExternalRefTabStyleName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ta_extref")); GetAutoStylePool()->RegisterName(XML_STYLE_FAMILY_TABLE_TABLE, sExternalRefTabStyleName); sAttrName = GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_TABLE, GetXMLToken(XML_NAME)); @@ -679,39 +682,21 @@ void ScXMLExport::CollectSharedData(sal_Int32& nTableCount, sal_Int32& nShapesCo else { ++nShapesCount; - SvxShape* pShapeImp(SvxShape::getImplementation(xShape)); - if (pShapeImp) + if (SvxShape* pShapeImp = SvxShape::getImplementation(xShape)) { - SdrObject *pSdrObj(pShapeImp->GetSdrObject()); - if (pSdrObj) + if (SdrObject *pSdrObj = pShapeImp->GetSdrObject()) { - if (ScDrawLayer::GetAnchor(pSdrObj) == SCA_CELL) + if (ScDrawObjData *pAnchor = ScDrawLayer::GetObjData( pSdrObj )) { - if (pDoc) - { - - awt::Point aPoint(xShape->getPosition()); - awt::Size aSize(xShape->getSize()); - rtl::OUString sType(xShape->getShapeType()); - Rectangle aRectangle(aPoint.X, aPoint.Y, aPoint.X + aSize.Width, aPoint.Y + aSize.Height); - if ( sType.equals(sCaptionShape) ) - { - awt::Point aRelativeCaptionPoint; - xShapeProp->getPropertyValue( sCaptionPoint ) >>= aRelativeCaptionPoint; - Point aCoreRelativeCaptionPoint(aRelativeCaptionPoint.X, aRelativeCaptionPoint.Y); - Point aCoreAbsoluteCaptionPoint(aPoint.X, aPoint.Y); - aCoreAbsoluteCaptionPoint += aCoreRelativeCaptionPoint; - aRectangle.Union(Rectangle(aCoreAbsoluteCaptionPoint, aCoreAbsoluteCaptionPoint)); - } - ScRange aRange(pDoc->GetRange(static_cast<SCTAB>(nTable), aRectangle)); - ScMyShape aMyShape; - aMyShape.aAddress = aRange.aStart; - aMyShape.aEndAddress = aRange.aEnd; - aMyShape.xShape = xShape; - pSharedData->AddNewShape(aMyShape); - pSharedData->SetLastColumn(nTable, aRange.aStart.Col()); - pSharedData->SetLastRow(nTable, aRange.aStart.Row()); - } + ScMyShape aMyShape; + aMyShape.aAddress = pAnchor->maStart; + aMyShape.aEndAddress = pAnchor->maEnd; + aMyShape.nEndX = pAnchor->maEndOffset.X(); + aMyShape.nEndY = pAnchor->maEndOffset.Y(); + aMyShape.xShape = xShape; + pSharedData->AddNewShape(aMyShape); + pSharedData->SetLastColumn(nTable, pAnchor->maStart.Col()); + pSharedData->SetLastRow(nTable, pAnchor->maStart.Row()); } else pSharedData->AddTableShape(nTable, xShape); @@ -825,11 +810,11 @@ void ScXMLExport::_ExportMeta() CollectSharedData(nTableCount, nShapesCount, nCellCount); uno::Sequence<beans::NamedValue> stats(3); - stats[0] = beans::NamedValue(::rtl::OUString::createFromAscii("TableCount"), + stats[0] = beans::NamedValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TableCount")), uno::makeAny(nTableCount)); - stats[1] = beans::NamedValue(::rtl::OUString::createFromAscii("CellCount"), + stats[1] = beans::NamedValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CellCount")), uno::makeAny(nCellCount)); - stats[2] = beans::NamedValue(::rtl::OUString::createFromAscii("ObjectCount"), + stats[2] = beans::NamedValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ObjectCount")), uno::makeAny(nShapesCount)); // update document statistics at the model @@ -1089,7 +1074,7 @@ void ScXMLExport::ExportColumns(const sal_Int32 nTable, const table::CellRangeAd void ScXMLExport::ExportExternalRefCacheStyles() { sal_Int32 nEntryIndex = GetCellStylesPropertySetMapper()->FindEntryIndex( - "NumberFormat", XML_NAMESPACE_STYLE, OUString::createFromAscii("data-style-name")); + "NumberFormat", XML_NAMESPACE_STYLE, OUString(RTL_CONSTASCII_USTRINGPARAM("data-style-name"))); if (nEntryIndex < 0) // No entry index for the number format is found. @@ -1103,7 +1088,7 @@ void ScXMLExport::ExportExternalRefCacheStyles() // Export each unique number format used in the external ref cache. vector<sal_uInt32> aNumFmts; pRefMgr->getAllCachedNumberFormats(aNumFmts); - const OUString aDefaultStyle = OUString::createFromAscii("Default").intern(); + const OUString aDefaultStyle = OUString(RTL_CONSTASCII_USTRINGPARAM("Default")).intern(); for (vector<sal_uInt32>::const_iterator itr = aNumFmts.begin(), itrEnd = aNumFmts.end(); itr != itrEnd; ++itr) { @@ -1130,7 +1115,7 @@ void ScXMLExport::ExportExternalRefCacheStyles() { sal_Bool bIsAuto; nIndex = pCellStyles->GetIndexOfStyleName( - aName, OUString::createFromAscii(XML_STYLE_FAMILY_TABLE_CELL_STYLES_PREFIX), bIsAuto); + aName, OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_TABLE_CELL_STYLES_PREFIX)), bIsAuto); } // store the number format to index mapping for later use. @@ -1211,18 +1196,18 @@ void ScXMLExport::WriteRowContent() } } -void ScXMLExport::WriteRowStartTag(sal_Int32 nRow, const sal_Int32 nIndex, - const sal_Int8 nFlag, const sal_Int32 nEqualRows) +void ScXMLExport::WriteRowStartTag( + sal_Int32 nRow, const sal_Int32 nIndex, const sal_Int32 nEqualRows, + bool bHidden, bool bFiltered) { AddAttribute(sAttrStyleName, *pRowStyles->GetStyleNameByIndex(nIndex)); - if (nFlag) - if (nFlag & CR_HIDDEN) - { - if (nFlag & CR_FILTERED) - AddAttribute(XML_NAMESPACE_TABLE, XML_VISIBILITY, XML_FILTER); - else - AddAttribute(XML_NAMESPACE_TABLE, XML_VISIBILITY, XML_COLLAPSE); - } + if (bHidden) + { + if (bFiltered) + AddAttribute(XML_NAMESPACE_TABLE, XML_VISIBILITY, XML_FILTER); + else + AddAttribute(XML_NAMESPACE_TABLE, XML_VISIBILITY, XML_COLLAPSE); + } if (nEqualRows > 1) { rtl::OUStringBuffer aBuf; @@ -1256,7 +1241,9 @@ void ScXMLExport::CloseHeaderRows() EndElement(XML_NAMESPACE_TABLE, XML_TABLE_HEADER_ROWS, sal_True); } -void ScXMLExport::OpenNewRow(const sal_Int32 nIndex, const sal_Int8 nFlag, const sal_Int32 nStartRow, const sal_Int32 nEqualRows) +void ScXMLExport::OpenNewRow( + const sal_Int32 nIndex, const sal_Int32 nStartRow, const sal_Int32 nEqualRows, + bool bHidden, bool bFiltered) { nOpenRow = nStartRow; if (pGroupRows->IsGroupStart(nStartRow)) @@ -1276,35 +1263,38 @@ void ScXMLExport::OpenNewRow(const sal_Int32 nIndex, const sal_Int8 nFlag, const nEquals = aRowHeaderRange.EndRow - nStartRow + 1; else nEquals = nEqualRows; - WriteRowStartTag(nStartRow, nIndex, nFlag, nEquals); + WriteRowStartTag(nStartRow, nIndex, nEquals, bHidden, bFiltered); nOpenRow = nStartRow + nEquals - 1; if (nEquals < nEqualRows) { CloseRow(nStartRow + nEquals - 1); - WriteRowStartTag(nStartRow, nIndex, nFlag, nEqualRows - nEquals); + WriteRowStartTag(nStartRow, nIndex, nEqualRows - nEquals, bHidden, bFiltered); nOpenRow = nStartRow + nEqualRows - 1; } } else - WriteRowStartTag(nStartRow, nIndex, nFlag, nEqualRows); + WriteRowStartTag(nStartRow, nIndex, nEqualRows, bHidden, bFiltered); } -void ScXMLExport::OpenAndCloseRow(const sal_Int32 nIndex, const sal_Int8 nFlag, - const sal_Int32 nStartRow, const sal_Int32 nEqualRows) +void ScXMLExport::OpenAndCloseRow( + const sal_Int32 nIndex, const sal_Int32 nStartRow, const sal_Int32 nEqualRows, + bool bHidden, bool bFiltered) { - OpenNewRow(nIndex, nFlag, nStartRow, nEqualRows); + OpenNewRow(nIndex, nStartRow, nEqualRows, bHidden, bFiltered); WriteRowContent(); CloseRow(nStartRow + nEqualRows - 1); pRowFormatRanges->Clear(); } -void ScXMLExport::OpenRow(const sal_Int32 nTable, const sal_Int32 nStartRow, const sal_Int32 nRepeatRow) +void ScXMLExport::OpenRow(const sal_Int32 nTable, const sal_Int32 nStartRow, const sal_Int32 nRepeatRow, ScXMLCachedRowAttrAccess& rRowAttr) { if (nRepeatRow > 1) { sal_Int32 nPrevIndex(0), nIndex; - sal_Int8 nPrevFlag(0); - sal_Int8 nFlag(0); + bool bPrevHidden = false; + bool bPrevFiltered = false; + bool bHidden = false; + bool bFiltered = false; sal_Int32 nEqualRows(1); sal_Int32 nEndRow(nStartRow + nRepeatRow); sal_Int32 nRow; @@ -1314,14 +1304,20 @@ void ScXMLExport::OpenRow(const sal_Int32 nTable, const sal_Int32 nStartRow, con { nPrevIndex = pRowStyles->GetStyleNameIndex(nTable, nRow); if (pDoc) - nPrevFlag = (pDoc->GetRowFlags(static_cast<SCROW>(nRow), static_cast<SCTAB>(nTable))) & (CR_HIDDEN | CR_FILTERED); + { + bPrevHidden = rRowAttr.rowHidden(nTable, nRow); + bPrevFiltered = rRowAttr.rowFiltered(nTable, nRow); + } } else { nIndex = pRowStyles->GetStyleNameIndex(nTable, nRow); if (pDoc) - nFlag = (pDoc->GetRowFlags(static_cast<SCROW>(nRow), static_cast<SCTAB>(nTable))) & (CR_HIDDEN | CR_FILTERED); - if (nIndex == nPrevIndex && nFlag == nPrevFlag && + { + bHidden = rRowAttr.rowHidden(nTable, nRow); + bFiltered = rRowAttr.rowFiltered(nTable, nRow); + } + if (nIndex == nPrevIndex && bHidden == bPrevHidden && bFiltered == bPrevFiltered && !(bHasRowHeader && ((nRow == aRowHeaderRange.StartRow) || (nRow - 1 == aRowHeaderRange.EndRow))) && !(pGroupRows->IsGroupStart(nRow)) && !(pGroupRows->IsGroupEnd(nRow - 1))) @@ -1331,27 +1327,32 @@ void ScXMLExport::OpenRow(const sal_Int32 nTable, const sal_Int32 nStartRow, con if (nRow < nEndRow) { ScRowFormatRanges* pTempRowFormatRanges = new ScRowFormatRanges(pRowFormatRanges); - OpenAndCloseRow(nPrevIndex, nPrevFlag, nRow - nEqualRows, nEqualRows); + OpenAndCloseRow(nPrevIndex, nRow - nEqualRows, nEqualRows, bPrevHidden, bPrevFiltered); delete pRowFormatRanges; pRowFormatRanges = pTempRowFormatRanges; } else - OpenAndCloseRow(nPrevIndex, nPrevFlag, nRow - nEqualRows, nEqualRows); + OpenAndCloseRow(nPrevIndex, nRow - nEqualRows, nEqualRows, bPrevHidden, bPrevFiltered); nEqualRows = 1; nPrevIndex = nIndex; - nPrevFlag = nFlag; + bPrevHidden = bHidden; + bPrevFiltered = bFiltered; } } } - OpenNewRow(nPrevIndex, nPrevFlag, nRow - nEqualRows, nEqualRows); + OpenNewRow(nPrevIndex, nRow - nEqualRows, nEqualRows, bPrevHidden, bPrevFiltered); } else { sal_Int32 nIndex = pRowStyles->GetStyleNameIndex(nTable, nStartRow); - sal_Int8 nFlag(0); + bool bHidden = false; + bool bFiltered = false; if (pDoc) - nFlag = (pDoc->GetRowFlags(static_cast<SCROW>(nStartRow), static_cast<SCTAB>(nTable))) & (CR_HIDDEN | CR_FILTERED); - OpenNewRow(nIndex, nFlag, nStartRow, 1); + { + bHidden = rRowAttr.rowHidden(nTable, nStartRow); + bFiltered = rRowAttr.rowFiltered(nTable, nStartRow); + } + OpenNewRow(nIndex, nStartRow, 1, bHidden, bFiltered); } nOpenRow = nStartRow + nRepeatRow - 1; } @@ -1382,11 +1383,12 @@ void ScXMLExport::ExportFormatRanges(const sal_Int32 nStartCol, const sal_Int32 const sal_Int32 nEndCol, const sal_Int32 nEndRow, const sal_Int32 nSheet) { pRowFormatRanges->Clear(); + ScXMLCachedRowAttrAccess aRowAttr(pDoc); if (nStartRow == nEndRow) { pCellStyles->GetFormatRanges(nStartCol, nEndCol, nStartRow, nSheet, pRowFormatRanges); if (nOpenRow == - 1) - OpenRow(nSheet, nStartRow, 1); + OpenRow(nSheet, nStartRow, 1, aRowAttr); WriteRowContent(); pRowFormatRanges->Clear(); } @@ -1407,12 +1409,12 @@ void ScXMLExport::ExportFormatRanges(const sal_Int32 nStartCol, const sal_Int32 DBG_ASSERT(nMaxRows, "something wents wrong"); if (nMaxRows >= nTotalRows - nRows) { - OpenRow(nSheet, nStartRow + nRows, nTotalRows - nRows); + OpenRow(nSheet, nStartRow + nRows, nTotalRows - nRows, aRowAttr); nRows += nTotalRows - nRows; } else { - OpenRow(nSheet, nStartRow + nRows, nMaxRows); + OpenRow(nSheet, nStartRow + nRows, nMaxRows, aRowAttr); nRows += nMaxRows; } if (!pRowFormatRanges->GetSize()) @@ -1422,7 +1424,7 @@ void ScXMLExport::ExportFormatRanges(const sal_Int32 nStartCol, const sal_Int32 } if (nTotalRows == 1) CloseRow(nStartRow); - OpenRow(nSheet, nEndRow, 1); + OpenRow(nSheet, nEndRow, 1, aRowAttr); pRowFormatRanges->Clear(); pCellStyles->GetFormatRanges(0, nEndCol, nEndRow, nSheet, pRowFormatRanges); WriteRowContent(); @@ -1437,12 +1439,12 @@ void ScXMLExport::ExportFormatRanges(const sal_Int32 nStartCol, const sal_Int32 sal_Int32 nMaxRows = pRowFormatRanges->GetMaxRows(); if (nMaxRows >= nTotalRows - nRows) { - OpenRow(nSheet, nStartRow + nRows, nTotalRows - nRows); + OpenRow(nSheet, nStartRow + nRows, nTotalRows - nRows, aRowAttr); nRows += nTotalRows - nRows; } else { - OpenRow(nSheet, nStartRow + nRows, nMaxRows); + OpenRow(nSheet, nStartRow + nRows, nMaxRows, aRowAttr); nRows += nMaxRows; } if (!pRowFormatRanges->GetSize()) @@ -1450,7 +1452,7 @@ void ScXMLExport::ExportFormatRanges(const sal_Int32 nStartCol, const sal_Int32 WriteRowContent(); CloseRow(nStartRow + nRows - 1); } - OpenRow(nSheet, nEndRow, 1); + OpenRow(nSheet, nEndRow, 1, aRowAttr); pRowFormatRanges->Clear(); pCellStyles->GetFormatRanges(0, nEndCol, nEndRow, nSheet, pRowFormatRanges); WriteRowContent(); @@ -1749,46 +1751,45 @@ void ScXMLExport::_ExportContent() AddAttribute(sAttrStyleName, aTableStyles[nTable]); uno::Reference<util::XProtectable> xProtectable (xTable, uno::UNO_QUERY); - ScTableProtection* pProtect = NULL; + ScTableProtection* pProtect = NULL; if (xProtectable.is() && xProtectable->isProtected()) { AddAttribute(XML_NAMESPACE_TABLE, XML_PROTECTED, XML_TRUE); if (pDoc) { - pProtect = pDoc->GetTabProtection(static_cast<SCTAB>(nTable)); + pProtect = pDoc->GetTabProtection(static_cast<SCTAB>(nTable)); if (pProtect) - { - rtl::OUStringBuffer aBuffer; - ScPasswordHash eHashUsed = PASSHASH_UNSPECIFIED; - if (pProtect->hasPasswordHash(PASSHASH_SHA1)) - { - SvXMLUnitConverter::encodeBase64(aBuffer, pProtect->getPasswordHash(PASSHASH_SHA1)); - eHashUsed = PASSHASH_SHA1; - } - else if (pProtect->hasPasswordHash(PASSHASH_XL, PASSHASH_SHA1)) - { - // Double-hash this by SHA1 on top of the legacy xls hash. - uno::Sequence<sal_Int8> aHash = pProtect->getPasswordHash(PASSHASH_XL, PASSHASH_SHA1); - SvXMLUnitConverter::encodeBase64(aBuffer, aHash); - eHashUsed = PASSHASH_XL; - } - if (aBuffer.getLength()) { - AddAttribute(XML_NAMESPACE_TABLE, XML_PROTECTION_KEY, aBuffer.makeStringAndClear()); - if (eHashUsed == PASSHASH_XL) + rtl::OUStringBuffer aBuffer; + ScPasswordHash eHashUsed = PASSHASH_UNSPECIFIED; + if (pProtect->hasPasswordHash(PASSHASH_SHA1)) { - AddAttribute(XML_NAMESPACE_TABLE, XML_PROTECTION_KEY_DIGEST_ALGORITHM, - ScPassHashHelper::getHashURI(PASSHASH_XL)); - AddAttribute(XML_NAMESPACE_TABLE, XML_PROTECTION_KEY_DIGEST_ALGORITHM_2, - ScPassHashHelper::getHashURI(PASSHASH_SHA1)); + SvXMLUnitConverter::encodeBase64(aBuffer, pProtect->getPasswordHash(PASSHASH_SHA1)); + eHashUsed = PASSHASH_SHA1; + } + else if (pProtect->hasPasswordHash(PASSHASH_XL, PASSHASH_SHA1)) + { + // Double-hash this by SHA1 on top of the legacy xls hash. + uno::Sequence<sal_Int8> aHash = pProtect->getPasswordHash(PASSHASH_XL, PASSHASH_SHA1); + SvXMLUnitConverter::encodeBase64(aBuffer, aHash); + eHashUsed = PASSHASH_XL; + } + if (aBuffer.getLength()) + { + AddAttribute(XML_NAMESPACE_TABLE, XML_PROTECTION_KEY, aBuffer.makeStringAndClear()); + if (eHashUsed == PASSHASH_XL) + { + AddAttribute(XML_NAMESPACE_TABLE, XML_PROTECTION_KEY_DIGEST_ALGORITHM, + ScPassHashHelper::getHashURI(PASSHASH_XL)); + AddAttribute(XML_NAMESPACE_TABLE, XML_PROTECTION_KEY_DIGEST_ALGORITHM_2, + ScPassHashHelper::getHashURI(PASSHASH_SHA1)); + } + else if (eHashUsed == PASSHASH_SHA1) + AddAttribute(XML_NAMESPACE_TABLE, XML_PROTECTION_KEY_DIGEST_ALGORITHM, + ScPassHashHelper::getHashURI(PASSHASH_SHA1)); } - else if (eHashUsed == PASSHASH_SHA1) - AddAttribute(XML_NAMESPACE_TABLE, XML_PROTECTION_KEY_DIGEST_ALGORITHM, - ScPassHashHelper::getHashURI(PASSHASH_SHA1)); - } } - } } rtl::OUString sPrintRanges; table::CellRangeAddress aColumnHeaderRange; @@ -1800,18 +1801,18 @@ void ScXMLExport::_ExportContent() AddAttribute( XML_NAMESPACE_TABLE, XML_PRINT, XML_FALSE); SvXMLElementExport aElemT(*this, sElemTab, sal_True, sal_True); - if (pProtect && pProtect->isProtected()) - { - if (pProtect->isOptionEnabled(ScTableProtection::SELECT_LOCKED_CELLS)) - AddAttribute(XML_NAMESPACE_TABLE, XML_SELECT_PROTECTED_CELLS, XML_TRUE); - if (pProtect->isOptionEnabled(ScTableProtection::SELECT_UNLOCKED_CELLS)) - AddAttribute(XML_NAMESPACE_TABLE, XML_SELECT_UNPROTECTED_CELLS, XML_TRUE); + if (pProtect && pProtect->isProtected()) + { + if (pProtect->isOptionEnabled(ScTableProtection::SELECT_LOCKED_CELLS)) + AddAttribute(XML_NAMESPACE_TABLE, XML_SELECT_PROTECTED_CELLS, XML_TRUE); + if (pProtect->isOptionEnabled(ScTableProtection::SELECT_UNLOCKED_CELLS)) + AddAttribute(XML_NAMESPACE_TABLE, XML_SELECT_UNPROTECTED_CELLS, XML_TRUE); - rtl::OUString aElemName = GetNamespaceMap().GetQNameByKey( - XML_NAMESPACE_TABLE, GetXMLToken(XML_TABLE_PROTECTION)); + rtl::OUString aElemName = GetNamespaceMap().GetQNameByKey( + XML_NAMESPACE_TABLE, GetXMLToken(XML_TABLE_PROTECTION)); - SvXMLElementExport aElemProtected(*this, aElemName, true, true); - } + SvXMLElementExport aElemProtected(*this, aElemName, true, true); + } CheckAttrList(); @@ -1948,10 +1949,6 @@ void ScXMLExport::_ExportStyles( sal_Bool bUsed ) if (pSharedData->HasShapes()) { GetShapeExport()->ExportGraphicDefaults(); -/* xInterface = xMultiServiceFactory->createInstance(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.Defaults"))); - uno::Reference <beans::XPropertySet> xDrawProperties(xInterface, uno::UNO_QUERY); - if (xDrawProperties.is()) - aStylesExp.exportDefaultStyle(xDrawProperties, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_SD_GRAPHICS_NAME)), GetShapeExport()->CreateShapePropMapper(*this));*/ } } uno::Reference <style::XStyleFamiliesSupplier> xStyleFamiliesSupplier (GetModel(), uno::UNO_QUERY); @@ -2231,11 +2228,11 @@ void ScXMLExport::_ExportAutoStyles() if (!GetModel().is()) return; - uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( GetModel(), uno::UNO_QUERY ); + Reference <sheet::XSpreadsheetDocument> xSpreadDoc( GetModel(), uno::UNO_QUERY ); if (!xSpreadDoc.is()) return; - uno::Reference<container::XIndexAccess> xIndex( xSpreadDoc->getSheets(), uno::UNO_QUERY ); + Reference<container::XIndexAccess> xIndex( xSpreadDoc->getSheets(), uno::UNO_QUERY ); if (!xIndex.is()) return; @@ -2272,8 +2269,8 @@ void ScXMLExport::_ExportAutoStyles() bool bCopySheet = pDoc->IsStreamValid( static_cast<SCTAB>(nTable) ); if (bCopySheet) { - uno::Reference <sheet::XSpreadsheet> xTable(xIndex->getByIndex(nTable), uno::UNO_QUERY); - uno::Reference <beans::XPropertySet> xProperties( + Reference <sheet::XSpreadsheet> xTable(xIndex->getByIndex(nTable), uno::UNO_QUERY); + Reference <beans::XPropertySet> xProperties( xTable->getCellByPosition( aPos.Col(), aPos.Row() ), uno::UNO_QUERY ); AddStyleFromCells(xProperties, xTable, nTable, &aCellIter->maName); @@ -2292,9 +2289,9 @@ void ScXMLExport::_ExportAutoStyles() bool bCopySheet = pDoc->IsStreamValid( static_cast<SCTAB>(nTable) ); if (bCopySheet) { - uno::Reference<table::XColumnRowRange> xColumnRowRange(xIndex->getByIndex(nTable), uno::UNO_QUERY); - uno::Reference<table::XTableColumns> xTableColumns(xColumnRowRange->getColumns()); - uno::Reference<beans::XPropertySet> xColumnProperties(xTableColumns->getByIndex( aPos.Col() ), uno::UNO_QUERY); + Reference<table::XColumnRowRange> xColumnRowRange(xIndex->getByIndex(nTable), uno::UNO_QUERY); + Reference<table::XTableColumns> xTableColumns(xColumnRowRange->getColumns()); + Reference<beans::XPropertySet> xColumnProperties(xTableColumns->getByIndex( aPos.Col() ), uno::UNO_QUERY); sal_Int32 nIndex(-1); sal_Bool bIsVisible(sal_True); @@ -2314,9 +2311,9 @@ void ScXMLExport::_ExportAutoStyles() bool bCopySheet = pDoc->IsStreamValid( static_cast<SCTAB>(nTable) ); if (bCopySheet) { - uno::Reference<table::XColumnRowRange> xColumnRowRange(xIndex->getByIndex(nTable), uno::UNO_QUERY); - uno::Reference<table::XTableRows> xTableRows(xColumnRowRange->getRows()); - uno::Reference<beans::XPropertySet> xRowProperties(xTableRows->getByIndex( aPos.Row() ), uno::UNO_QUERY); + Reference<table::XColumnRowRange> xColumnRowRange(xIndex->getByIndex(nTable), uno::UNO_QUERY); + Reference<table::XTableRows> xTableRows(xColumnRowRange->getRows()); + Reference<beans::XPropertySet> xRowProperties(xTableRows->getByIndex( aPos.Row() ), uno::UNO_QUERY); sal_Int32 nIndex(-1); AddStyleFromRow( xRowProperties, &aRowIter->maName, nIndex ); @@ -2336,7 +2333,7 @@ void ScXMLExport::_ExportAutoStyles() if (bCopySheet) { //! separate method AddStyleFromTable needed? - uno::Reference<beans::XPropertySet> xTableProperties(xIndex->getByIndex(nTable), uno::UNO_QUERY); + Reference<beans::XPropertySet> xTableProperties(xIndex->getByIndex(nTable), uno::UNO_QUERY); if (xTableProperties.is()) { std::vector<XMLPropertyState> xPropStates(xTableStylesExportPropertySetMapper->Filter(xTableProperties)); @@ -2372,7 +2369,7 @@ void ScXMLExport::_ExportAutoStyles() { SdrCaptionObj* pDrawObj = pNote->GetOrCreateCaption( aPos ); // all uno shapes are created anyway in CollectSharedData - uno::Reference<beans::XPropertySet> xShapeProperties( pDrawObj->getUnoShape(), uno::UNO_QUERY ); + Reference<beans::XPropertySet> xShapeProperties( pDrawObj->getUnoShape(), uno::UNO_QUERY ); if (xShapeProperties.is()) { if ( aNoteIter->maStyleName.getLength() ) @@ -2400,7 +2397,6 @@ void ScXMLExport::_ExportAutoStyles() // note paragraph styles - //UniReference<SvXMLExportPropertyMapper> xParaPropMapper = XMLTextParagraphExport::CreateParaExtPropMapper( *this ); UniReference<SvXMLExportPropertyMapper> xParaPropMapper = GetTextParagraphExport()->GetParagraphPropertyMapper(); const std::vector<ScTextStyleEntry>& rNoteParaEntries = pSheetData->GetNoteParaStyles(); @@ -2418,8 +2414,8 @@ void ScXMLExport::_ExportAutoStyles() if (pNote) { SdrCaptionObj* pDrawObj = pNote->GetOrCreateCaption( aPos ); - uno::Reference<container::XEnumerationAccess> xCellText(pDrawObj->getUnoShape(), uno::UNO_QUERY); - uno::Reference<beans::XPropertySet> xParaProp( + Reference<container::XEnumerationAccess> xCellText(pDrawObj->getUnoShape(), uno::UNO_QUERY); + Reference<beans::XPropertySet> xParaProp( lcl_GetEnumerated( xCellText, aNoteParaIter->maSelection.nStartPara ), uno::UNO_QUERY ); if ( xParaProp.is() ) { @@ -2453,8 +2449,8 @@ void ScXMLExport::_ExportAutoStyles() if (pNote) { SdrCaptionObj* pDrawObj = pNote->GetOrCreateCaption( aPos ); - uno::Reference<text::XSimpleText> xCellText(pDrawObj->getUnoShape(), uno::UNO_QUERY); - uno::Reference<beans::XPropertySet> xCursorProp(xCellText->createTextCursor(), uno::UNO_QUERY); + Reference<text::XSimpleText> xCellText(pDrawObj->getUnoShape(), uno::UNO_QUERY); + Reference<beans::XPropertySet> xCursorProp(xCellText->createTextCursor(), uno::UNO_QUERY); ScDrawTextCursor* pCursor = ScDrawTextCursor::getImplementation( xCursorProp ); if (pCursor) { @@ -2473,8 +2469,6 @@ void ScXMLExport::_ExportAutoStyles() // stored text styles - //UniReference<SvXMLExportPropertyMapper> xTextPropMapper = XMLTextParagraphExport::CreateCharExtPropMapper( *this ); - const std::vector<ScTextStyleEntry>& rTextEntries = pSheetData->GetTextStyles(); std::vector<ScTextStyleEntry>::const_iterator aTextIter = rTextEntries.begin(); std::vector<ScTextStyleEntry>::const_iterator aTextEnd = rTextEntries.end(); @@ -2488,9 +2482,9 @@ void ScXMLExport::_ExportAutoStyles() //! separate method AddStyleFromText needed? //! cache sheet object - uno::Reference<table::XCellRange> xCellRange(xIndex->getByIndex(nTable), uno::UNO_QUERY); - uno::Reference<text::XSimpleText> xCellText(xCellRange->getCellByPosition(aPos.Col(), aPos.Row()), uno::UNO_QUERY); - uno::Reference<beans::XPropertySet> xCursorProp(xCellText->createTextCursor(), uno::UNO_QUERY); + Reference<table::XCellRange> xCellRange(xIndex->getByIndex(nTable), uno::UNO_QUERY); + Reference<text::XSimpleText> xCellText(xCellRange->getCellByPosition(aPos.Col(), aPos.Row()), uno::UNO_QUERY); + Reference<beans::XPropertySet> xCursorProp(xCellText->createTextCursor(), uno::UNO_QUERY); ScCellTextCursor* pCursor = ScCellTextCursor::getImplementation( xCursorProp ); if (pCursor) { @@ -2515,176 +2509,169 @@ void ScXMLExport::_ExportAutoStyles() sal_Int32 nShapesCount(0); sal_Int32 nCellCount(pDoc ? pDoc->GetCellCount() : 0); CollectSharedData(nTableCount, nShapesCount, nCellCount); - //DBG_ERROR("no shared data setted"); } sal_Int32 nTableCount(xIndex->getCount()); pCellStyles->AddNewTable(nTableCount - 1); CollectShapesAutoStyles(nTableCount); - for (sal_Int32 nTable = 0; nTable < nTableCount; ++nTable) + for (sal_Int32 nTable = 0; nTable < nTableCount; ++nTable, IncrementProgressBar(sal_False)) { bool bUseStream = pSheetData && pDoc && pDoc->IsStreamValid((SCTAB)nTable) && pSheetData->HasStreamPos(nTable) && xSourceStream.is(); - uno::Reference <sheet::XSpreadsheet> xTable(xIndex->getByIndex(nTable), uno::UNO_QUERY); - if (xTable.is()) + Reference <sheet::XSpreadsheet> xTable(xIndex->getByIndex(nTable), uno::UNO_QUERY); + if (!xTable.is()) + continue; + + // table styles array must be complete, including copied tables - Add should find the stored style + Reference<beans::XPropertySet> xTableProperties(xTable, uno::UNO_QUERY); + if (xTableProperties.is()) { - // table styles array must be complete, including copied tables - Add should find the stored style - uno::Reference<beans::XPropertySet> xTableProperties(xTable, uno::UNO_QUERY); - if (xTableProperties.is()) + std::vector<XMLPropertyState> xPropStates(xTableStylesExportPropertySetMapper->Filter(xTableProperties)); + if(xPropStates.size()) { - std::vector<XMLPropertyState> xPropStates(xTableStylesExportPropertySetMapper->Filter(xTableProperties)); - if(xPropStates.size()) - { - rtl::OUString sParent; - rtl::OUString sName; - GetAutoStylePool()->Add(sName, XML_STYLE_FAMILY_TABLE_TABLE, sParent, xPropStates); - aTableStyles.push_back(sName); - } + rtl::OUString sParent; + rtl::OUString sName; + GetAutoStylePool()->Add(sName, XML_STYLE_FAMILY_TABLE_TABLE, sParent, xPropStates); + aTableStyles.push_back(sName); } } + + if (bUseStream) + continue; + // collect other auto-styles only for non-copied sheets - if (xTable.is() && !bUseStream) + Reference<sheet::XUniqueCellFormatRangesSupplier> xCellFormatRanges ( xTable, uno::UNO_QUERY ); + if ( xCellFormatRanges.is() ) { - uno::Reference<sheet::XUniqueCellFormatRangesSupplier> xCellFormatRanges ( xTable, uno::UNO_QUERY ); - if ( xCellFormatRanges.is() ) + Reference<container::XIndexAccess> xFormatRangesIndex(xCellFormatRanges->getUniqueCellFormatRanges()); + if (xFormatRangesIndex.is()) { - uno::Reference<container::XIndexAccess> xFormatRangesIndex(xCellFormatRanges->getUniqueCellFormatRanges()); - if (xFormatRangesIndex.is()) + sal_Int32 nFormatRangesCount(xFormatRangesIndex->getCount()); + GetProgressBarHelper()->ChangeReference(GetProgressBarHelper()->GetReference() + nFormatRangesCount); + for (sal_Int32 nFormatRange = 0; nFormatRange < nFormatRangesCount; ++nFormatRange) { - sal_Int32 nFormatRangesCount(xFormatRangesIndex->getCount()); - GetProgressBarHelper()->ChangeReference(GetProgressBarHelper()->GetReference() + nFormatRangesCount); - for (sal_Int32 nFormatRange = 0; nFormatRange < nFormatRangesCount; ++nFormatRange) + Reference< sheet::XSheetCellRanges> xCellRanges(xFormatRangesIndex->getByIndex(nFormatRange), uno::UNO_QUERY); + if (xCellRanges.is()) { - uno::Reference< sheet::XSheetCellRanges> xCellRanges(xFormatRangesIndex->getByIndex(nFormatRange), uno::UNO_QUERY); - if (xCellRanges.is()) + Reference <beans::XPropertySet> xProperties (xCellRanges, uno::UNO_QUERY); + if (xProperties.is()) { - uno::Reference <beans::XPropertySet> xProperties (xCellRanges, uno::UNO_QUERY); - if (xProperties.is()) - { - AddStyleFromCells(xProperties, xTable, nTable, NULL); - IncrementProgressBar(sal_False); - } + AddStyleFromCells(xProperties, xTable, nTable, NULL); + IncrementProgressBar(sal_False); } } } } - uno::Reference<table::XColumnRowRange> xColumnRowRange (xTable, uno::UNO_QUERY); - if (xColumnRowRange.is()) + } + Reference<table::XColumnRowRange> xColumnRowRange (xTable, uno::UNO_QUERY); + if (xColumnRowRange.is()) + { + if (pDoc) { - if (pDoc) + pDoc->SyncColRowFlags(); + Reference<table::XTableColumns> xTableColumns(xColumnRowRange->getColumns()); + if (xTableColumns.is()) { - pDoc->SyncColRowFlags(); - uno::Reference<table::XTableColumns> xTableColumns(xColumnRowRange->getColumns()); - if (xTableColumns.is()) + sal_Int32 nColumns(pDoc->GetLastChangedCol(sal::static_int_cast<SCTAB>(nTable))); + pSharedData->SetLastColumn(nTable, nColumns); + table::CellRangeAddress aCellAddress(GetEndAddress(xTable, nTable)); + if (aCellAddress.EndColumn > nColumns) { - sal_Int32 nColumns(pDoc->GetLastChangedCol(sal::static_int_cast<SCTAB>(nTable))); - pSharedData->SetLastColumn(nTable, nColumns); - table::CellRangeAddress aCellAddress(GetEndAddress(xTable, nTable)); - if (aCellAddress.EndColumn > nColumns) - { - ++nColumns; - pColumnStyles->AddNewTable(nTable, aCellAddress.EndColumn); - } -// else if (nColumns < MAXCOL) -// pColumnStyles->AddNewTable(nTable, ++nColumns); - else - pColumnStyles->AddNewTable(nTable, nColumns); - sal_Int32 nColumn = 0; - while (/*nColumn <= nColumns && */nColumn <= MAXCOL) - { - sal_Int32 nIndex(-1); - sal_Bool bIsVisible(sal_True); - uno::Reference <beans::XPropertySet> xColumnProperties(xTableColumns->getByIndex(nColumn), uno::UNO_QUERY); - if (xColumnProperties.is()) - { - AddStyleFromColumn( xColumnProperties, NULL, nIndex, bIsVisible ); - //if(xPropStates.size()) - pColumnStyles->AddFieldStyleName(nTable, nColumn, nIndex, bIsVisible); - } - sal_Int32 nOld(nColumn); - nColumn = pDoc->GetNextDifferentChangedCol(sal::static_int_cast<SCTAB>(nTable), static_cast<SCCOL>(nColumn)); - for (sal_Int32 i = nOld + 1; i < nColumn; ++i) - pColumnStyles->AddFieldStyleName(nTable, i, nIndex, bIsVisible); - } - if (aCellAddress.EndColumn > nColumns) - { - sal_Bool bIsVisible(sal_True); - sal_Int32 nIndex(pColumnStyles->GetStyleNameIndex(nTable, nColumns, bIsVisible)); - for (sal_Int32 i = nColumns + 1; i <= aCellAddress.EndColumn; ++i) - pColumnStyles->AddFieldStyleName(nTable, i, nIndex, bIsVisible); - } + ++nColumns; + pColumnStyles->AddNewTable(nTable, aCellAddress.EndColumn); } - uno::Reference<table::XTableRows> xTableRows(xColumnRowRange->getRows()); - if (xTableRows.is()) + else + pColumnStyles->AddNewTable(nTable, nColumns); + sal_Int32 nColumn = 0; + while (nColumn <= MAXCOL) { - sal_Int32 nRows(pDoc->GetLastChangedRow(sal::static_int_cast<SCTAB>(nTable))); - pSharedData->SetLastRow(nTable, nRows); - table::CellRangeAddress aCellAddress(GetEndAddress(xTable, nTable)); - if (aCellAddress.EndRow > nRows) - { - ++nRows; - pRowStyles->AddNewTable(nTable, aCellAddress.EndRow); - } -// else if (nRows < MAXROW) -// pRowStyles->AddNewTable(nTable, ++nRows); - else - pRowStyles->AddNewTable(nTable, nRows); - sal_Int32 nRow = 0; - while (nRow <= nRows && nRow <= MAXROW) + sal_Int32 nIndex(-1); + sal_Bool bIsVisible(sal_True); + Reference <beans::XPropertySet> xColumnProperties(xTableColumns->getByIndex(nColumn), uno::UNO_QUERY); + if (xColumnProperties.is()) { - sal_Int32 nIndex = 0; - uno::Reference <beans::XPropertySet> xRowProperties(xTableRows->getByIndex(nRow), uno::UNO_QUERY); - if(xRowProperties.is()) - { - AddStyleFromRow( xRowProperties, NULL, nIndex ); - //if(xPropStates.size()) - pRowStyles->AddFieldStyleName(nTable, nRow, nIndex); - } - sal_Int32 nOld(nRow); - nRow = pDoc->GetNextDifferentChangedRow(sal::static_int_cast<SCTAB>(nTable), static_cast<SCROW>(nRow), false); - if (nRow > nOld + 1) - pRowStyles->AddFieldStyleName(nTable, nOld + 1, nIndex, nRow - 1); + AddStyleFromColumn( xColumnProperties, NULL, nIndex, bIsVisible ); + pColumnStyles->AddFieldStyleName(nTable, nColumn, nIndex, bIsVisible); } - if (aCellAddress.EndRow > nRows) + sal_Int32 nOld(nColumn); + nColumn = pDoc->GetNextDifferentChangedCol(sal::static_int_cast<SCTAB>(nTable), static_cast<SCCOL>(nColumn)); + for (sal_Int32 i = nOld + 1; i < nColumn; ++i) + pColumnStyles->AddFieldStyleName(nTable, i, nIndex, bIsVisible); + } + if (aCellAddress.EndColumn > nColumns) + { + sal_Bool bIsVisible(sal_True); + sal_Int32 nIndex(pColumnStyles->GetStyleNameIndex(nTable, nColumns, bIsVisible)); + for (sal_Int32 i = nColumns + 1; i <= aCellAddress.EndColumn; ++i) + pColumnStyles->AddFieldStyleName(nTable, i, nIndex, bIsVisible); + } + } + Reference<table::XTableRows> xTableRows(xColumnRowRange->getRows()); + if (xTableRows.is()) + { + sal_Int32 nRows(pDoc->GetLastChangedRow(sal::static_int_cast<SCTAB>(nTable))); + pSharedData->SetLastRow(nTable, nRows); + table::CellRangeAddress aCellAddress(GetEndAddress(xTable, nTable)); + if (aCellAddress.EndRow > nRows) + { + ++nRows; + pRowStyles->AddNewTable(nTable, aCellAddress.EndRow); + } + else + pRowStyles->AddNewTable(nTable, nRows); + sal_Int32 nRow = 0; + while (nRow <= nRows && nRow <= MAXROW) + { + sal_Int32 nIndex = 0; + Reference <beans::XPropertySet> xRowProperties(xTableRows->getByIndex(nRow), uno::UNO_QUERY); + if(xRowProperties.is()) { - sal_Int32 nIndex(pRowStyles->GetStyleNameIndex(nTable, nRows)); - pRowStyles->AddFieldStyleName(nTable, nRows + 1, nIndex, aCellAddress.EndRow); + AddStyleFromRow( xRowProperties, NULL, nIndex ); + pRowStyles->AddFieldStyleName(nTable, nRow, nIndex); } + sal_Int32 nOld(nRow); + nRow = pDoc->GetNextDifferentChangedRow(sal::static_int_cast<SCTAB>(nTable), static_cast<SCROW>(nRow), false); + if (nRow > nOld + 1) + pRowStyles->AddFieldStyleName(nTable, nOld + 1, nIndex, nRow - 1); + } + if (aCellAddress.EndRow > nRows) + { + sal_Int32 nIndex(pRowStyles->GetStyleNameIndex(nTable, nRows)); + pRowStyles->AddFieldStyleName(nTable, nRows + 1, nIndex, aCellAddress.EndRow); } } } - uno::Reference<sheet::XCellRangesQuery> xCellRangesQuery (xTable, uno::UNO_QUERY); - if (xCellRangesQuery.is()) + } + Reference<sheet::XCellRangesQuery> xCellRangesQuery (xTable, uno::UNO_QUERY); + if (xCellRangesQuery.is()) + { + Reference<sheet::XSheetCellRanges> xSheetCellRanges(xCellRangesQuery->queryContentCells(sheet::CellFlags::FORMATTED)); + Reference<sheet::XSheetOperation> xSheetOperation(xSheetCellRanges, uno::UNO_QUERY); + if (xSheetCellRanges.is() && xSheetOperation.is()) { - uno::Reference<sheet::XSheetCellRanges> xSheetCellRanges(xCellRangesQuery->queryContentCells(sheet::CellFlags::FORMATTED)); - uno::Reference<sheet::XSheetOperation> xSheetOperation(xSheetCellRanges, uno::UNO_QUERY); - if (xSheetCellRanges.is() && xSheetOperation.is()) + sal_uInt32 nCount(sal_uInt32(xSheetOperation->computeFunction(sheet::GeneralFunction_COUNT))); + Reference<container::XEnumerationAccess> xCellsAccess(xSheetCellRanges->getCells()); + if (xCellsAccess.is()) { - sal_uInt32 nCount(sal_uInt32(xSheetOperation->computeFunction(sheet::GeneralFunction_COUNT))); - uno::Reference<container::XEnumerationAccess> xCellsAccess(xSheetCellRanges->getCells()); - if (xCellsAccess.is()) + GetProgressBarHelper()->ChangeReference(GetProgressBarHelper()->GetReference() + nCount); + Reference<container::XEnumeration> xCells(xCellsAccess->createEnumeration()); + if (xCells.is()) { - GetProgressBarHelper()->ChangeReference(GetProgressBarHelper()->GetReference() + nCount); - uno::Reference<container::XEnumeration> xCells(xCellsAccess->createEnumeration()); - if (xCells.is()) + sal_uInt32 nCount2(0); + while (xCells->hasMoreElements()) { - sal_uInt32 nCount2(0); - while (xCells->hasMoreElements()) - { - uno::Reference<text::XText> xText(xCells->nextElement(), uno::UNO_QUERY); - if (xText.is()) - GetTextParagraphExport()->collectTextAutoStyles(xText, sal_False, sal_False); - ++nCount2; - IncrementProgressBar(sal_False); - } - if(nCount2 > nCount) - GetProgressBarHelper()->SetReference(GetProgressBarHelper()->GetReference() + nCount2 - nCount); + Reference<text::XText> xText(xCells->nextElement(), uno::UNO_QUERY); + if (xText.is()) + GetTextParagraphExport()->collectTextAutoStyles(xText, sal_False, sal_False); + ++nCount2; + IncrementProgressBar(sal_False); } + if(nCount2 > nCount) + GetProgressBarHelper()->SetReference(GetProgressBarHelper()->GetReference() + nCount2 - nCount); } } } } - IncrementProgressBar(sal_False); } pChangeTrackingExportHelper->CollectAutoStyles(); @@ -2840,44 +2827,6 @@ sal_Bool ScXMLExport::IsMatrix (const ScAddress& aCell, } return sal_False; - -/* uno::Reference <sheet::XArrayFormulaRange> xArrayFormulaRange (xCell, uno::UNO_QUERY); - if (xArrayFormulaRange.is()) - { - rtl::OUString sArrayFormula(xArrayFormulaRange->getArrayFormula()); - if (sArrayFormula.getLength()) - { - uno::Reference<sheet::XSheetCellRange> xMatrixSheetCellRange (xCell, uno::UNO_QUERY); - if (xMatrixSheetCellRange.is()) - { - uno::Reference<sheet::XSheetCellCursor> xMatrixSheetCursor(xTable->createCursorByRange(xMatrixSheetCellRange)); - if (xMatrixSheetCursor.is()) - { - xMatrixSheetCursor->collapseToCurrentArray(); - uno::Reference<sheet::XCellRangeAddressable> xMatrixCellAddress (xMatrixSheetCursor, uno::UNO_QUERY); - if (xMatrixCellAddress.is()) - { - aCellAddress = xMatrixCellAddress->getRangeAddress(); - if ((aCellAddress.StartColumn == nCol && aCellAddress.StartRow == nRow) && - (aCellAddress.EndColumn > nCol || aCellAddress.EndRow > nRow)) - { - bIsFirst = sal_True; - return sal_True; - } - else if (aCellAddress.StartColumn != nCol || aCellAddress.StartRow != nRow || - aCellAddress.EndColumn != nCol || aCellAddress.EndRow != nRow) - return sal_True; - else - { - bIsFirst = sal_True; - return sal_True; - } - } - } - } - } - } - return sal_False;*/ } sal_Bool ScXMLExport::GetCellText (ScMyCell& rMyCell, const ScAddress& aPos) const @@ -2886,17 +2835,9 @@ sal_Bool ScXMLExport::GetCellText (ScMyCell& rMyCell, const ScAddress& aPos) con return sal_True; else { -/* if (!rMyCell.bHasXText) - { - rMyCell.xText.set(xCurrentTableCellRange->getCellByPosition(rMyCell.aCellAddress.Column, rMyCell.aCellAddress.Row), uno::UNO_QUERY); - rMyCell.bHasXText = sal_True; - }*/ -// if (rMyCell.xText.is()) -// { rMyCell.sStringValue = ScCellObj::GetOutputString_Impl(pDoc, aPos); rMyCell.bHasStringValue = sal_True; return sal_True; -// } } } @@ -3190,15 +3131,6 @@ void ScXMLExport::ExportShape(const uno::Reference < drawing::XShape >& xShape, //BM } //BM } -/* SchMemChart* pMemChart = pDoc->FindChartData(sName); - if (pMemChart && pMemChart->GetSeriesAddresses().getLength()) - { - bMemChart = sal_True; - rtl::OUString sRanges(pMemChart->getXMLStringForChartRange()); - if (sRanges.getLength()) - AddAttribute(XML_NAMESPACE_DRAW, XML_NOTIFY_ON_UPDATE_OF_RANGES, sRanges); - GetShapeExport()->exportShape(xShape, SEF_EXPORT_NO_CHART_DATA | SEF_DEFAULT, pPoint); - }*/ } } } @@ -3258,29 +3190,15 @@ void ScXMLExport::WriteShapes(const ScMyCell& rMyCell) aPoint.X = 2 * aItr->xShape->getPosition().X + aItr->xShape->getSize().Width - aPoint.X; if ( !aItr->xShape->getShapeType().equals(sCaptionShape) ) { - awt::Point aEndPoint; Rectangle aEndRec(pDoc->GetMMRect(aItr->aEndAddress.Col(), aItr->aEndAddress.Row(), aItr->aEndAddress.Col(), aItr->aEndAddress.Row(), aItr->aEndAddress.Tab())); rtl::OUString sEndAddress; ScRangeStringConverter::GetStringFromAddress(sEndAddress, aItr->aEndAddress, pDoc, FormulaGrammar::CONV_OOO); AddAttribute(XML_NAMESPACE_TABLE, XML_END_CELL_ADDRESS, sEndAddress); - if (bNegativePage) - aEndPoint.X = -aEndRec.Right(); - else - aEndPoint.X = aEndRec.Left(); - aEndPoint.Y = aEndRec.Top(); - awt::Point aStartPoint(aItr->xShape->getPosition()); - awt::Size aSize(aItr->xShape->getSize()); - sal_Int32 nEndX; - if (bNegativePage) - nEndX = -aStartPoint.X - aEndPoint.X; - else - nEndX = aStartPoint.X + aSize.Width - aEndPoint.X; - sal_Int32 nEndY(aStartPoint.Y + aSize.Height - aEndPoint.Y); rtl::OUStringBuffer sBuffer; - GetMM100UnitConverter().convertMeasure(sBuffer, nEndX); + GetMM100UnitConverter().convertMeasure(sBuffer, aItr->nEndX); AddAttribute(XML_NAMESPACE_TABLE, XML_END_X, sBuffer.makeStringAndClear()); - GetMM100UnitConverter().convertMeasure(sBuffer, nEndY); + GetMM100UnitConverter().convertMeasure(sBuffer, aItr->nEndY); AddAttribute(XML_NAMESPACE_TABLE, XML_END_Y, sBuffer.makeStringAndClear()); } ExportShape(aItr->xShape, &aPoint); @@ -3394,46 +3312,6 @@ void ScXMLExport::WriteAnnotation(ScMyCell& rMyCell) { if( rMyCell.bHasAnnotation && rMyCell.xAnnotation.is()) { -/* rtl::OUString sAuthor(rMyCell.xAnnotation->getAuthor()); - if (sAuthor.getLength()) - { - SvXMLElementExport aCreatorElem( *this, XML_NAMESPACE_DC, - XML_CREATOR, sal_True, - sal_False ); - rtl::OUString sAuthor(sAuthor); - Characters(sAuthor); - } - - String aDate(rMyCell.xAnnotation->getDate()); - if (pDoc) - { - SvNumberFormatter* pNumForm(pDoc->GetFormatTable()); - double fDate; - sal_uInt32 nfIndex = pNumForm->GetFormatIndex(NF_DATE_SYS_DDMMYYYY, LANGUAGE_SYSTEM); - if (pNumForm->IsNumberFormat(aDate, nfIndex, fDate)) - { - rtl::OUStringBuffer sBuf; - GetMM100UnitConverter().convertDateTime(sBuf, fDate); - SvXMLElementExport aDateElem( *this, XML_NAMESPACE_DC, - XML_DATE, sal_True, - sal_False ); - Characters(sBuf.makeStringAndClear()); - } - else - { - SvXMLElementExport aDateElem( *this, XML_NAMESPACE_META, - XML_DATE_STRING, sal_True, - sal_False ); - Characters(rtl::OUString(aDate)); - } - } - else - { - SvXMLElementExport aDateElem( *this, XML_NAMESPACE_META, - XML_DATE_STRING, sal_True, - sal_False ); - Characters(rtl::OUString(aDate)); - }*/ if (rMyCell.xAnnotation->getIsVisible()) AddAttribute(XML_NAMESPACE_OFFICE, XML_DISPLAY, XML_TRUE); diff --git a/sc/source/filter/xml/xmlexprt.hxx b/sc/source/filter/xml/xmlexprt.hxx index 07b494dce2af..43b32949898e 100644 --- a/sc/source/filter/xml/xmlexprt.hxx +++ b/sc/source/filter/xml/xmlexprt.hxx @@ -65,6 +65,7 @@ class ScChartListener; class SfxItemPool; class ScAddress; class ScBaseCell; +class ScXMLCachedRowAttrAccess; typedef std::vector< com::sun::star::uno::Reference < com::sun::star::drawing::XShapes > > ScMyXShapesVec; @@ -160,13 +161,14 @@ class ScXMLExport : public SvXMLExport void ExportFormatRanges(const sal_Int32 nStartCol, const sal_Int32 nStartRow, const sal_Int32 nEndCol, const sal_Int32 nEndRow, const sal_Int32 nSheet); void WriteRowContent(); - void WriteRowStartTag(sal_Int32 nRow, const sal_Int32 nIndex, const sal_Int8 nFlag, const sal_Int32 nEmptyRows); + void WriteRowStartTag(sal_Int32 nRow, const sal_Int32 nIndex, const sal_Int32 nEmptyRows, bool bHidden, bool bFiltered); void OpenHeaderRows(); void CloseHeaderRows(); - void OpenNewRow(const sal_Int32 nIndex, const sal_Int8 nFlag, const sal_Int32 nStartRow, const sal_Int32 nEmptyRows); - void OpenAndCloseRow(const sal_Int32 nIndex, const sal_Int8 nFlag, - const sal_Int32 nStartRow, const sal_Int32 nEmptyRows); - void OpenRow(const sal_Int32 nTable, const sal_Int32 nStartRow, const sal_Int32 nRepeatRow); + void OpenNewRow(const sal_Int32 nIndex, const sal_Int32 nStartRow, const sal_Int32 nEmptyRows, + bool bHidden, bool bFiltered); + void OpenAndCloseRow(const sal_Int32 nIndex, const sal_Int32 nStartRow, const sal_Int32 nEmptyRows, + bool bHidden, bool bFiltered); + void OpenRow(const sal_Int32 nTable, const sal_Int32 nStartRow, const sal_Int32 nRepeatRow, ScXMLCachedRowAttrAccess& rRowAttr); void CloseRow(const sal_Int32 nRow); void GetColumnRowHeader(sal_Bool& bHasColumnHeader, com::sun::star::table::CellRangeAddress& aColumnHeaderRange, sal_Bool& bHasRowHeader, com::sun::star::table::CellRangeAddress& aRowHeaderRange, diff --git a/sc/source/filter/xml/xmlimprt.cxx b/sc/source/filter/xml/xmlimprt.cxx index b14b71f72540..6acaf645d6e0 100644 --- a/sc/source/filter/xml/xmlimprt.cxx +++ b/sc/source/filter/xml/xmlimprt.cxx @@ -209,7 +209,7 @@ uno::Reference< uno::XInterface > SAL_CALL ScXMLImport_Settings_createInstance( const SvXMLTokenMap& ScXMLImport::GetTableRowCellAttrTokenMap() { - static __FAR_DATA SvXMLTokenMapEntry aTableRowCellAttrTokenMap[] = + static SvXMLTokenMapEntry aTableRowCellAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_STYLE_NAME, XML_TOK_TABLE_ROW_CELL_ATTR_STYLE_NAME }, { XML_NAMESPACE_TABLE, XML_CONTENT_VALIDATION_NAME, XML_TOK_TABLE_ROW_CELL_ATTR_CONTENT_VALIDATION_NAME }, @@ -428,7 +428,7 @@ const SvXMLTokenMap& ScXMLImport::GetDocElemTokenMap() { if( !pDocElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDocTokenMap[] = + static SvXMLTokenMapEntry aDocTokenMap[] = { { XML_NAMESPACE_OFFICE, XML_FONT_FACE_DECLS, XML_TOK_DOC_FONTDECLS }, { XML_NAMESPACE_OFFICE, XML_STYLES, XML_TOK_DOC_STYLES }, @@ -453,7 +453,7 @@ const SvXMLTokenMap& ScXMLImport::GetBodyElemTokenMap() { if( !pBodyElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aBodyTokenMap[] = + static SvXMLTokenMapEntry aBodyTokenMap[] = { { XML_NAMESPACE_TABLE, XML_TRACKED_CHANGES, XML_TOK_BODY_TRACKED_CHANGES }, { XML_NAMESPACE_TABLE, XML_CALCULATION_SETTINGS, XML_TOK_BODY_CALCULATION_SETTINGS }, @@ -479,7 +479,7 @@ const SvXMLTokenMap& ScXMLImport::GetContentValidationsElemTokenMap() { if( !pContentValidationsElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aContentValidationsElemTokenMap[] = + static SvXMLTokenMapEntry aContentValidationsElemTokenMap[] = { { XML_NAMESPACE_TABLE, XML_CONTENT_VALIDATION, XML_TOK_CONTENT_VALIDATION }, XML_TOKEN_MAP_END @@ -495,7 +495,7 @@ const SvXMLTokenMap& ScXMLImport::GetContentValidationElemTokenMap() { if( !pContentValidationElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aContentValidationElemTokenMap[] = + static SvXMLTokenMapEntry aContentValidationElemTokenMap[] = { { XML_NAMESPACE_TABLE, XML_HELP_MESSAGE, XML_TOK_CONTENT_VALIDATION_ELEM_HELP_MESSAGE }, { XML_NAMESPACE_TABLE, XML_ERROR_MESSAGE, XML_TOK_CONTENT_VALIDATION_ELEM_ERROR_MESSAGE }, @@ -514,7 +514,7 @@ const SvXMLTokenMap& ScXMLImport::GetContentValidationAttrTokenMap() { if( !pContentValidationAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aContentValidationAttrTokenMap[] = + static SvXMLTokenMapEntry aContentValidationAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_CONTENT_VALIDATION_NAME }, { XML_NAMESPACE_TABLE, XML_CONDITION, XML_TOK_CONTENT_VALIDATION_CONDITION }, @@ -534,7 +534,7 @@ const SvXMLTokenMap& ScXMLImport::GetContentValidationMessageElemTokenMap() { if( !pContentValidationMessageElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aContentValidationMessageElemTokenMap[] = + static SvXMLTokenMapEntry aContentValidationMessageElemTokenMap[] = { { XML_NAMESPACE_TEXT, XML_P, XML_TOK_P }, XML_TOKEN_MAP_END @@ -550,7 +550,7 @@ const SvXMLTokenMap& ScXMLImport::GetContentValidationHelpMessageAttrTokenMap() { if( !pContentValidationHelpMessageAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aContentValidationHelpMessageAttrTokenMap[] = + static SvXMLTokenMapEntry aContentValidationHelpMessageAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_TITLE, XML_TOK_HELP_MESSAGE_ATTR_TITLE }, { XML_NAMESPACE_TABLE, XML_DISPLAY, XML_TOK_HELP_MESSAGE_ATTR_DISPLAY }, @@ -567,7 +567,7 @@ const SvXMLTokenMap& ScXMLImport::GetContentValidationErrorMessageAttrTokenMap() { if( !pContentValidationErrorMessageAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aContentValidationErrorMessageAttrTokenMap[] = + static SvXMLTokenMapEntry aContentValidationErrorMessageAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_TITLE, XML_TOK_ERROR_MESSAGE_ATTR_TITLE }, { XML_NAMESPACE_TABLE, XML_DISPLAY, XML_TOK_ERROR_MESSAGE_ATTR_DISPLAY }, @@ -585,7 +585,7 @@ const SvXMLTokenMap& ScXMLImport::GetContentValidationErrorMacroAttrTokenMap() { if( !pContentValidationErrorMacroAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aContentValidationErrorMacroAttrTokenMap[] = + static SvXMLTokenMapEntry aContentValidationErrorMacroAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_ERROR_MACRO_ATTR_NAME }, { XML_NAMESPACE_TABLE, XML_EXECUTE, XML_TOK_ERROR_MACRO_ATTR_EXECUTE }, @@ -602,7 +602,7 @@ const SvXMLTokenMap& ScXMLImport::GetLabelRangesElemTokenMap() { if( !pLabelRangesElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aLabelRangesElemTokenMap[] = + static SvXMLTokenMapEntry aLabelRangesElemTokenMap[] = { { XML_NAMESPACE_TABLE, XML_LABEL_RANGE, XML_TOK_LABEL_RANGE_ELEM }, XML_TOKEN_MAP_END @@ -618,7 +618,7 @@ const SvXMLTokenMap& ScXMLImport::GetLabelRangeAttrTokenMap() { if( !pLabelRangeAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aLabelRangeAttrTokenMap[] = + static SvXMLTokenMapEntry aLabelRangeAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_LABEL_CELL_RANGE_ADDRESS, XML_TOK_LABEL_RANGE_ATTR_LABEL_RANGE }, { XML_NAMESPACE_TABLE, XML_DATA_CELL_RANGE_ADDRESS, XML_TOK_LABEL_RANGE_ATTR_DATA_RANGE }, @@ -636,7 +636,7 @@ const SvXMLTokenMap& ScXMLImport::GetTableElemTokenMap() { if( !pTableElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aTableTokenMap[] = + static SvXMLTokenMapEntry aTableTokenMap[] = { { XML_NAMESPACE_TABLE, XML_TABLE_COLUMN_GROUP, XML_TOK_TABLE_COL_GROUP }, { XML_NAMESPACE_TABLE, XML_TABLE_HEADER_COLUMNS, XML_TOK_TABLE_HEADER_COLS }, @@ -666,7 +666,7 @@ const SvXMLTokenMap& ScXMLImport::GetTableProtectionAttrTokenMap() { if (!pTableProtectionElemTokenMap) { - static __FAR_DATA SvXMLTokenMapEntry aTableProtectionTokenMap[] = + static SvXMLTokenMapEntry aTableProtectionTokenMap[] = { { XML_NAMESPACE_TABLE, XML_SELECT_PROTECTED_CELLS, XML_TOK_TABLE_SELECT_PROTECTED_CELLS }, { XML_NAMESPACE_TABLE, XML_SELECT_UNPROTECTED_CELLS, XML_TOK_TABLE_SELECT_UNPROTECTED_CELLS }, @@ -682,7 +682,7 @@ const SvXMLTokenMap& ScXMLImport::GetTableRowsElemTokenMap() { if( !pTableRowsElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aTableRowsElemTokenMap[] = + static SvXMLTokenMapEntry aTableRowsElemTokenMap[] = { { XML_NAMESPACE_TABLE, XML_TABLE_ROW_GROUP, XML_TOK_TABLE_ROWS_ROW_GROUP }, { XML_NAMESPACE_TABLE, XML_TABLE_HEADER_ROWS, XML_TOK_TABLE_ROWS_HEADER_ROWS }, @@ -701,7 +701,7 @@ const SvXMLTokenMap& ScXMLImport::GetTableColsElemTokenMap() { if( !pTableColsElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aTableColsElemTokenMap[] = + static SvXMLTokenMapEntry aTableColsElemTokenMap[] = { { XML_NAMESPACE_TABLE, XML_TABLE_COLUMN_GROUP, XML_TOK_TABLE_COLS_COL_GROUP }, { XML_NAMESPACE_TABLE, XML_TABLE_HEADER_COLUMNS, XML_TOK_TABLE_COLS_HEADER_COLS }, @@ -720,7 +720,7 @@ const SvXMLTokenMap& ScXMLImport::GetTableAttrTokenMap() { if( !pTableAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aTableAttrTokenMap[] = + static SvXMLTokenMapEntry aTableAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_TABLE_NAME }, { XML_NAMESPACE_TABLE, XML_STYLE_NAME, XML_TOK_TABLE_STYLE_NAME }, @@ -743,7 +743,7 @@ const SvXMLTokenMap& ScXMLImport::GetTableScenarioAttrTokenMap() { if( !pTableScenarioAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aTableScenarioAttrTokenMap[] = + static SvXMLTokenMapEntry aTableScenarioAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_DISPLAY_BORDER, XML_TOK_TABLE_SCENARIO_ATTR_DISPLAY_BORDER }, { XML_NAMESPACE_TABLE, XML_BORDER_COLOR, XML_TOK_TABLE_SCENARIO_ATTR_BORDER_COLOR }, @@ -767,7 +767,7 @@ const SvXMLTokenMap& ScXMLImport::GetTableColAttrTokenMap() { if( !pTableColAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aTableColAttrTokenMap[] = + static SvXMLTokenMapEntry aTableColAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_STYLE_NAME, XML_TOK_TABLE_COL_ATTR_STYLE_NAME }, { XML_NAMESPACE_TABLE, XML_NUMBER_COLUMNS_REPEATED, XML_TOK_TABLE_COL_ATTR_REPEATED }, @@ -786,7 +786,7 @@ const SvXMLTokenMap& ScXMLImport::GetTableRowElemTokenMap() { if( !pTableRowElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aTableRowTokenMap[] = + static SvXMLTokenMapEntry aTableRowTokenMap[] = { { XML_NAMESPACE_TABLE, XML_TABLE_CELL, XML_TOK_TABLE_ROW_CELL }, { XML_NAMESPACE_TABLE, XML_COVERED_TABLE_CELL, XML_TOK_TABLE_ROW_COVERED_CELL }, @@ -803,7 +803,7 @@ const SvXMLTokenMap& ScXMLImport::GetTableRowAttrTokenMap() { if( !pTableRowAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aTableRowAttrTokenMap[] = + static SvXMLTokenMapEntry aTableRowAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_STYLE_NAME, XML_TOK_TABLE_ROW_ATTR_STYLE_NAME }, { XML_NAMESPACE_TABLE, XML_VISIBILITY, XML_TOK_TABLE_ROW_ATTR_VISIBILITY }, @@ -823,7 +823,7 @@ const SvXMLTokenMap& ScXMLImport::GetTableRowCellElemTokenMap() { if( !pTableRowCellElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aTableRowCellTokenMap[] = + static SvXMLTokenMapEntry aTableRowCellTokenMap[] = { { XML_NAMESPACE_TEXT, XML_P, XML_TOK_TABLE_ROW_CELL_P }, { XML_NAMESPACE_TABLE, XML_SUB_TABLE, XML_TOK_TABLE_ROW_CELL_TABLE }, @@ -843,7 +843,7 @@ const SvXMLTokenMap& ScXMLImport::GetTableAnnotationAttrTokenMap() { if( !pTableAnnotationAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aTableAnnotationAttrTokenMap[] = + static SvXMLTokenMapEntry aTableAnnotationAttrTokenMap[] = { { XML_NAMESPACE_OFFICE, XML_AUTHOR, XML_TOK_TABLE_ANNOTATION_ATTR_AUTHOR }, { XML_NAMESPACE_OFFICE, XML_CREATE_DATE, XML_TOK_TABLE_ANNOTATION_ATTR_CREATE_DATE }, @@ -864,7 +864,7 @@ const SvXMLTokenMap& ScXMLImport::GetDetectiveElemTokenMap() { if( !pDetectiveElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDetectiveElemTokenMap[]= + static SvXMLTokenMapEntry aDetectiveElemTokenMap[]= { { XML_NAMESPACE_TABLE, XML_HIGHLIGHTED_RANGE, XML_TOK_DETECTIVE_ELEM_HIGHLIGHTED }, { XML_NAMESPACE_TABLE, XML_OPERATION, XML_TOK_DETECTIVE_ELEM_OPERATION }, @@ -881,7 +881,7 @@ const SvXMLTokenMap& ScXMLImport::GetDetectiveHighlightedAttrTokenMap() { if( !pDetectiveHighlightedAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDetectiveHighlightedAttrTokenMap[]= + static SvXMLTokenMapEntry aDetectiveHighlightedAttrTokenMap[]= { { XML_NAMESPACE_TABLE, XML_CELL_RANGE_ADDRESS, XML_TOK_DETECTIVE_HIGHLIGHTED_ATTR_CELL_RANGE }, { XML_NAMESPACE_TABLE, XML_DIRECTION, XML_TOK_DETECTIVE_HIGHLIGHTED_ATTR_DIRECTION }, @@ -900,7 +900,7 @@ const SvXMLTokenMap& ScXMLImport::GetDetectiveOperationAttrTokenMap() { if( !pDetectiveOperationAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDetectiveOperationAttrTokenMap[]= + static SvXMLTokenMapEntry aDetectiveOperationAttrTokenMap[]= { { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_DETECTIVE_OPERATION_ATTR_NAME }, { XML_NAMESPACE_TABLE, XML_INDEX, XML_TOK_DETECTIVE_OPERATION_ATTR_INDEX }, @@ -917,7 +917,7 @@ const SvXMLTokenMap& ScXMLImport::GetTableCellRangeSourceAttrTokenMap() { if( !pTableCellRangeSourceAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aTableCellRangeSourceAttrTokenMap[] = + static SvXMLTokenMapEntry aTableCellRangeSourceAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_TABLE_CELL_RANGE_SOURCE_ATTR_NAME }, { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TABLE_CELL_RANGE_SOURCE_ATTR_HREF }, @@ -939,7 +939,7 @@ const SvXMLTokenMap& ScXMLImport::GetNamedExpressionsElemTokenMap() { if( !pNamedExpressionsElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aNamedExpressionsTokenMap[] = + static SvXMLTokenMapEntry aNamedExpressionsTokenMap[] = { { XML_NAMESPACE_TABLE, XML_NAMED_RANGE, XML_TOK_NAMED_EXPRESSIONS_NAMED_RANGE }, { XML_NAMESPACE_TABLE, XML_NAMED_EXPRESSION, XML_TOK_NAMED_EXPRESSIONS_NAMED_EXPRESSION }, @@ -956,7 +956,7 @@ const SvXMLTokenMap& ScXMLImport::GetNamedRangeAttrTokenMap() { if( !pNamedRangeAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aNamedRangeAttrTokenMap[] = + static SvXMLTokenMapEntry aNamedRangeAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_NAMED_RANGE_ATTR_NAME }, { XML_NAMESPACE_TABLE, XML_CELL_RANGE_ADDRESS, XML_TOK_NAMED_RANGE_ATTR_CELL_RANGE_ADDRESS }, @@ -975,7 +975,7 @@ const SvXMLTokenMap& ScXMLImport::GetNamedExpressionAttrTokenMap() { if( !pNamedExpressionAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aNamedExpressionAttrTokenMap[] = + static SvXMLTokenMapEntry aNamedExpressionAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_NAMED_EXPRESSION_ATTR_NAME }, { XML_NAMESPACE_TABLE, XML_BASE_CELL_ADDRESS, XML_TOK_NAMED_EXPRESSION_ATTR_BASE_CELL_ADDRESS }, @@ -993,7 +993,7 @@ const SvXMLTokenMap& ScXMLImport::GetDatabaseRangesElemTokenMap() { if( !pDatabaseRangesElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDatabaseRangesTokenMap[] = + static SvXMLTokenMapEntry aDatabaseRangesTokenMap[] = { { XML_NAMESPACE_TABLE, XML_DATABASE_RANGE, XML_TOK_DATABASE_RANGE }, XML_TOKEN_MAP_END @@ -1009,7 +1009,7 @@ const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeElemTokenMap() { if( !pDatabaseRangeElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDatabaseRangeTokenMap[] = + static SvXMLTokenMapEntry aDatabaseRangeTokenMap[] = { { XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_SQL, XML_TOK_DATABASE_RANGE_SOURCE_SQL }, { XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_TABLE, XML_TOK_DATABASE_RANGE_SOURCE_TABLE }, @@ -1030,7 +1030,7 @@ const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeAttrTokenMap() { if( !pDatabaseRangeAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDatabaseRangeAttrTokenMap[] = + static SvXMLTokenMapEntry aDatabaseRangeAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_DATABASE_RANGE_ATTR_NAME }, { XML_NAMESPACE_TABLE, XML_IS_SELECTION, XML_TOK_DATABASE_RANGE_ATTR_IS_SELECTION }, @@ -1055,7 +1055,7 @@ const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeSourceSQLAttrTokenMap() { if( !pDatabaseRangeSourceSQLAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDatabaseRangeSourceSQLAttrTokenMap[] = + static SvXMLTokenMapEntry aDatabaseRangeSourceSQLAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_DATABASE_NAME, XML_TOK_SOURCE_SQL_ATTR_DATABASE_NAME }, { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_SOURCE_SQL_ATTR_HREF }, @@ -1075,7 +1075,7 @@ const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeSourceTableAttrTokenMap() { if( !pDatabaseRangeSourceTableAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDatabaseRangeSourceTableAttrTokenMap[] = + static SvXMLTokenMapEntry aDatabaseRangeSourceTableAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_DATABASE_NAME, XML_TOK_SOURCE_TABLE_ATTR_DATABASE_NAME }, { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_SOURCE_TABLE_ATTR_HREF }, @@ -1094,7 +1094,7 @@ const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeSourceQueryAttrTokenMap() { if( !pDatabaseRangeSourceQueryAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDatabaseRangeSourceQueryAttrTokenMap[] = + static SvXMLTokenMapEntry aDatabaseRangeSourceQueryAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_DATABASE_NAME, XML_TOK_SOURCE_QUERY_ATTR_DATABASE_NAME }, { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_SOURCE_QUERY_ATTR_HREF }, @@ -1113,7 +1113,7 @@ const SvXMLTokenMap& ScXMLImport::GetFilterElemTokenMap() { if( !pFilterElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aFilterTokenMap[] = + static SvXMLTokenMapEntry aFilterTokenMap[] = { { XML_NAMESPACE_TABLE, XML_FILTER_AND, XML_TOK_FILTER_AND }, { XML_NAMESPACE_TABLE, XML_FILTER_OR, XML_TOK_FILTER_OR }, @@ -1131,7 +1131,7 @@ const SvXMLTokenMap& ScXMLImport::GetFilterAttrTokenMap() { if( !pFilterAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aFilterAttrTokenMap[] = + static SvXMLTokenMapEntry aFilterAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_TARGET_RANGE_ADDRESS, XML_TOK_FILTER_ATTR_TARGET_RANGE_ADDRESS }, { XML_NAMESPACE_TABLE, XML_CONDITION_SOURCE_RANGE_ADDRESS, XML_TOK_FILTER_ATTR_CONDITION_SOURCE_RANGE_ADDRESS }, @@ -1150,7 +1150,7 @@ const SvXMLTokenMap& ScXMLImport::GetFilterConditionAttrTokenMap() { if( !pFilterConditionAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aFilterConditionAttrTokenMap[] = + static SvXMLTokenMapEntry aFilterConditionAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_FIELD_NUMBER, XML_TOK_CONDITION_ATTR_FIELD_NUMBER }, { XML_NAMESPACE_TABLE, XML_CASE_SENSITIVE, XML_TOK_CONDITION_ATTR_CASE_SENSITIVE }, @@ -1170,7 +1170,7 @@ const SvXMLTokenMap& ScXMLImport::GetSortElemTokenMap() { if( !pSortElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aSortTokenMap[] = + static SvXMLTokenMapEntry aSortTokenMap[] = { { XML_NAMESPACE_TABLE, XML_SORT_BY, XML_TOK_SORT_SORT_BY }, XML_TOKEN_MAP_END @@ -1186,7 +1186,7 @@ const SvXMLTokenMap& ScXMLImport::GetSortAttrTokenMap() { if( !pSortAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aSortAttrTokenMap[] = + static SvXMLTokenMapEntry aSortAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_BIND_STYLES_TO_CONTENT, XML_TOK_SORT_ATTR_BIND_STYLES_TO_CONTENT }, { XML_NAMESPACE_TABLE, XML_TARGET_RANGE_ADDRESS, XML_TOK_SORT_ATTR_TARGET_RANGE_ADDRESS }, @@ -1207,7 +1207,7 @@ const SvXMLTokenMap& ScXMLImport::GetSortSortByAttrTokenMap() { if( !pSortSortByAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aSortSortByAttrTokenMap[] = + static SvXMLTokenMapEntry aSortSortByAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_FIELD_NUMBER, XML_TOK_SORT_BY_ATTR_FIELD_NUMBER }, { XML_NAMESPACE_TABLE, XML_DATA_TYPE, XML_TOK_SORT_BY_ATTR_DATA_TYPE }, @@ -1225,7 +1225,7 @@ const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeSubTotalRulesElemTokenMap() { if( !pDatabaseRangeSubTotalRulesElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDatabaseRangeSubTotalRulesTokenMap[] = + static SvXMLTokenMapEntry aDatabaseRangeSubTotalRulesTokenMap[] = { { XML_NAMESPACE_TABLE, XML_SORT_GROUPS, XML_TOK_SUBTOTAL_RULES_SORT_GROUPS }, { XML_NAMESPACE_TABLE, XML_SUBTOTAL_RULE, XML_TOK_SUBTOTAL_RULES_SUBTOTAL_RULE }, @@ -1242,7 +1242,7 @@ const SvXMLTokenMap& ScXMLImport::GetDatabaseRangeSubTotalRulesAttrTokenMap() { if( !pDatabaseRangeSubTotalRulesAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDatabaseRangeSubTotalRulesAttrTokenMap[] = + static SvXMLTokenMapEntry aDatabaseRangeSubTotalRulesAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_BIND_STYLES_TO_CONTENT, XML_TOK_SUBTOTAL_RULES_ATTR_BIND_STYLES_TO_CONTENT }, { XML_NAMESPACE_TABLE, XML_CASE_SENSITIVE, XML_TOK_SUBTOTAL_RULES_ATTR_CASE_SENSITIVE }, @@ -1260,7 +1260,7 @@ const SvXMLTokenMap& ScXMLImport::GetSubTotalRulesSortGroupsAttrTokenMap() { if( !pSubTotalRulesSortGroupsAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aSubTotalRulesSortGroupsAttrTokenMap[] = + static SvXMLTokenMapEntry aSubTotalRulesSortGroupsAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_DATA_TYPE, XML_TOK_SORT_GROUPS_ATTR_DATA_TYPE }, { XML_NAMESPACE_TABLE, XML_ORDER, XML_TOK_SORT_GROUPS_ATTR_ORDER }, @@ -1277,7 +1277,7 @@ const SvXMLTokenMap& ScXMLImport::GetSubTotalRulesSubTotalRuleElemTokenMap() { if( !pSubTotalRulesSubTotalRuleElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aSubTotalRulesSubTotalRuleTokenMap[] = + static SvXMLTokenMapEntry aSubTotalRulesSubTotalRuleTokenMap[] = { { XML_NAMESPACE_TABLE, XML_SUBTOTAL_FIELD, XML_TOK_SUBTOTAL_RULE_SUBTOTAL_FIELD }, XML_TOKEN_MAP_END @@ -1293,7 +1293,7 @@ const SvXMLTokenMap& ScXMLImport::GetSubTotalRulesSubTotalRuleAttrTokenMap() { if( !pSubTotalRulesSubTotalRuleAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aSubTotalRulesSubTotalRuleAttrTokenMap[] = + static SvXMLTokenMapEntry aSubTotalRulesSubTotalRuleAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_GROUP_BY_FIELD_NUMBER, XML_TOK_SUBTOTAL_RULE_ATTR_GROUP_BY_FIELD_NUMBER }, XML_TOKEN_MAP_END @@ -1309,7 +1309,7 @@ const SvXMLTokenMap& ScXMLImport::GetSubTotalRuleSubTotalFieldAttrTokenMap() { if( !pSubTotalRuleSubTotalFieldAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aSubTotalRuleSubTotalFieldAttrTokenMap[] = + static SvXMLTokenMapEntry aSubTotalRuleSubTotalFieldAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_FIELD_NUMBER, XML_TOK_SUBTOTAL_FIELD_ATTR_FIELD_NUMBER }, { XML_NAMESPACE_TABLE, XML_FUNCTION, XML_TOK_SUBTOTAL_FIELD_ATTR_FUNCTION }, @@ -1326,7 +1326,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotTablesElemTokenMap() { if( !pDataPilotTablesElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDataPilotTablesElemTokenMap[] = + static SvXMLTokenMapEntry aDataPilotTablesElemTokenMap[] = { { XML_NAMESPACE_TABLE, XML_DATA_PILOT_TABLE, XML_TOK_DATA_PILOT_TABLE }, XML_TOKEN_MAP_END @@ -1342,7 +1342,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotTableAttrTokenMap() { if( !pDataPilotTableAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDataPilotTableAttrTokenMap[] = + static SvXMLTokenMapEntry aDataPilotTableAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_DATA_PILOT_TABLE_ATTR_NAME }, { XML_NAMESPACE_TABLE, XML_APPLICATION_DATA, XML_TOK_DATA_PILOT_TABLE_ATTR_APPLICATION_DATA }, @@ -1367,7 +1367,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotTableElemTokenMap() { if( !pDataPilotTableElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDataPilotTableElemTokenMap[] = + static SvXMLTokenMapEntry aDataPilotTableElemTokenMap[] = { { XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_SQL, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SQL }, { XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_TABLE, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_TABLE }, @@ -1389,7 +1389,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotTableSourceServiceAttrTokenMap() { if( !pDataPilotTableSourceServiceAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDataPilotTableSourceServiceAttrTokenMap[] = + static SvXMLTokenMapEntry aDataPilotTableSourceServiceAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_SOURCE_SERVICE_ATTR_NAME }, { XML_NAMESPACE_TABLE, XML_SOURCE_NAME, XML_TOK_SOURCE_SERVICE_ATTR_SOURCE_NAME }, @@ -1409,7 +1409,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotGrandTotalAttrTokenMap() { if (!pDataPilotGrandTotalAttrTokenMap) { - static __FAR_DATA SvXMLTokenMapEntry aDataPilotGrandTotalAttrTokenMap[] = + static SvXMLTokenMapEntry aDataPilotGrandTotalAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_DISPLAY, XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_DISPLAY }, { XML_NAMESPACE_TABLE, XML_ORIENTATION, XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_ORIENTATION }, @@ -1428,7 +1428,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotTableSourceCellRangeAttrTokenMap() { if( !pDataPilotTableSourceCellRangeAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDataPilotTableSourceCellRangeAttrTokenMap[] = + static SvXMLTokenMapEntry aDataPilotTableSourceCellRangeAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_CELL_RANGE_ADDRESS, XML_TOK_SOURCE_CELL_RANGE_ATTR_CELL_RANGE_ADDRESS}, XML_TOKEN_MAP_END @@ -1444,7 +1444,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotTableSourceCellRangeElemTokenMap() { if( !pDataPilotTableSourceCellRangeElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDataPilotTableSourceCellRangeElemTokenMap[] = + static SvXMLTokenMapEntry aDataPilotTableSourceCellRangeElemTokenMap[] = { { XML_NAMESPACE_TABLE, XML_FILTER, XML_TOK_SOURCE_CELL_RANGE_ELEM_FILTER}, XML_TOKEN_MAP_END @@ -1460,7 +1460,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotFieldAttrTokenMap() { if( !pDataPilotFieldAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDataPilotFieldAttrTokenMap[] = + static SvXMLTokenMapEntry aDataPilotFieldAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_SOURCE_FIELD_NAME, XML_TOK_DATA_PILOT_FIELD_ATTR_SOURCE_FIELD_NAME }, { XML_NAMESPACE_TABLE, XML_DISPLAY_NAME, XML_TOK_DATA_PILOT_FIELD_ATTR_DISPLAY_NAME }, @@ -1483,7 +1483,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotFieldElemTokenMap() { if( !pDataPilotFieldElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDataPilotFieldElemTokenMap[] = + static SvXMLTokenMapEntry aDataPilotFieldElemTokenMap[] = { { XML_NAMESPACE_TABLE, XML_DATA_PILOT_LEVEL, XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_LEVEL }, { XML_NAMESPACE_TABLE, XML_DATA_PILOT_FIELD_REFERENCE, XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_REFERENCE }, @@ -1501,7 +1501,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotLevelAttrTokenMap() { if( !pDataPilotLevelAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDataPilotLevelAttrTokenMap[] = + static SvXMLTokenMapEntry aDataPilotLevelAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_SHOW_EMPTY, XML_TOK_DATA_PILOT_LEVEL_ATTR_SHOW_EMPTY }, XML_TOKEN_MAP_END @@ -1517,7 +1517,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotLevelElemTokenMap() { if( !pDataPilotLevelElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDataPilotLevelElemTokenMap[] = + static SvXMLTokenMapEntry aDataPilotLevelElemTokenMap[] = { { XML_NAMESPACE_TABLE, XML_DATA_PILOT_SUBTOTALS, XML_TOK_DATA_PILOT_LEVEL_ELEM_DATA_PILOT_SUBTOTALS }, { XML_NAMESPACE_TABLE, XML_DATA_PILOT_MEMBERS, XML_TOK_DATA_PILOT_LEVEL_ELEM_DATA_PILOT_MEMBERS }, @@ -1537,7 +1537,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotSubTotalsElemTokenMap() { if( !pDataPilotSubTotalsElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDataPilotSubTotalsElemTokenMap[] = + static SvXMLTokenMapEntry aDataPilotSubTotalsElemTokenMap[] = { { XML_NAMESPACE_TABLE, XML_DATA_PILOT_SUBTOTAL, XML_TOK_DATA_PILOT_SUBTOTALS_ELEM_DATA_PILOT_SUBTOTAL }, XML_TOKEN_MAP_END @@ -1553,7 +1553,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotSubTotalAttrTokenMap() { if( !pDataPilotSubTotalAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDataPilotSubTotalAttrTokenMap[] = + static SvXMLTokenMapEntry aDataPilotSubTotalAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_FUNCTION, XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_FUNCTION }, { XML_NAMESPACE_TABLE, XML_DISPLAY_NAME, XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_DISPLAY_NAME }, @@ -1571,7 +1571,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotMembersElemTokenMap() { if( !pDataPilotMembersElemTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDataPilotMembersElemTokenMap[] = + static SvXMLTokenMapEntry aDataPilotMembersElemTokenMap[] = { { XML_NAMESPACE_TABLE, XML_DATA_PILOT_MEMBER, XML_TOK_DATA_PILOT_MEMBERS_ELEM_DATA_PILOT_MEMBER }, XML_TOKEN_MAP_END @@ -1587,7 +1587,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotMemberAttrTokenMap() { if( !pDataPilotMemberAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aDataPilotMemberAttrTokenMap[] = + static SvXMLTokenMapEntry aDataPilotMemberAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_NAME, XML_TOK_DATA_PILOT_MEMBER_ATTR_NAME }, { XML_NAMESPACE_TABLE, XML_DISPLAY_NAME, XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY_NAME }, @@ -1607,7 +1607,7 @@ const SvXMLTokenMap& ScXMLImport::GetConsolidationAttrTokenMap() { if( !pConsolidationAttrTokenMap ) { - static __FAR_DATA SvXMLTokenMapEntry aConsolidationAttrTokenMap[] = + static SvXMLTokenMapEntry aConsolidationAttrTokenMap[] = { { XML_NAMESPACE_TABLE, XML_FUNCTION, XML_TOK_CONSOLIDATION_ATTR_FUNCTION }, { XML_NAMESPACE_TABLE, XML_SOURCE_CELL_RANGE_ADDRESSES, XML_TOK_CONSOLIDATION_ATTR_SOURCE_RANGES }, @@ -1642,8 +1642,8 @@ SvXMLImportContext *ScXMLImport::CreateContext( USHORT nPrefix, } else if ( (XML_NAMESPACE_OFFICE == nPrefix) && ( IsXMLToken(rLocalName, XML_DOCUMENT)) ) { uno::Reference<xml::sax::XDocumentHandler> xDocBuilder( - mxServiceFactory->createInstance(::rtl::OUString::createFromAscii( - "com.sun.star.xml.dom.SAXDocumentBuilder")), + mxServiceFactory->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.xml.dom.SAXDocumentBuilder"))), uno::UNO_QUERY_THROW); uno::Reference<document::XDocumentPropertiesSupplier> xDPS( GetModel(), uno::UNO_QUERY_THROW); @@ -1894,55 +1894,43 @@ ScXMLImport::~ScXMLImport() throw() SvXMLImportContext *ScXMLImport::CreateFontDeclsContext(const USHORT nPrefix, const ::rtl::OUString& rLocalName, const uno::Reference<xml::sax::XAttributeList>& xAttrList) { - SvXMLImportContext *pContext = NULL; - if (!pContext) - { - XMLFontStylesContext *pFSContext( - new XMLFontStylesContext( *this, nPrefix, - rLocalName, xAttrList, - gsl_getSystemTextEncoding() )); - SetFontDecls( pFSContext ); - pContext = pFSContext; - } + XMLFontStylesContext *pFSContext = new XMLFontStylesContext( + *this, nPrefix, rLocalName, xAttrList, gsl_getSystemTextEncoding()); + SetFontDecls(pFSContext); + SvXMLImportContext* pContext = pFSContext; return pContext; } SvXMLImportContext *ScXMLImport::CreateStylesContext(const ::rtl::OUString& rLocalName, const uno::Reference<xml::sax::XAttributeList>& xAttrList, sal_Bool bIsAutoStyle ) { - SvXMLImportContext *pContext(NULL); - if (!pContext) - { - pContext = new XMLTableStylesContext(*this, XML_NAMESPACE_OFFICE, rLocalName, xAttrList, bIsAutoStyle); - if (bIsAutoStyle) - //xAutoStyles = pContext; - SetAutoStyles((SvXMLStylesContext*)pContext); - else - //xStyles = pContext; - SetStyles((SvXMLStylesContext*)pContext); - } + SvXMLImportContext* pContext = new XMLTableStylesContext( + *this, XML_NAMESPACE_OFFICE, rLocalName, xAttrList, bIsAutoStyle); + + if (bIsAutoStyle) + SetAutoStyles((SvXMLStylesContext*)pContext); + else + SetStyles((SvXMLStylesContext*)pContext); + return pContext; } SvXMLImportContext *ScXMLImport::CreateBodyContext(const ::rtl::OUString& rLocalName, const uno::Reference<xml::sax::XAttributeList>& xAttrList) { - //GetShapeImport()->SetAutoStylesContext((XMLTableStylesContext *)&xAutoStyles); - //GetChartImport()->SetAutoStylesContext(GetAutoStyles()/*(XMLTableStylesContext *)&xAutoStyles*/); - return new ScXMLBodyContext(*this, XML_NAMESPACE_OFFICE, rLocalName, xAttrList); } SvXMLImportContext *ScXMLImport::CreateMetaContext( const OUString& rLocalName ) { - SvXMLImportContext *pContext(0); + SvXMLImportContext* pContext = NULL; if( !IsStylesOnlyMode() && (getImportFlags() & IMPORT_META)) { uno::Reference<xml::sax::XDocumentHandler> xDocBuilder( - mxServiceFactory->createInstance(::rtl::OUString::createFromAscii( - "com.sun.star.xml.dom.SAXDocumentBuilder")), + mxServiceFactory->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.xml.dom.SAXDocumentBuilder"))), uno::UNO_QUERY_THROW); uno::Reference<document::XDocumentPropertiesSupplier> xDPS( GetModel(), uno::UNO_QUERY_THROW); @@ -1961,7 +1949,7 @@ SvXMLImportContext *ScXMLImport::CreateMetaContext( SvXMLImportContext *ScXMLImport::CreateScriptContext( const OUString& rLocalName ) { - SvXMLImportContext *pContext(0); + SvXMLImportContext* pContext = NULL; if( !(IsStylesOnlyMode()) ) { @@ -2017,10 +2005,7 @@ sal_Int16 ScXMLImport::GetCellType(const OUString& rStrValue) const XMLShapeImportHelper* ScXMLImport::CreateShapeImport() { - /*UniReference < XMLPropertySetMapper > xShapeStylesPropertySetMapper = new XMLPropertySetMapper((XMLPropertyMapEntry*)aXMLScShapeStylesProperties, xScPropHdlFactory); - SvXMLImportPropertyMapper *pShapeStylesImportPropertySetMapper = new SvXMLImportPropertyMapper( xShapeStylesPropertySetMapper );*/ - - return new XMLTableShapeImportHelper( *this/*, pShapeStylesImportPropertySetMapper*/ ); + return new XMLTableShapeImportHelper(*this); } sal_Bool ScXMLImport::GetValidation(const rtl::OUString& sName, ScMyImportValidation& aValidation) @@ -2109,7 +2094,7 @@ void ScXMLImport::SetChangeTrackingViewSettings(const com::sun::star::uno::Seque sal_Int32 nCount(rChangeProps.getLength()); if (nCount) { - LockSolarMutex(); + ScXMLImport::MutexGuard aGuard(*this); sal_Int16 nTemp16(0); ScChangeViewSettings* pViewSettings(new ScChangeViewSettings()); for (sal_Int32 i = 0; i < nCount; ++i) @@ -2185,7 +2170,6 @@ void ScXMLImport::SetChangeTrackingViewSettings(const com::sun::star::uno::Seque } } pDoc->SetChangeViewSettings(*pViewSettings); - UnlockSolarMutex(); } } } @@ -2318,18 +2302,19 @@ sal_Int32 ScXMLImport::SetCurrencySymbol(const sal_Int32 nKey, const rtl::OUStri lang::Locale aLocale; if (GetDocument() && (xProperties->getPropertyValue(sLocale) >>= aLocale)) { - LockSolarMutex(); - LocaleDataWrapper aLocaleData( GetDocument()->GetServiceManager(), aLocale ); - rtl::OUStringBuffer aBuffer(15); - aBuffer.appendAscii("#"); - aBuffer.append( aLocaleData.getNumThousandSep() ); - aBuffer.appendAscii("##0"); - aBuffer.append( aLocaleData.getNumDecimalSep() ); - aBuffer.appendAscii("00 [$"); - aBuffer.append(rCurrency); - aBuffer.appendAscii("]"); - UnlockSolarMutex(); - sFormatString = aBuffer.makeStringAndClear(); + { + ScXMLImport::MutexGuard aGuard(*this); + LocaleDataWrapper aLocaleData( GetDocument()->GetServiceManager(), aLocale ); + rtl::OUStringBuffer aBuffer(15); + aBuffer.appendAscii("#"); + aBuffer.append( aLocaleData.getNumThousandSep() ); + aBuffer.appendAscii("##0"); + aBuffer.append( aLocaleData.getNumDecimalSep() ); + aBuffer.appendAscii("00 [$"); + aBuffer.append(rCurrency); + aBuffer.appendAscii("]"); + sFormatString = aBuffer.makeStringAndClear(); + } sal_Int32 nNewKey = xLocalNumberFormats->queryKey(sFormatString, aLocale, sal_True); if (nNewKey == -1) nNewKey = xLocalNumberFormats->addNew(sFormatString, aLocale); @@ -2603,7 +2588,7 @@ void ScXMLImport::SetStylesToRangesFinished() void SAL_CALL ScXMLImport::setTargetDocument( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& xDoc ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException) { - LockSolarMutex(); + ScXMLImport::MutexGuard aGuard(*this); SvXMLImport::setTargetDocument( xDoc ); uno::Reference<frame::XModel> xModel(xDoc, uno::UNO_QUERY); @@ -2617,7 +2602,6 @@ throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::R uno::Reference<document::XActionLockable> xActionLockable(xDoc, uno::UNO_QUERY); if (xActionLockable.is()) xActionLockable->addActionLock(); - UnlockSolarMutex(); } // XServiceInfo @@ -2647,7 +2631,7 @@ throw(::com::sun::star::uno::RuntimeException) void SAL_CALL ScXMLImport::startDocument(void) throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException ) { - LockSolarMutex(); + ScXMLImport::MutexGuard aGuard(*this); SvXMLImport::startDocument(); if (pDoc && !pDoc->IsImportingXML()) { @@ -2671,8 +2655,6 @@ throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeE pSheetData->StoreInitialNamespaces(rNamespaces); } } - - UnlockSolarMutex(); } sal_Int32 ScXMLImport::GetRangeType(const rtl::OUString sRangeType) const @@ -2781,11 +2763,13 @@ void ScXMLImport::SetNamedRanges() if (!pNamedExpressions) return; - uno::Reference <beans::XPropertySet> xPropertySet (GetModel(), uno::UNO_QUERY); + Reference <beans::XPropertySet> xPropertySet (GetModel(), UNO_QUERY); if (!xPropertySet.is()) return; - uno::Reference <sheet::XNamedRanges> xNamedRanges(xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NAMEDRANGES))), uno::UNO_QUERY); + Reference <sheet::XNamedRanges> xNamedRanges( + xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_NAMEDRANGES))), UNO_QUERY); + if (!xNamedRanges.is()) return; @@ -2793,52 +2777,61 @@ void ScXMLImport::SetNamedRanges() if (!xPropSet.is()) return; + // Turn off broadcasting while adding imported range names. NamedRangesSwitch aSwitch(xPropSet); ScMyNamedExpressions::iterator aItr(pNamedExpressions->begin()); ScMyNamedExpressions::const_iterator aEndItr(pNamedExpressions->end()); table::CellAddress aCellAddress; - rtl::OUString sTempContent(RTL_CONSTASCII_USTRINGPARAM("0")); - while (aItr != aEndItr) + OUString sTempContent(RTL_CONSTASCII_USTRINGPARAM("0")); + + for (; aItr != aEndItr; ++aItr) { - sal_Int32 nOffset(0); - if (ScRangeStringConverter::GetAddressFromString( - aCellAddress, (*aItr)->sBaseCellAddress, GetDocument(), FormulaGrammar::CONV_OOO, nOffset )) + sal_Int32 nOffset = 0; + bool bSuccess = ScRangeStringConverter::GetAddressFromString( + aCellAddress, (*aItr)->sBaseCellAddress, GetDocument(), FormulaGrammar::CONV_OOO, nOffset); + + if (!bSuccess) + // Conversion of base cell address failed. Skip this. + continue; + + try { - try - { - xNamedRanges->addNewByName((*aItr)->sName, sTempContent, aCellAddress, GetRangeType((*aItr)->sRangeType)); - } - catch( uno::RuntimeException& ) + xNamedRanges->addNewByName( + (*aItr)->sName, sTempContent, aCellAddress, GetRangeType((*aItr)->sRangeType)); + } + catch( uno::RuntimeException& ) + { + DBG_ERROR("here are some Named Ranges with the same name"); + uno::Reference < container::XIndexAccess > xIndex(xNamedRanges, uno::UNO_QUERY); + if (xIndex.is()) { - DBG_ERROR("here are some Named Ranges with the same name"); - uno::Reference < container::XIndexAccess > xIndex(xNamedRanges, uno::UNO_QUERY); - if (xIndex.is()) + sal_Int32 nMax = xIndex->getCount(); + bool bInserted = false; + sal_Int32 nCount = 1; + OUStringBuffer sName((*aItr)->sName); + sName.append(sal_Unicode('_')); + while (!bInserted && nCount <= nMax) { - sal_Int32 nMax(xIndex->getCount()); - sal_Bool bInserted(sal_False); - sal_Int32 nCount(1); - rtl::OUStringBuffer sName((*aItr)->sName); - sName.append(sal_Unicode('_')); - while (!bInserted && nCount <= nMax) + OUStringBuffer sTemp(sName); + sTemp.append(OUString::valueOf(nCount)); + try { - rtl::OUStringBuffer sTemp(sName); - sTemp.append(rtl::OUString::valueOf(nCount)); - try - { - xNamedRanges->addNewByName(sTemp.makeStringAndClear(), sTempContent, aCellAddress, GetRangeType((*aItr)->sRangeType)); - bInserted = sal_True; - } - catch( uno::RuntimeException& ) - { - ++nCount; - } + xNamedRanges->addNewByName( + sTemp.makeStringAndClear(), sTempContent, aCellAddress, + GetRangeType((*aItr)->sRangeType)); + bInserted = true; + } + catch( uno::RuntimeException& ) + { + ++nCount; } } + UnlockSolarMutex(); } } - ++aItr; } + aItr = pNamedExpressions->begin(); while (aItr != aEndItr) { @@ -2849,7 +2842,7 @@ void ScXMLImport::SetNamedRanges() uno::Reference <sheet::XNamedRange> xNamedRange(xNamedRanges->getByName((*aItr)->sName), uno::UNO_QUERY); if (xNamedRange.is()) { - LockSolarMutex(); + ScXMLImport::MutexGuard aGuard(*this); ScNamedRangeObj* pNamedRangeObj = ScNamedRangeObj::getImplementation( xNamedRange); if (pNamedRangeObj) { @@ -2859,7 +2852,6 @@ void ScXMLImport::SetNamedRanges() ScXMLConverter::ParseFormula( sTempContent, false); pNamedRangeObj->SetContentWithGrammar( sTempContent, (*aItr)->eGrammar); } - UnlockSolarMutex(); } } delete *aItr; @@ -2870,7 +2862,7 @@ void ScXMLImport::SetNamedRanges() void SAL_CALL ScXMLImport::endDocument(void) throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException ) { - LockSolarMutex(); + ScXMLImport::MutexGuard aGuard(*this); if (getImportFlags() & IMPORT_CONTENT) { if (GetModel().is()) @@ -2926,7 +2918,7 @@ throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeE } aTables.UpdateRowHeights(); - aTables.ResizeShapes(); + aTables.FixupOLEs(); } if (GetModel().is()) { @@ -2940,8 +2932,6 @@ throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeE { ScModelObj::getImplementation(GetModel())->AfterXMLLoading(sal_True); } - - UnlockSolarMutex(); } // XEventListener @@ -2951,6 +2941,17 @@ void ScXMLImport::DisposingModel() pDoc = NULL; } +ScXMLImport::MutexGuard::MutexGuard(ScXMLImport& rImport) : + mrImport(rImport) +{ + mrImport.LockSolarMutex(); +} + +ScXMLImport::MutexGuard::~MutexGuard() +{ + mrImport.UnlockSolarMutex(); +} + void ScXMLImport::LockSolarMutex() { // #i62677# When called from DocShell/Wrapper, the SolarMutex is already locked, diff --git a/sc/source/filter/xml/xmlimprt.hxx b/sc/source/filter/xml/xmlimprt.hxx index 49e89406d8eb..a76e5d8fc50a 100644 --- a/sc/source/filter/xml/xmlimprt.hxx +++ b/sc/source/filter/xml/xmlimprt.hxx @@ -1003,6 +1003,18 @@ public: virtual void DisposingModel(); + /** + * Use this class to manage solar mutex locking instead of calling + * LockSolarMutex() and UnlockSolarMutex() directly. + */ + class MutexGuard + { + public: + explicit MutexGuard(ScXMLImport& rImport); + ~MutexGuard(); + private: + ScXMLImport& mrImport; + }; void LockSolarMutex(); void UnlockSolarMutex(); diff --git a/sc/source/filter/xml/xmlrowi.cxx b/sc/source/filter/xml/xmlrowi.cxx index b1daf5d18575..aa0e0e367326 100644 --- a/sc/source/filter/xml/xmlrowi.cxx +++ b/sc/source/filter/xml/xmlrowi.cxx @@ -349,12 +349,11 @@ void ScXMLTableRowsContext::EndElement() ScDocument* pDoc(GetScImport().GetDocument()); if (pDoc) { - GetScImport().LockSolarMutex(); + ScXMLImport::MutexGuard aGuard(GetScImport()); ScOutlineTable* pOutlineTable(pDoc->GetOutlineTable(static_cast<SCTAB>(nSheet), sal_True)); ScOutlineArray* pRowArray(pOutlineTable->GetRowArray()); sal_Bool bResized; pRowArray->Insert(static_cast<SCROW>(nGroupStartRow), static_cast<SCROW>(nGroupEndRow), bResized, !bGroupDisplay, sal_True); - GetScImport().UnlockSolarMutex(); } } } diff --git a/sc/source/filter/xml/xmlsceni.cxx b/sc/source/filter/xml/xmlsceni.cxx index 3235941af5b2..f8ae7c9d64fb 100644 --- a/sc/source/filter/xml/xmlsceni.cxx +++ b/sc/source/filter/xml/xmlsceni.cxx @@ -163,9 +163,9 @@ void ScXMLTableScenarioContext::EndElement() if( bProtected ) nFlags |= SC_SCENARIO_PROTECT; pDoc->SetScenarioData( nCurrTable, String( sComment ), aBorderColor, nFlags ); - for( sal_Int32 i = 0; i < static_cast<sal_Int32>(aScenarioRanges.Count()); ++i ) + for( size_t i = 0; i < aScenarioRanges.size(); ++i ) { - ScRange* pRange(aScenarioRanges.GetObject( i )); + ScRange* pRange(aScenarioRanges[ i ]); if( pRange ) pDoc->ApplyFlagsTab( pRange->aStart.Col(), pRange->aStart.Row(), pRange->aEnd.Col(), pRange->aEnd.Row(), nCurrTable, SC_MF_SCENARIO ); diff --git a/sc/source/filter/xml/xmlsorti.cxx b/sc/source/filter/xml/xmlsorti.cxx index bf1f0427854d..c71e4c38c40c 100644 --- a/sc/source/filter/xml/xmlsorti.cxx +++ b/sc/source/filter/xml/xmlsorti.cxx @@ -155,19 +155,19 @@ void ScXMLSortContext::EndElement() if (nAlgoLength) ++i; uno::Sequence <beans::PropertyValue> aSortDescriptor(7 + i); - aSortDescriptor[0].Name = rtl::OUString::createFromAscii(SC_UNONAME_BINDFMT); + aSortDescriptor[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_BINDFMT)); aSortDescriptor[0].Value = ::cppu::bool2any(bBindFormatsToContent); - aSortDescriptor[1].Name = rtl::OUString::createFromAscii(SC_UNONAME_COPYOUT); + aSortDescriptor[1].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_COPYOUT)); aSortDescriptor[1].Value = ::cppu::bool2any(bCopyOutputData); - aSortDescriptor[2].Name = rtl::OUString::createFromAscii(SC_UNONAME_ISCASE); + aSortDescriptor[2].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_ISCASE)); aSortDescriptor[2].Value = ::cppu::bool2any(bIsCaseSensitive); - aSortDescriptor[3].Name = rtl::OUString::createFromAscii(SC_UNONAME_ISULIST); + aSortDescriptor[3].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_ISULIST)); aSortDescriptor[3].Value = ::cppu::bool2any(bEnabledUserList); - aSortDescriptor[4].Name = rtl::OUString::createFromAscii(SC_UNONAME_OUTPOS); + aSortDescriptor[4].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_OUTPOS)); aSortDescriptor[4].Value <<= aOutputPosition; - aSortDescriptor[5].Name = rtl::OUString::createFromAscii(SC_UNONAME_UINDEX); + aSortDescriptor[5].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_UINDEX)); aSortDescriptor[5].Value <<= nUserListIndex; - aSortDescriptor[6].Name = rtl::OUString::createFromAscii(SC_UNONAME_SORTFLD); + aSortDescriptor[6].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_SORTFLD)); aSortDescriptor[6].Value <<= aSortFields; if (nLangLength || nCountryLength) { diff --git a/sc/source/filter/xml/xmlstyle.cxx b/sc/source/filter/xml/xmlstyle.cxx index f686ed36bf9b..d3830fce5bd8 100644 --- a/sc/source/filter/xml/xmlstyle.cxx +++ b/sc/source/filter/xml/xmlstyle.cxx @@ -1176,7 +1176,7 @@ bool XmlScPropHdl_JustifyMethod::equals( const ::com::sun::star::uno::Any& r1, const ::com::sun::star::uno::Any& r2 ) const { - sal_Int32 nVal1, nVal2; + sal_Int32 nVal1(0), nVal2(0); if((r1 >>= nVal1) && (r2 >>= nVal2)) return (nVal1 == nVal2); @@ -1214,7 +1214,7 @@ sal_Bool XmlScPropHdl_JustifyMethod::exportXML( const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& /* rUnitConverter */ ) const { - sal_Int32 nVal; + sal_Int32 nVal(0); bool bRetval = false; if (rValue >>= nVal) @@ -1597,7 +1597,7 @@ bool XmlScPropHdl_RotateReference::equals( const ::com::sun::star::uno::Any& r1, const ::com::sun::star::uno::Any& r2 ) const { - sal_Int32 aReference1, aReference2; + sal_Int32 aReference1(0), aReference2(0); if((r1 >>= aReference1) && (r2 >>= aReference2)) return (aReference1 == aReference2); @@ -1645,7 +1645,7 @@ sal_Bool XmlScPropHdl_RotateReference::exportXML( const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& /* rUnitConverter */ ) const { - sal_Int32 nVal; + sal_Int32 nVal(0); sal_Bool bRetval(sal_False); if(rValue >>= nVal) @@ -1694,7 +1694,7 @@ bool XmlScPropHdl_VertJustify::equals( const ::com::sun::star::uno::Any& r1, const ::com::sun::star::uno::Any& r2 ) const { - sal_Int32 aReference1, aReference2; + sal_Int32 aReference1(0), aReference2(0); if((r1 >>= aReference1) && (r2 >>= aReference2)) return (aReference1 == aReference2); @@ -1748,7 +1748,7 @@ sal_Bool XmlScPropHdl_VertJustify::exportXML( const ::com::sun::star::uno::Any& rValue, const SvXMLUnitConverter& /* rUnitConverter */ ) const { - sal_Int32 nVal; + sal_Int32 nVal(0); sal_Bool bRetval(sal_False); if(rValue >>= nVal) diff --git a/sc/source/filter/xml/xmlstyli.cxx b/sc/source/filter/xml/xmlstyli.cxx index ffecefb2d653..6e36d59ea944 100644 --- a/sc/source/filter/xml/xmlstyli.cxx +++ b/sc/source/filter/xml/xmlstyli.cxx @@ -75,7 +75,6 @@ using namespace ::com::sun::star::frame; using namespace ::com::sun::star::beans; using namespace ::com::sun::star::container; using namespace xmloff::token; -//using namespace ::com::sun::star::text; using namespace ::formula; using rtl::OUString; diff --git a/sc/source/filter/xml/xmlsubti.cxx b/sc/source/filter/xml/xmlsubti.cxx index d3e949acabd0..d7b592db5caa 100644 --- a/sc/source/filter/xml/xmlsubti.cxx +++ b/sc/source/filter/xml/xmlsubti.cxx @@ -29,7 +29,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sc.hxx" - // INCLUDE --------------------------------------------------------------- #include "xmlsubti.hxx" #include "global.hxx" @@ -160,26 +159,16 @@ ScXMLTabProtectionData::ScXMLTabProtectionData() : ScMyTables::ScMyTables(ScXMLImport& rTempImport) : rImport(rTempImport), - aResizeShapes(rTempImport), + aFixupOLEs(rTempImport), nCurrentColStylePos(0), nCurrentDrawPage( -1 ), nCurrentXShapes( -1 ), - nTableCount( 0 ), nCurrentSheet( -1 ) { - aTableVec.resize(nDefaultTabCount, NULL); } ScMyTables::~ScMyTables() { - ScMyTableData* pTable; - while (nTableCount > 0) - { - pTable = aTableVec[nTableCount - 1]; - delete pTable; - aTableVec[nTableCount - 1] = NULL; - --nTableCount; - } } void ScMyTables::NewSheet(const rtl::OUString& sTableName, const rtl::OUString& sStyleName, @@ -189,14 +178,7 @@ void ScMyTables::NewSheet(const rtl::OUString& sTableName, const rtl::OUString& { nCurrentColStylePos = 0; sCurrentSheetName = sTableName; - ScMyTableData* aTable; - while (nTableCount > 0) - { - aTable = aTableVec[nTableCount - 1]; - delete aTable; - aTableVec[nTableCount - 1] = NULL; - --nTableCount; - } + maTables.clear(); ++nCurrentSheet; maProtectionData = rProtectData; @@ -217,12 +199,11 @@ void ScMyTables::NewSheet(const rtl::OUString& sTableName, const rtl::OUString& ScDocument *pDoc = ScXMLConverter::GetScDocument(rImport.GetModel()); if (pDoc) { - rImport.LockSolarMutex(); + ScXMLImport::MutexGuard aGuard(rImport); String sTabName(String::CreateFromAscii("Table")); pDoc->CreateValidTabName(sTabName); rtl::OUString sOUTabName(sTabName); xSheets->insertNewByName(sOUTabName, sal::static_int_cast<sal_Int16>(nCurrentSheet)); - rImport.UnlockSolarMutex(); } } } @@ -246,12 +227,11 @@ void ScMyTables::NewSheet(const rtl::OUString& sTableName, const rtl::OUString& ScDocument *pDoc = ScXMLConverter::GetScDocument(rImport.GetModel()); if (pDoc) { - rImport.LockSolarMutex(); + ScXMLImport::MutexGuard aGuard(rImport); String sTabName(String::CreateFromAscii("Table")); pDoc->CreateValidTabName(sTabName); rtl::OUString sOUTabName(sTabName); xNamed->setName(sOUTabName); - rImport.UnlockSolarMutex(); } } } @@ -355,16 +335,21 @@ void ScMyTables::DoMerge(sal_Int32 nCount) //merge uno::Reference <table::XCellRange> xMergeCellRange; if (nCount == -1) - xMergeCellRange.set(xCurrentCellRange->getCellRangeByPosition(aCellAddress.StartColumn, aCellAddress.StartRow, - aCellAddress.EndColumn - + aTableVec[nTableCount - 1]->GetColsPerCol(aTableVec[nTableCount - 1]->GetColumn()) - 1, - aCellAddress.EndRow - + aTableVec[nTableCount - 1]->GetRowsPerRow(aTableVec[nTableCount - 1]->GetRow()) - 1)); + { + const ScMyTableData& r = maTables.back(); + xMergeCellRange.set( + xCurrentCellRange->getCellRangeByPosition( + aCellAddress.StartColumn, aCellAddress.StartRow, + aCellAddress.EndColumn + r.GetColsPerCol(r.GetColumn()) - 1, + aCellAddress.EndRow + r.GetRowsPerRow(r.GetRow()) - 1)); + } else - xMergeCellRange.set(xCurrentCellRange->getCellRangeByPosition(aCellAddress.StartColumn, aCellAddress.StartRow, - aCellAddress.StartColumn - + nCount - 1, - aCellAddress.EndRow)); + xMergeCellRange.set( + xCurrentCellRange->getCellRangeByPosition( + aCellAddress.StartColumn, aCellAddress.StartRow, + aCellAddress.StartColumn + nCount - 1, + aCellAddress.EndRow)); + uno::Reference <util::XMergeable> xMergeable (xMergeCellRange, uno::UNO_QUERY); if (xMergeable.is()) xMergeable->merge(sal_True); @@ -377,7 +362,8 @@ void ScMyTables::InsertRow() { table::CellRangeAddress aCellAddress; sal_Int32 nRow(GetRealCellPos().Row); - for (sal_Int32 j = 0; j < GetRealCellPos().Column - aTableVec[nTableCount - 1]->GetColumn() - 1; ++j) + const ScMyTableData& rTab = maTables.back(); + for (sal_Int32 j = 0; j < GetRealCellPos().Column - rTab.GetColumn() - 1; ++j) { if (IsMerged(xCurrentCellRange, j, nRow - 1, aCellAddress)) { @@ -401,34 +387,41 @@ void ScMyTables::InsertRow() void ScMyTables::NewRow() { - if (nTableCount > 1) - if (aTableVec[nTableCount - 1]->GetRealRows(aTableVec[nTableCount - 1]->GetRow()) > - aTableVec[nTableCount - 2]->GetRowsPerRow(aTableVec[nTableCount - 2]->GetRow()) - 1) + size_t n = maTables.size(); + if (n <= 1) + return; + + if (maTables[n-1].GetRealRows(maTables[n-1].GetRow()) > + maTables[n-2].GetRowsPerRow(maTables[n-2].GetRow()) - 1) + { + if (GetRealCellPos().Column > 0) + InsertRow(); + + for (size_t i = n - 1; i > 0; --i) { - if (GetRealCellPos().Column > 0) - InsertRow(); - for (sal_Int16 i = sal::static_int_cast<sal_Int16>(nTableCount - 1); i > 0; i--) - { - sal_Int32 nRow = aTableVec[i - 1]->GetRow(); - aTableVec[i - 1]->SetRowsPerRow(nRow, - aTableVec[i - 1]->GetRowsPerRow(nRow) + 1); - aTableVec[i - 1]->SetRealRows(nRow + 1, - aTableVec[i - 1]->GetRealRows(nRow) - + aTableVec[i - 1]->GetRowsPerRow(nRow)); - } + sal_Int32 nRow = maTables[i-1].GetRow(); + maTables[i-1].SetRowsPerRow( + nRow, + maTables[i-1].GetRowsPerRow(nRow) + 1); + + maTables[i-1].SetRealRows( + nRow + 1, + maTables[i-1].GetRealRows(nRow) + maTables[i-1].GetRowsPerRow(nRow)); } + } } void ScMyTables::AddRow() { - aTableVec[nTableCount - 1]->AddRow(); - aTableVec[nTableCount - 1]->SetFirstColumn(); - sal_Int32 nRow = aTableVec[nTableCount - 1]->GetRow(); + ScMyTableData& rTab = maTables.back(); + rTab.AddRow(); + rTab.SetFirstColumn(); + sal_Int32 nRow = rTab.GetRow(); if (nRow > 0) NewRow(); - aTableVec[nTableCount - 1]->SetRealRows(nRow + 1, - aTableVec[nTableCount - 1]->GetRealRows(nRow) - + aTableVec[nTableCount - 1]->GetRowsPerRow(nRow)); + + rTab.SetRealRows( + nRow + 1, rTab.GetRealRows(nRow) + rTab.GetRowsPerRow(nRow)); } void ScMyTables::SetRowStyle(const rtl::OUString& rCellStyleName) @@ -442,7 +435,8 @@ void ScMyTables::InsertColumn() { table::CellRangeAddress aCellAddress; sal_Int32 nCol(GetRealCellPos().Column); - for (sal_Int32 j = 0; j <= GetRealCellPos().Row - aTableVec[nTableCount - 1]->GetRow() - 1; ++j) + sal_Int32 n = GetRealCellPos().Row - maTables.back().GetRow() - 1; + for (sal_Int32 j = 0; j <= n; ++j) { table::CellRangeAddress aTempCellAddress; if (IsMerged(xCurrentCellRange, nCol - 1, j, aCellAddress)) @@ -481,49 +475,51 @@ void ScMyTables::InsertColumn() void ScMyTables::NewColumn(sal_Bool bIsCovered) { - if (!bIsCovered) + if (bIsCovered) + return; + + ScMyTableData& rLastTab = maTables.back(); + sal_Int32 nColCount = rLastTab.GetColCount(); + sal_Int32 nSpannedCols = rLastTab.GetSpannedCols(); + if ( (nSpannedCols > nColCount) && + (rLastTab.GetRow() == 0) && + (rLastTab.GetColumn() == 0) ) { - sal_Int32 nColCount(aTableVec[nTableCount - 1]->GetColCount()); - sal_Int32 nSpannedCols(aTableVec[nTableCount - 1]->GetSpannedCols()); - if ( (nSpannedCols > nColCount) && - (aTableVec[nTableCount - 1]->GetRow() == 0) && - (aTableVec[nTableCount - 1]->GetColumn() == 0) ) + if (nColCount > 0) { - if (nColCount > 0) + sal_Int32 FirstColsSpanned(nSpannedCols / nColCount); + sal_Int32 LastColSpanned(FirstColsSpanned + + (nSpannedCols % nColCount)); + for (sal_Int32 i = 0; i < nColCount - 1; ++i) { - sal_Int32 FirstColsSpanned(nSpannedCols / nColCount); - sal_Int32 LastColSpanned(FirstColsSpanned - + (nSpannedCols % nColCount)); - for (sal_Int32 i = 0; i < nColCount - 1; ++i) - { - aTableVec[nTableCount - 1]->SetColsPerCol(i, FirstColsSpanned); - aTableVec[nTableCount - 1]->SetRealCols(i + 1, - aTableVec[nTableCount - 1]->GetRealCols(i) - + FirstColsSpanned); - } - aTableVec[nTableCount - 1]->SetColsPerCol(nColCount - 1, LastColSpanned); - aTableVec[nTableCount - 1]->SetRealCols(nColCount - 1 + 1, - aTableVec[nTableCount - 1]->GetRealCols(nColCount - 1) - + LastColSpanned); + rLastTab.SetColsPerCol(i, FirstColsSpanned); + rLastTab.SetRealCols(i + 1, rLastTab.GetRealCols(i) + FirstColsSpanned); } + rLastTab.SetColsPerCol(nColCount - 1, LastColSpanned); + rLastTab.SetRealCols( + nColCount, rLastTab.GetRealCols(nColCount - 1) + LastColSpanned); } - if (aTableVec[nTableCount - 1]->GetRealCols(aTableVec[nTableCount - 1]->GetColumn()) > nSpannedCols - 1) + } + if (rLastTab.GetRealCols(rLastTab.GetColumn()) > nSpannedCols - 1) + { + if (rLastTab.GetRow() == 0) { - if ( aTableVec[nTableCount - 1]->GetRow() == 0) + InsertColumn(); + size_t n = maTables.size(); + for (size_t i = n - 1; i > 0; --i) { - InsertColumn(); - for (sal_Int16 i = sal::static_int_cast<sal_Int16>(nTableCount - 1); i > 0; i--) - { - sal_Int32 nColPos = aTableVec[i - 1]->GetColumn() + - aTableVec[i]->GetSpannedCols() - 1; - aTableVec[i - 1]->SetColsPerCol(nColPos, - aTableVec[i - 1]->GetColsPerCol(nColPos) + - aTableVec[nTableCount - 1]->GetColsPerCol(aTableVec[nTableCount - 1]->GetColumn())); - aTableVec[i - 1]->SetRealCols(nColPos + 1, - aTableVec[i - 1]->GetRealCols(nColPos) - + aTableVec[i - 1]->GetColsPerCol(nColPos)); - aTableVec[i - 1]->SetChangedCols(nColPos); - } + sal_Int32 nColPos = + maTables[i-1].GetColumn() + maTables[i].GetSpannedCols() - 1; + + maTables[i-1].SetColsPerCol(nColPos, + maTables[i-1].GetColsPerCol(nColPos) + + rLastTab.GetColsPerCol(rLastTab.GetColumn())); + + maTables[i-1].SetRealCols( + nColPos + 1, + maTables[i-1].GetRealCols(nColPos) + maTables[i-1].GetColsPerCol(nColPos)); + + maTables[i-1].SetChangedCols(nColPos); } } } @@ -531,21 +527,21 @@ void ScMyTables::NewColumn(sal_Bool bIsCovered) void ScMyTables::AddColumn(sal_Bool bIsCovered) { - aTableVec[nTableCount - 1]->AddColumn(); - if (aTableVec[nTableCount - 1]->GetSubTableSpanned() > 1) - aTableVec[nTableCount - 1]->SetSubTableSpanned(aTableVec[nTableCount - 1]->GetSubTableSpanned() - 1); + ScMyTableData& rLastTab = maTables.back(); + rLastTab.AddColumn(); + if (rLastTab.GetSubTableSpanned() > 1) + rLastTab.SetSubTableSpanned(rLastTab.GetSubTableSpanned() - 1); else { NewColumn(bIsCovered); - // if (!bIsCovered) - aTableVec[nTableCount - 1]->SetRealCols(aTableVec[nTableCount - 1]->GetColumn() + 1, - aTableVec[nTableCount - 1]->GetRealCols(aTableVec[nTableCount - 1]->GetColumn()) - + aTableVec[nTableCount - 1]->GetColsPerCol(aTableVec[nTableCount - 1]->GetColumn())); - if ((!bIsCovered) || (bIsCovered && - (aTableVec[nTableCount - 1]->GetColsPerCol(aTableVec[nTableCount - 1]->GetColumn()) > 1))) + sal_Int32 nCol = rLastTab.GetColumn(); + sal_Int32 nRow = rLastTab.GetRow(); + rLastTab.SetRealCols( + nCol + 1, rLastTab.GetRealCols(nCol) + rLastTab.GetColsPerCol(nCol)); + + if ((!bIsCovered) || (bIsCovered && (rLastTab.GetColsPerCol(nCol) > 1))) { - if ((aTableVec[nTableCount - 1]->GetRowsPerRow(aTableVec[nTableCount - 1]->GetRow()) > 1) || - (aTableVec[nTableCount - 1]->GetColsPerCol(aTableVec[nTableCount - 1]->GetColumn()) > 1)) + if ((rLastTab.GetRowsPerRow(nRow) > 1) || (rLastTab.GetColsPerCol(nCol) > 1)) DoMerge(); } } @@ -553,38 +549,41 @@ void ScMyTables::AddColumn(sal_Bool bIsCovered) void ScMyTables::NewTable(sal_Int32 nTempSpannedCols) { - ++nTableCount; - if (static_cast<sal_uInt32>(nTableCount) >= aTableVec.size()) - aTableVec.resize(aTableVec.size() + nDefaultTabCount); - ScMyTableData* aTable(new ScMyTableData(nCurrentSheet)); - if (nTableCount > 1) + maTables.push_back(new ScMyTableData(nCurrentSheet)); + + if (maTables.size() > 1) { - ScMyTableData* pTableData = aTableVec[nTableCount - 2]; - const sal_Int32 nCol(pTableData->GetColumn()); - const sal_Int32 nColCount(pTableData->GetColCount()); - const sal_Int32 nColsPerCol(pTableData->GetColsPerCol(nCol)); - sal_Int32 nSpannedCols(pTableData->GetSpannedCols()); - sal_Int32 nTemp(nSpannedCols - nColCount); - sal_Int32 nTemp2(nCol - (nColCount - 1)); + ScMyTableData& rFirstTab = maTables.front(); + + const sal_Int32 nCol = rFirstTab.GetColumn(); + const sal_Int32 nColCount = rFirstTab.GetColCount(); + const sal_Int32 nColsPerCol = rFirstTab.GetColsPerCol(nCol); + + sal_Int32 nSpannedCols = rFirstTab.GetSpannedCols(); + sal_Int32 nTemp = nSpannedCols - nColCount; + sal_Int32 nTemp2 = nCol - nColCount + 1; if ((nTemp > 0) && (nTemp2 == 0)) - nTempSpannedCols *= (nTemp + 1); + nTempSpannedCols *= nTemp + 1; else if (nColsPerCol > 1) nTempSpannedCols *= nColsPerCol; sal_Int32 nToMerge; if (nSpannedCols > nColCount) - nToMerge = pTableData->GetChangedCols(nCol, nCol + nColsPerCol + nSpannedCols - nColCount); + nToMerge = rFirstTab.GetChangedCols(nCol, nCol + nColsPerCol + nSpannedCols - nColCount); else - nToMerge = pTableData->GetChangedCols(nCol, nCol + nColsPerCol); + nToMerge = rFirstTab.GetChangedCols(nCol, nCol + nColsPerCol); if (nToMerge > nCol) nTempSpannedCols += nToMerge; } - aTable->SetSpannedCols(nTempSpannedCols); - aTableVec[nTableCount - 1] = aTable; - if (nTableCount > 1) + + ScMyTableData& rNewTab = maTables.back(); + rNewTab.SetSpannedCols(nTempSpannedCols); + + size_t n = maTables.size(); + if (n > 1) { - aTableVec[nTableCount - 2]->SetSubTableSpanned(aTable->GetSpannedCols()); + maTables[n-2].SetSubTableSpanned(rNewTab.GetSpannedCols()); UnMerge(); } } @@ -593,7 +592,8 @@ void ScMyTables::UpdateRowHeights() { if (rImport.GetModel().is()) { - rImport.LockSolarMutex(); + ScXMLImport::MutexGuard aGuard(rImport); + // update automatic row heights // For sheets with any kind of shapes (including notes), @@ -627,24 +627,18 @@ void ScMyTables::UpdateRowHeights() pDoc->LockStreamValid( false ); } } - - rImport.UnlockSolarMutex(); } } void ScMyTables::DeleteTable() { - rImport.LockSolarMutex(); + ScXMLImport::MutexGuard aGuard(rImport); nCurrentColStylePos = 0; - if (nTableCount > 0) - { - ScMyTableData* aTable = aTableVec[nTableCount - 1]; - delete aTable; - aTableVec[nTableCount - 1] = NULL; - nTableCount--; - } - if (nTableCount == 0) // only set the styles if all subtables are importet and the table is finished + if (!maTables.empty()) + maTables.pop_back(); + + if (maTables.empty()) // only set the styles if all subtables are importet and the table is finished { rImport.GetStylesImportHelper()->SetStylesToRanges(); rImport.SetStylesToRangesFinished(); @@ -676,8 +670,6 @@ void ScMyTables::DeleteTable() rImport.GetDocument()->SetTabProtection(static_cast<SCTAB>(nCurrentSheet), pProtect.get()); } - rImport.UnlockSolarMutex(); - //#95582#; find out whether it was possible to set the sheet name // test it here, because if it is a linked table the name is changed by importing // the linking informations @@ -704,14 +696,16 @@ void ScMyTables::DeleteTable() table::CellAddress ScMyTables::GetRealCellPos() { - sal_Int32 nRow(0); - sal_Int32 nCol(0); - for (sal_Int32 i = 0; i < nTableCount; ++i) + sal_Int32 nRow = 0; + sal_Int32 nCol = 0; + size_t n = maTables.size(); + for (size_t i = 0; i < n; ++i) { - ScMyTableData* pTableData = aTableVec[i]; - nCol += pTableData->GetRealCols(pTableData->GetColumn()); - nRow += pTableData->GetRealRows(pTableData->GetRow()); + const ScMyTableData& rTab = maTables[i]; + nCol += rTab.GetRealCols(rTab.GetColumn()); + nRow += rTab.GetRealRows(rTab.GetRow()); } + aRealCellPos.Row = nRow; aRealCellPos.Column = nCol; aRealCellPos.Sheet = sal::static_int_cast<sal_Int16>(nCurrentSheet); @@ -720,12 +714,13 @@ table::CellAddress ScMyTables::GetRealCellPos() void ScMyTables::AddColCount(sal_Int32 nTempColCount) { - aTableVec[nTableCount - 1]->SetColCount(aTableVec[nTableCount - 1]->GetColCount() + nTempColCount); + ScMyTableData& rLastTab = maTables.back(); + rLastTab.SetColCount(rLastTab.GetColCount() + nTempColCount); } void ScMyTables::AddColStyle(const sal_Int32 nRepeat, const rtl::OUString& rCellStyleName) { - DBG_ASSERT(nTableCount == 1, "not possible to use default styles on columns in subtables"); + DBG_ASSERT(maTables.size() == 1, "not possible to use default styles on columns in subtables"); rImport.GetStylesImportHelper()->AddColumnStyle(rCellStyleName, nCurrentColStylePos, nRepeat); nCurrentColStylePos += nRepeat; } @@ -766,12 +761,10 @@ sal_Bool ScMyTables::HasXShapes() return !((nCurrentSheet != nCurrentXShapes) || !xShapes.is()); } -void ScMyTables::AddShape(uno::Reference <drawing::XShape>& rShape, - rtl::OUString* pRangeList, - table::CellAddress& rStartAddress, table::CellAddress& rEndAddress, - sal_Int32 nEndX, sal_Int32 nEndY) +void ScMyTables::AddOLE(uno::Reference <drawing::XShape>& rShape, + const rtl::OUString &rRangeList) { - aResizeShapes.AddShape(rShape, pRangeList, rStartAddress, rEndAddress, nEndX, nEndY); + aFixupOLEs.AddOLE(rShape, rRangeList); } void ScMyTables::AddMatrixRange( diff --git a/sc/source/filter/xml/xmlsubti.hxx b/sc/source/filter/xml/xmlsubti.hxx index 6268a874d357..1091e6e242c2 100644 --- a/sc/source/filter/xml/xmlsubti.hxx +++ b/sc/source/filter/xml/xmlsubti.hxx @@ -37,12 +37,14 @@ #include <com/sun/star/table/CellRangeAddress.hpp> #include <com/sun/star/frame/XModel.hpp> -#include <vector> -#include <list> #include "XMLTableShapeResizer.hxx" #include "formula/grammar.hxx" #include "tabprotection.hxx" +#include <vector> +#include <list> +#include <boost/ptr_container/ptr_vector.hpp> + class ScXMLImport; typedef std::vector<sal_Int32> ScMysalIntVec; @@ -127,21 +129,20 @@ private: ScXMLImport& rImport; - ScMyShapeResizer aResizeShapes; + ScMyOLEFixer aFixupOLEs; ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheet > xCurrentSheet; ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > xCurrentCellRange; ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > xDrawPage; ::com::sun::star::uno::Reference < ::com::sun::star::drawing::XShapes > xShapes; rtl::OUString sCurrentSheetName; - std::vector<ScMyTableData*> aTableVec; + ::boost::ptr_vector<ScMyTableData> maTables; ScXMLTabProtectionData maProtectionData; ScMyMatrixRangeList aMatrixRangeList; com::sun::star::table::CellAddress aRealCellPos; sal_Int32 nCurrentColStylePos; sal_Int16 nCurrentDrawPage; sal_Int16 nCurrentXShapes; - sal_Int32 nTableCount; sal_Int32 nCurrentSheet; sal_Bool IsMerged (const com::sun::star::uno::Reference <com::sun::star::table::XCellRange>& xCellRange, @@ -163,7 +164,9 @@ public: void AddColumn(sal_Bool bIsCovered); void NewTable(sal_Int32 nTempSpannedCols); void UpdateRowHeights(); - void ResizeShapes() { aResizeShapes.ResizeShapes(); } + void FixupOLEs() { aFixupOLEs.FixupOLEs(); } + sal_Bool IsOLE(com::sun::star::uno::Reference< com::sun::star::drawing::XShape >& rShape) const + { return ScMyOLEFixer::IsOLE(rShape); } void DeleteTable(); com::sun::star::table::CellAddress GetRealCellPos(); void AddColCount(sal_Int32 nTempColCount); @@ -171,23 +174,20 @@ public: ScXMLTabProtectionData& GetCurrentProtectionData() { return maProtectionData; } rtl::OUString GetCurrentSheetName() const { return sCurrentSheetName; } sal_Int32 GetCurrentSheet() const { return nCurrentSheet; } - sal_Int32 GetCurrentColumn() const { return aTableVec[nTableCount - 1]->GetColCount(); } - sal_Int32 GetCurrentRow() const { return aTableVec[nTableCount - 1]->GetRow(); } + sal_Int32 GetCurrentColumn() const { return maTables.back().GetColCount(); } + sal_Int32 GetCurrentRow() const { return maTables.back().GetRow(); } ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheet > - GetCurrentXSheet() { return xCurrentSheet; } + GetCurrentXSheet() const { return xCurrentSheet; } ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > - GetCurrentXCellRange() { return xCurrentCellRange; } + GetCurrentXCellRange() const { return xCurrentCellRange; } ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > GetCurrentXDrawPage(); ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > GetCurrentXShapes(); sal_Bool HasDrawPage(); sal_Bool HasXShapes(); - void AddShape(com::sun::star::uno::Reference <com::sun::star::drawing::XShape>& rShape, - rtl::OUString* pRangeList, - com::sun::star::table::CellAddress& rStartAddress, - com::sun::star::table::CellAddress& rEndAddress, - sal_Int32 nEndX, sal_Int32 nEndY); + void AddOLE(com::sun::star::uno::Reference <com::sun::star::drawing::XShape>& rShape, + const rtl::OUString &rRangeList); void AddMatrixRange( sal_Int32 nStartColumn, sal_Int32 nStartRow, diff --git a/sc/source/filter/xml/xmltabi.cxx b/sc/source/filter/xml/xmltabi.cxx index 01e613b1ea74..a80093e5a0e0 100644 --- a/sc/source/filter/xml/xmltabi.cxx +++ b/sc/source/filter/xml/xmltabi.cxx @@ -65,6 +65,8 @@ using namespace com::sun::star; using namespace xmloff::token; using ::com::sun::star::uno::Reference; +using ::com::sun::star::uno::Sequence; +using ::com::sun::star::uno::UNO_QUERY; using ::com::sun::star::xml::sax::XAttributeList; using ::rtl::OUString; @@ -356,80 +358,81 @@ SvXMLImportContext *ScXMLTableContext::CreateChildContext( USHORT nPrefix, void ScXMLTableContext::EndElement() { - // get end offset in file (if available) -// sal_Int32 nEndOffset = GetScImport().GetByteOffset(); - - GetScImport().LockSolarMutex(); + ScXMLImport::MutexGuard aMutexGuard(GetScImport()); GetScImport().GetStylesImportHelper()->EndTable(); ScDocument* pDoc(GetScImport().GetDocument()); - if (pDoc) + if (!pDoc) + return; + + SCTAB nCurTab = static_cast<SCTAB>(GetScImport().GetTables().GetCurrentSheet()); + if (sPrintRanges.getLength()) { - if (sPrintRanges.getLength()) + Reference< sheet::XPrintAreas > xPrintAreas( + GetScImport().GetTables().GetCurrentXSheet(), UNO_QUERY); + + if( xPrintAreas.is() ) { - uno::Reference< sheet::XPrintAreas > xPrintAreas( GetScImport().GetTables().GetCurrentXSheet(), uno::UNO_QUERY ); - if( xPrintAreas.is() ) - { - uno::Sequence< table::CellRangeAddress > aRangeList; - ScRangeStringConverter::GetRangeListFromString( aRangeList, sPrintRanges, pDoc, ::formula::FormulaGrammar::CONV_OOO ); - xPrintAreas->setPrintAreas( aRangeList ); - } + Sequence< table::CellRangeAddress > aRangeList; + ScRangeStringConverter::GetRangeListFromString( aRangeList, sPrintRanges, pDoc, ::formula::FormulaGrammar::CONV_OOO ); + xPrintAreas->setPrintAreas( aRangeList ); } - else if (bPrintEntireSheet) pDoc->SetPrintEntireSheet(static_cast<SCTAB>(GetScImport().GetTables().GetCurrentSheet())); + } + else if (!bPrintEntireSheet) + // Sheet has "print entire sheet" option by default. Remove it. + pDoc->ClearPrintRanges(nCurTab); - ScOutlineTable* pOutlineTable(pDoc->GetOutlineTable(static_cast<SCTAB>(GetScImport().GetTables().GetCurrentSheet()), sal_False)); - if (pOutlineTable) + ScOutlineTable* pOutlineTable(pDoc->GetOutlineTable(nCurTab, sal_False)); + if (pOutlineTable) + { + ScOutlineArray* pColArray(pOutlineTable->GetColArray()); + sal_Int32 nDepth(pColArray->GetDepth()); + sal_Int32 i; + for (i = 0; i < nDepth; ++i) { - ScOutlineArray* pColArray(pOutlineTable->GetColArray()); - sal_Int32 nDepth(pColArray->GetDepth()); - sal_Int32 i; - for (i = 0; i < nDepth; ++i) - { - sal_Int32 nCount(pColArray->GetCount(static_cast<USHORT>(i))); - for (sal_Int32 j = 0; j < nCount; ++j) - { - ScOutlineEntry* pEntry(pColArray->GetEntry(static_cast<USHORT>(i), static_cast<USHORT>(j))); - if (pEntry->IsHidden()) - pColArray->SetVisibleBelow(static_cast<USHORT>(i), static_cast<USHORT>(j), sal_False); - } - } - ScOutlineArray* pRowArray(pOutlineTable->GetRowArray()); - nDepth = pRowArray->GetDepth(); - for (i = 0; i < nDepth; ++i) + sal_Int32 nCount(pColArray->GetCount(static_cast<USHORT>(i))); + for (sal_Int32 j = 0; j < nCount; ++j) { - sal_Int32 nCount(pRowArray->GetCount(static_cast<USHORT>(i))); - for (sal_Int32 j = 0; j < nCount; ++j) - { - ScOutlineEntry* pEntry(pRowArray->GetEntry(static_cast<USHORT>(i), static_cast<USHORT>(j))); - if (pEntry->IsHidden()) - pRowArray->SetVisibleBelow(static_cast<USHORT>(i), static_cast<USHORT>(j), sal_False); - } + ScOutlineEntry* pEntry(pColArray->GetEntry(static_cast<USHORT>(i), static_cast<USHORT>(j))); + if (pEntry->IsHidden()) + pColArray->SetVisibleBelow(static_cast<USHORT>(i), static_cast<USHORT>(j), sal_False); } } - if (GetScImport().GetTables().HasDrawPage()) + ScOutlineArray* pRowArray(pOutlineTable->GetRowArray()); + nDepth = pRowArray->GetDepth(); + for (i = 0; i < nDepth; ++i) { - if (GetScImport().GetTables().HasXShapes()) + sal_Int32 nCount(pRowArray->GetCount(static_cast<USHORT>(i))); + for (sal_Int32 j = 0; j < nCount; ++j) { - GetScImport().GetShapeImport()->popGroupAndSort(); - uno::Reference < drawing::XShapes > xTempShapes(GetScImport().GetTables().GetCurrentXShapes()); - GetScImport().GetShapeImport()->endPage(xTempShapes); + ScOutlineEntry* pEntry(pRowArray->GetEntry(static_cast<USHORT>(i), static_cast<USHORT>(j))); + if (pEntry->IsHidden()) + pRowArray->SetVisibleBelow(static_cast<USHORT>(i), static_cast<USHORT>(j), sal_False); } - if (bStartFormPage) - GetScImport().GetFormImport()->endPage(); } - - GetScImport().GetTables().DeleteTable(); - GetScImport().ProgressBarIncrement(sal_False); - - // store stream positions - if (!pExternalRefInfo.get() && nStartOffset >= 0 /* && nEndOffset >= 0 */) + } + if (GetScImport().GetTables().HasDrawPage()) + { + if (GetScImport().GetTables().HasXShapes()) { - ScSheetSaveData* pSheetData = ScModelObj::getImplementation(GetScImport().GetModel())->GetSheetSaveData(); - sal_Int32 nTab = GetScImport().GetTables().GetCurrentSheet(); - // pSheetData->AddStreamPos( nTab, nStartOffset, nEndOffset ); - pSheetData->StartStreamPos( nTab, nStartOffset ); + GetScImport().GetShapeImport()->popGroupAndSort(); + uno::Reference < drawing::XShapes > xTempShapes(GetScImport().GetTables().GetCurrentXShapes()); + GetScImport().GetShapeImport()->endPage(xTempShapes); } + if (bStartFormPage) + GetScImport().GetFormImport()->endPage(); + } + + GetScImport().GetTables().DeleteTable(); + GetScImport().ProgressBarIncrement(sal_False); + + // store stream positions + if (!pExternalRefInfo.get() && nStartOffset >= 0 /* && nEndOffset >= 0 */) + { + ScSheetSaveData* pSheetData = ScModelObj::getImplementation(GetScImport().GetModel())->GetSheetSaveData(); + sal_Int32 nTab = GetScImport().GetTables().GetCurrentSheet(); + // pSheetData->AddStreamPos( nTab, nStartOffset, nEndOffset ); + pSheetData->StartStreamPos( nTab, nStartOffset ); } - GetScImport().UnlockSolarMutex(); } // ============================================================================ diff --git a/sc/source/filter/xml/xmlwrap.cxx b/sc/source/filter/xml/xmlwrap.cxx index e61cdb4927ef..6dc190374708 100644 --- a/sc/source/filter/xml/xmlwrap.cxx +++ b/sc/source/filter/xml/xmlwrap.cxx @@ -180,7 +180,7 @@ sal_uInt32 ScXMLImportWrapper::ImportFromComponent(uno::Reference<lang::XMultiSe // get a pipe for connecting the data source to the parser xPipe = xServiceFactory->createInstance( - OUString::createFromAscii("com.sun.star.io.Pipe") ); + OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.io.Pipe")) ); DBG_ASSERT( xPipe.is(), "XMLReader::Read: com.sun.star.io.Pipe service missing" ); if( !xPipe.is() ) @@ -450,7 +450,7 @@ sal_Bool ScXMLImportWrapper::Import(sal_Bool bStylesOnly, ErrCode& nError) aName = pDocHierarchItem->GetValue(); } else - aName = ::rtl::OUString::createFromAscii( "dummyObjectName" ); + aName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "dummyObjectName" )); if( aName.getLength() ) { @@ -842,7 +842,7 @@ sal_Bool ScXMLImportWrapper::Export(sal_Bool bStylesOnly) // TODO/LATER: do not do it for embedded links if( SFX_CREATE_MODE_EMBEDDED == pObjSh->GetCreateMode() ) { - OUString aName = ::rtl::OUString::createFromAscii( "dummyObjectName" ); + OUString aName(RTL_CONSTASCII_USTRINGPARAM("dummyObjectName")); if ( pMedium && pMedium->GetItemSet() ) { const SfxStringItem* pDocHierarchItem = static_cast<const SfxStringItem*>( @@ -994,5 +994,4 @@ sal_Bool ScXMLImportWrapper::Export(sal_Bool bStylesOnly) } - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/Accessibility/AccessibleContextBase.cxx b/sc/source/ui/Accessibility/AccessibleContextBase.cxx index 621a55ae0c18..54e2b0e45834 100644 --- a/sc/source/ui/Accessibility/AccessibleContextBase.cxx +++ b/sc/source/ui/Accessibility/AccessibleContextBase.cxx @@ -336,7 +336,6 @@ sal_Int16 SAL_CALL if (!msDescription.getLength()) { OUString sDescription(createAccessibleDescription()); -// DBG_ASSERT(sDescription.getLength(), "We should give always a descripition."); if (msDescription != sDescription) { diff --git a/sc/source/ui/Accessibility/AccessibleCsvControl.cxx b/sc/source/ui/Accessibility/AccessibleCsvControl.cxx index c70aa3a5e56e..dd2e5028d588 100644 --- a/sc/source/ui/Accessibility/AccessibleCsvControl.cxx +++ b/sc/source/ui/Accessibility/AccessibleCsvControl.cxx @@ -489,13 +489,6 @@ Sequence< PropertyValue > SAL_CALL ScAccessibleCsvRuler::getCharacterAttributes( ensureValidIndexWithEnd( nIndex ); Sequence< PropertyValue > aSeq; lcl_FillFontAttributes( aSeq, implGetRuler().GetFont() ); -//! TODO split attribute: waiting for #102221# -// if( implHasSplit( nIndex ) ) -// { -// sal_Int32 nIndex = lcl_ExpandSequence( aSeq, 1 ); -// aSeq[ nIndex ].Name = CREATE_OUSTRING( "..." ); -// aSeq[ nIndex ].Value <<= ...; -// } return aSeq; } diff --git a/sc/source/ui/Accessibility/AccessibleDataPilotControl.cxx b/sc/source/ui/Accessibility/AccessibleDataPilotControl.cxx index ea4865c91724..f4915eee443d 100644 --- a/sc/source/ui/Accessibility/AccessibleDataPilotControl.cxx +++ b/sc/source/ui/Accessibility/AccessibleDataPilotControl.cxx @@ -53,7 +53,7 @@ public: ScAccessibleDataPilotButton( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible>& rxParent, - ScDPFieldWindow* pDPFieldWindow, + ScDPFieldControlBase* pDPFieldWindow, sal_Int32 nIndex); virtual void Init(); @@ -146,14 +146,14 @@ protected: throw (::com::sun::star::uno::RuntimeException); private: - ScDPFieldWindow* mpDPFieldWindow; + ScDPFieldControlBase* mpDPFieldWindow; sal_Int32 mnIndex; }; //===== internal ======================================================== ScAccessibleDataPilotControl::ScAccessibleDataPilotControl( const uno::Reference<XAccessible>& rxParent, - ScDPFieldWindow* pDPFieldWindow) + ScDPFieldControlBase* pDPFieldWindow) : ScAccessibleContextBase(rxParent, AccessibleRole::GROUP_BOX), mpDPFieldWindow(pDPFieldWindow) @@ -381,7 +381,7 @@ sal_Int32 SAL_CALL ScAccessibleDataPilotControl::getBackground( ) sal_Int32 nColor(0); if (mpDPFieldWindow) { - if (mpDPFieldWindow->GetType() == TYPE_SELECT) + if (mpDPFieldWindow->GetFieldType() == TYPE_SELECT) { nColor = mpDPFieldWindow->GetSettings().GetStyleSettings().GetFaceColor().GetColor(); } @@ -527,7 +527,7 @@ Rectangle ScAccessibleDataPilotControl::GetBoundingBox(void) const ScAccessibleDataPilotButton::ScAccessibleDataPilotButton( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible>& rxParent, - ScDPFieldWindow* pDPFieldWindow, + ScDPFieldControlBase* pDPFieldWindow, sal_Int32 nIndex) : ScAccessibleContextBase(rxParent, AccessibleRole::PUSH_BUTTON), mpDPFieldWindow(pDPFieldWindow), diff --git a/sc/source/ui/Accessibility/AccessibleDocument.cxx b/sc/source/ui/Accessibility/AccessibleDocument.cxx index ae1d1b590350..eeb3180e14d7 100644 --- a/sc/source/ui/Accessibility/AccessibleDocument.cxx +++ b/sc/source/ui/Accessibility/AccessibleDocument.cxx @@ -41,6 +41,7 @@ #include "drawview.hxx" #include "gridwin.hxx" #include "AccessibleEditObject.hxx" +#include "userdat.hxx" #include "scresid.hxx" #include "sc.hrc" #include <com/sun/star/accessibility/AccessibleEventId.hpp> @@ -82,7 +83,6 @@ struct ScAccessibleShapeData ~ScAccessibleShapeData(); mutable ::accessibility::AccessibleShape* pAccShape; mutable ScAddress* pRelationCell; // if it is NULL this shape is anchored on the table -// SdrObject* pShape; com::sun::star::uno::Reference< com::sun::star::drawing::XShape > xShape; mutable sal_Bool bSelected; sal_Bool bSelectable; @@ -978,35 +978,10 @@ ScAddress* ScChildrenShapes::GetAnchor(const uno::Reference<drawing::XShape>& xS uno::Reference<beans::XPropertySet> xShapeProp(xShape, uno::UNO_QUERY); if (pShapeImp && xShapeProp.is()) { - SdrObject *pSdrObj = pShapeImp->GetSdrObject(); - if (pSdrObj) + if (SdrObject *pSdrObj = pShapeImp->GetSdrObject()) { - if (ScDrawLayer::GetAnchor(pSdrObj) == SCA_CELL) - { - ScDocument* pDoc = mpViewShell->GetViewData()->GetDocument(); - if (pDoc) - { - rtl::OUString sCaptionShape(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.CaptionShape")); - awt::Point aPoint(xShape->getPosition()); - awt::Size aSize(xShape->getSize()); - rtl::OUString sType(xShape->getShapeType()); - Rectangle aRectangle(aPoint.X, aPoint.Y, aPoint.X + aSize.Width, aPoint.Y + aSize.Height); - if ( sType.equals(sCaptionShape) ) - { - awt::Point aRelativeCaptionPoint; - rtl::OUString sCaptionPoint( RTL_CONSTASCII_USTRINGPARAM( "CaptionPoint" )); - xShapeProp->getPropertyValue( sCaptionPoint ) >>= aRelativeCaptionPoint; - Point aCoreRelativeCaptionPoint(aRelativeCaptionPoint.X, aRelativeCaptionPoint.Y); - Point aCoreAbsoluteCaptionPoint(aPoint.X, aPoint.Y); - aCoreAbsoluteCaptionPoint += aCoreRelativeCaptionPoint; - aRectangle.Union(Rectangle(aCoreAbsoluteCaptionPoint, aCoreAbsoluteCaptionPoint)); - } - ScRange aRange = pDoc->GetRange(mpAccessibleDocument->getVisibleTable(), aRectangle); - pAddress = new ScAddress(aRange.aStart); - } - } -// else -// do nothing, because it is always a NULL Pointer + if (ScDrawObjData *pAnchor = ScDrawLayer::GetObjData(pSdrObj)) + return new ScAddress(pAnchor->maStart); } } } diff --git a/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx b/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx index f1ffe5dbd580..2cac097b8ce3 100644 --- a/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx +++ b/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx @@ -792,21 +792,6 @@ void ScShapeChilds::Notify(SfxBroadcaster&, const SfxHint& rHint) { } break; - // no longer necessary -/* case HINT_OBJINSERTED : // Neues Zeichenobjekt eingefuegt - { - uno::Reference<drawing::XShape> xShape (pObj->getUnoShape(), uno::UNO_QUERY); - if (xShape.is()) - AddShape(xShape, pObj->GetLayer()); - } - break; - case HINT_OBJREMOVED : // Zeichenobjekt aus Liste entfernt - { - uno::Reference<drawing::XShape> xShape (pObj->getUnoShape(), uno::UNO_QUERY); - if (xShape.is()) - RemoveShape(xShape, pObj->GetLayer()); - } - break;*/ default : { // other events are not interesting @@ -1201,144 +1186,6 @@ void ScShapeChilds::FillShapes(const Rectangle& aPixelPaintRect, const MapMode& } } - -/*void ScShapeChilds::AddShape(const uno::Reference<drawing::XShape>& xShape, SdrLayerID aLayerID) -{ - uno::Reference < XAccessible > xNew; - Window* pWin = mpViewShell->GetWindow(); - if (pWin) - { - ScShapeRangeVec::iterator aEndItr = maShapeRanges.end(); - ScShapeRangeVec::iterator aItr = maShapeRanges.begin(); - sal_Bool bNotify(sal_False); - uno::Reference <XAccessible> xAcc; - while (aItr != aEndItr) - { - Rectangle aLogicPaintRect(pWin->PixelToLogic(aItr->maPixelRect, aItr->maMapMode)); - Rectangle aRect(VCLPoint(xShape->getPosition()), VCLSize(xShape->getSize())); - if(!aRect.GetIntersection(aLogicPaintRect).IsEmpty()) - { - ScShapeChild aShape; - aShape.mxShape = xShape; - switch (aLayerID) - { - case SC_LAYER_INTERN: - case SC_LAYER_FRONT: - { - SetAnchor(aShape); - aItr->maForeShapes.push_back(aShape); - std::sort(aItr->maForeShapes.begin(), aItr->maForeShapes.end(),ScShapeChildLess()); - - } - break; - case SC_LAYER_BACK: - { - aItr->maBackShapes.push_back(aShape); - std::sort(aItr->maBackShapes.begin(), aItr->maBackShapes.end(),ScShapeChildLess()); - } - break; - case SC_LAYER_CONTROLS: - { - SetAnchor(aShape); - aItr->maControls.push_back(aShape); - std::sort(aItr->maControls.begin(), aItr->maControls.end(),ScShapeChildLess()); - } - break; - default: - { - DBG_ERRORFILE("I don't know this layer."); - } - break; - } - if (bNotify) - { - xAcc = GetAccShape(aShape); - AccessibleEventObject aEvent; - aEvent.Source = uno::Reference<XAccessibleContext> (mpAccDoc); - aEvent.EventId = AccessibleEventId::CHILD; - aEvent.NewValue <<= xAcc; - mpAccDoc->CommitChange(aEvent); - bNotify = sal_False; - } - xAcc = NULL; - } - ++aItr; - } - } -}*/ - -/*sal_Bool HaveToNotify(uno::Reference<XAccessible>& xAcc, ScShapeChildVec::iterator aItr) -{ - sal_Bool bResult(sal_False); - if (aItr->mpAccShape) - { - bResult = sal_True; - xAcc = aItr->mpAccShape; - } - else - DBG_ERRORFILE("No Accessible object found. Don't know how to notify."); - return bResult; -}*/ - -/*void ScShapeChilds::RemoveShape(const uno::Reference<drawing::XShape>& xShape, SdrLayerID aLayerID) -{ - ScShapeRangeVec::iterator aEndItr = maShapeRanges.end(); - ScShapeRangeVec::iterator aItr = maShapeRanges.begin(); - ScShapeChildVec::iterator aEraseItr; - sal_Bool bNotify(sal_False); - uno::Reference <XAccessible> xAcc; - while (aItr != aEndItr) - { - switch (aLayerID) - { - case SC_LAYER_INTERN: - case SC_LAYER_FRONT: - { - if (FindShape(aItr->maForeShapes, xShape, aEraseItr)) - { - bNotify = HaveToNotify(xAcc, aEraseItr); - aItr->maForeShapes.erase(aEraseItr); - } - } - break; - case SC_LAYER_BACK: - { - if (FindShape(aItr->maBackShapes, xShape, aEraseItr)) - { - bNotify = HaveToNotify(xAcc, aEraseItr); - aItr->maBackShapes.erase(aEraseItr); - } - } - break; - case SC_LAYER_CONTROLS: - { - if (FindShape(aItr->maControls, xShape, aEraseItr)) - { - bNotify = HaveToNotify(xAcc, aEraseItr); - aItr->maControls.erase(aEraseItr); - } - } - break; - default: - { - DBG_ERRORFILE("I don't know this layer."); - } - break; - } - if (bNotify) - { - AccessibleEventObject aEvent; - aEvent.Source = uno::Reference<XAccessibleContext> (mpAccDoc); - aEvent.EventId = AccessibleEventId::CHILD; - aEvent.OldValue <<= xAcc; - mpAccDoc->CommitChange(aEvent); - bNotify = sal_False; - } - xAcc = NULL; - ++aItr; - } -}*/ - SdrPage* ScShapeChilds::GetDrawPage() const { SCTAB nTab( mpViewShell->GetLocationData().GetPrintTab() ); @@ -1431,8 +1278,6 @@ ScAccessibleDocumentPagePreview::ScAccessibleDocumentPagePreview( if (pViewShell) pViewShell->AddAccessibilityObject(*this); -// GetNotesChilds(); not neccessary and reduces the creation performance -// GetShapeChilds(); } ScAccessibleDocumentPagePreview::~ScAccessibleDocumentPagePreview(void) @@ -1592,19 +1437,6 @@ uno::Reference< XAccessible > SAL_CALL ScAccessibleDocumentPagePreview::getAcces const ScPreviewLocationData& rData = mpViewShell->GetLocationData(); ScPagePreviewCountData aCount( rData, mpViewShell->GetWindow(), GetNotesChilds(), GetShapeChilds() ); -/* if ( rData.HasCellsInRange( Rectangle( rPoint, rPoint ) ) ) - { - if ( !mpTable && (aCount.nTables > 0) ) - { - //! order is background shapes, header, table or notes, footer, foreground shapes, controls - sal_Int32 nIndex (aCount.nBackShapes + aCount.nHeaders); - - mpTable = new ScAccessiblePreviewTable( this, mpViewShell, nIndex ); - mpTable->acquire(); - mpTable->Init(); - } - xAccessible = mpTable; - }*/ if ( !mpTable && (aCount.nTables > 0) ) { //! order is background shapes, header, table or notes, footer, foreground shapes, controls diff --git a/sc/source/ui/Accessibility/AccessibleFilterMenu.cxx b/sc/source/ui/Accessibility/AccessibleFilterMenu.cxx index b4948460be42..ce7e7d4de919 100644 --- a/sc/source/ui/Accessibility/AccessibleFilterMenu.cxx +++ b/sc/source/ui/Accessibility/AccessibleFilterMenu.cxx @@ -173,7 +173,7 @@ Reference<XAccessibleStateSet> ScAccessibleFilterMenu::getAccessibleStateSet() OUString ScAccessibleFilterMenu::getImplementationName() throw (RuntimeException) { - return OUString::createFromAscii("ScAccessibleFilterMenu"); + return OUString(RTL_CONSTASCII_USTRINGPARAM("ScAccessibleFilterMenu")); } // XAccessibleEventBroadcaster diff --git a/sc/source/ui/Accessibility/AccessibleFilterMenuItem.cxx b/sc/source/ui/Accessibility/AccessibleFilterMenuItem.cxx index 1c70ee6ba5c5..bff9ad5bd88e 100644 --- a/sc/source/ui/Accessibility/AccessibleFilterMenuItem.cxx +++ b/sc/source/ui/Accessibility/AccessibleFilterMenuItem.cxx @@ -90,7 +90,7 @@ Reference<XAccessibleStateSet> ScAccessibleFilterMenuItem::getAccessibleStateSet OUString ScAccessibleFilterMenuItem::getImplementationName() throw (RuntimeException) { - return OUString::createFromAscii("ScAccessibleFilterMenuItem"); + return OUString(RTL_CONSTASCII_USTRINGPARAM("ScAccessibleFilterMenuItem")); } // XAccessibleAction @@ -110,7 +110,7 @@ sal_Bool ScAccessibleFilterMenuItem::doAccessibleAction(sal_Int32 /*nIndex*/) OUString ScAccessibleFilterMenuItem::getAccessibleActionDescription(sal_Int32 /*nIndex*/) throw (IndexOutOfBoundsException, RuntimeException) { - return OUString::createFromAscii("click"); + return OUString(RTL_CONSTASCII_USTRINGPARAM("click")); } Reference<XAccessibleKeyBinding> ScAccessibleFilterMenuItem::getAccessibleActionKeyBinding( diff --git a/sc/source/ui/Accessibility/AccessibleFilterTopWindow.cxx b/sc/source/ui/Accessibility/AccessibleFilterTopWindow.cxx index fb649eba5f4f..4e28e8bbb7cf 100644 --- a/sc/source/ui/Accessibility/AccessibleFilterTopWindow.cxx +++ b/sc/source/ui/Accessibility/AccessibleFilterTopWindow.cxx @@ -97,7 +97,7 @@ Reference<XAccessible> ScAccessibleFilterTopWindow::getAccessibleChild( OUString ScAccessibleFilterTopWindow::getImplementationName() throw (RuntimeException) { - return OUString::createFromAscii("ScAccessibleFilterTopWindow"); + return OUString(RTL_CONSTASCII_USTRINGPARAM("ScAccessibleFilterTopWindow")); } void ScAccessibleFilterTopWindow::setAccessibleChild( diff --git a/sc/source/ui/Accessibility/AccessiblePreviewTable.cxx b/sc/source/ui/Accessibility/AccessiblePreviewTable.cxx index fd98a67dbd7e..342c7f68d91f 100644 --- a/sc/source/ui/Accessibility/AccessiblePreviewTable.cxx +++ b/sc/source/ui/Accessibility/AccessiblePreviewTable.cxx @@ -172,31 +172,6 @@ sal_Int32 SAL_CALL ScAccessiblePreviewTable::getAccessibleColumnCount() throw (u rtl::OUString SAL_CALL ScAccessiblePreviewTable::getAccessibleRowDescription( sal_Int32 nRow ) throw (lang::IndexOutOfBoundsException, uno::RuntimeException) { - // is not supported or specified so not implemented -/* SolarMutexGuard aGuard; - IsObjectValid(); - - FillTableInfo(); - - rtl::OUString sName; - if ( mpTableInfo && nRow >= 0 && nRow < mpTableInfo->GetRows() ) - { - const ScPreviewColRowInfo& rInfo = mpTableInfo->GetRowInfo()[nRow]; - if ( rInfo.bIsHeader ) - { - //! name of column headers row? - - sName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Column Headers")); - } - else - { - // normal row name - sName = rtl::OUString::valueOf( (sal_Int32) ( rInfo.nDocIndex + 1 ) ); - } - } - else - throw lang::IndexOutOfBoundsException();*/ - SolarMutexGuard aGuard; FillTableInfo(); if ( nRow < 0 || (mpTableInfo && nRow >= mpTableInfo->GetRows()) ) @@ -208,31 +183,6 @@ rtl::OUString SAL_CALL ScAccessiblePreviewTable::getAccessibleRowDescription( sa rtl::OUString SAL_CALL ScAccessiblePreviewTable::getAccessibleColumnDescription( sal_Int32 nColumn ) throw (lang::IndexOutOfBoundsException, uno::RuntimeException) { - // is not supported or specified so not implemented -/* SolarMutexGuard aGuard; - IsObjectValid(); - - FillTableInfo(); - - rtl::OUString sName; - if ( mpTableInfo && nColumn >= 0 && nColumn < mpTableInfo->GetCols() ) - { - const ScPreviewColRowInfo& rInfo = mpTableInfo->GetColInfo()[nColumn]; - if ( rInfo.bIsHeader ) - { - //! name of row headers column? - - sName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Row Headers")); - } - else - { - // normal column name - sName = ScColToAlpha( rInfo.nDocIndex ); - } - } - else - throw lang::IndexOutOfBoundsException();*/ - SolarMutexGuard aGuard; FillTableInfo(); if ( nColumn < 0 || (mpTableInfo && nColumn >= mpTableInfo->GetCols()) ) @@ -670,18 +620,6 @@ uno::Sequence<sal_Int8> SAL_CALL ScAccessiblePreviewTable::getImplementationId() throw (uno::RuntimeException) { String sDesc(ScResId(STR_ACC_TABLE_DESCR)); -/* if (mpViewShell && mpViewShell->GetDocument()) - { - FillTableInfo(); - - if ( mpTableInfo ) - { - String sCoreName; - if (mpViewShell->GetDocument()->GetName( mpTableInfo->GetTab(), sCoreName )) - sDesc.SearchAndReplaceAscii("%1", sCoreName); - } - } - sDesc.SearchAndReplaceAscii("%2", String(ScResId(SCSTR_UNKNOWN)));*/ return rtl::OUString(sDesc); } diff --git a/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx b/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx index 5d18beb574b4..8fc350f439bb 100644 --- a/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx +++ b/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx @@ -270,14 +270,6 @@ void ScAccessibleSpreadsheet::Notify( SfxBroadcaster& rBC, const SfxHint& rHint else mbDelIns = sal_False; } - // no longer needed, because the document calls the VisAreaChanged method -/* else if (rRef.GetId() == SC_HINT_ACC_VISAREACHANGED) - { - AccessibleEventObject aEvent; - aEvent.EventId = AccessibleEventId::VISIBLE_DATA_CHANGED; - aEvent.Source = uno::Reference< XAccessibleContext >(this); - - CommitChange(aEvent);*/ // commented out, because to use a ModelChangeEvent is not the right way // at the moment there is no way, but the Java/Gnome Api should be extended sometime /* if (mpViewShell) @@ -296,15 +288,6 @@ void ScAccessibleSpreadsheet::Notify( SfxBroadcaster& rBC, const SfxHint& rHint CommitTableModelChange(aNewPos.Top(), aNewPos.Left(), aNewPos.Bottom(), aNewPos.Right(), AccessibleTableModelChangeType::UPDATE); } }*/ - // no longer needed, because the document calls the BoundingBoxChanged method -/* else if (rRef.GetId() == SC_HINT_ACC_WINDOWRESIZED) - { - AccessibleEventObject aEvent; - aEvent.EventId = AccessibleEventId::BOUNDRECT_CHANGED; - aEvent.Source = uno::Reference< XAccessibleContext >(this); - - CommitChange(aEvent); - }*/ } else if (rHint.ISA( ScUpdateRefHint )) { @@ -781,9 +764,9 @@ void ScAccessibleSpreadsheet::CreateSortedMarkedCells() { mpSortedMarkedCells = new std::vector<ScMyAddress>(); mpSortedMarkedCells->reserve(mpMarkedRanges->GetCellCount()); - ScRange* pRange = mpMarkedRanges->First(); - while (pRange) + for ( size_t i = 0, ListSize = mpMarkedRanges->size(); i < ListSize; ++i ) { + ScRange* pRange = (*mpMarkedRanges)[i]; if (pRange->aStart.Tab() != pRange->aEnd.Tab()) { if ((maActiveCell.Tab() >= pRange->aStart.Tab()) || @@ -805,7 +788,6 @@ void ScAccessibleSpreadsheet::CreateSortedMarkedCells() { DBG_ERROR("Range of wrong table"); } - pRange = mpMarkedRanges->Next(); } std::sort(mpSortedMarkedCells->begin(), mpSortedMarkedCells->end()); } diff --git a/sc/source/ui/Accessibility/AccessibleTableBase.cxx b/sc/source/ui/Accessibility/AccessibleTableBase.cxx index e998fd7fd4fa..8118043a6415 100644 --- a/sc/source/ui/Accessibility/AccessibleTableBase.cxx +++ b/sc/source/ui/Accessibility/AccessibleTableBase.cxx @@ -355,10 +355,6 @@ uno::Reference< XAccessible > SAL_CALL throw (uno::RuntimeException) { String sDesc(ScResId(STR_ACC_TABLE_DESCR)); -/* String sCoreName; - if (mpDoc && mpDoc->GetName( maRange.aStart.Tab(), sCoreName )) - sDesc.SearchAndReplaceAscii("%1", sCoreName); - sDesc.SearchAndReplaceAscii("%2", String(ScResId(SCSTR_UNKNOWN)));*/ return rtl::OUString(sDesc); } @@ -402,8 +398,7 @@ sal_Bool SAL_CALL ScAccessibleTableBase::isAccessibleChildSelected( sal_Int32 nChildIndex ) throw (lang::IndexOutOfBoundsException, uno::RuntimeException) { - // I don't need to guard, because the called funtions have a guard -// SolarMutexGuard aGuard; + // I don't need to guard, because the called functions have a guard if (nChildIndex < 0 || nChildIndex >= getAccessibleChildCount()) throw lang::IndexOutOfBoundsException(); return isAccessibleSelected(getAccessibleRow(nChildIndex), getAccessibleColumn(nChildIndex)); diff --git a/sc/source/ui/Accessibility/AccessibleText.cxx b/sc/source/ui/Accessibility/AccessibleText.cxx index a4c470093398..c1ddd833af9c 100644 --- a/sc/source/ui/Accessibility/AccessibleText.cxx +++ b/sc/source/ui/Accessibility/AccessibleText.cxx @@ -804,47 +804,7 @@ void ScAccessibleCellTextData::GetCellText(const ScAddress& rCellPos, String& rT SvxTextForwarder* ScAccessibleCellTextData::GetTextForwarder() { -/* sal_Bool bHasForwarder(sal_False); - if (mpViewShell && mpViewShell->GetViewData() && - (mpViewShell->GetViewData()->GetCurPos() == aCellPos) && - (mpViewShell->GetViewData()->HasEditView(meSplitPos)) && - (mpViewShell->GetViewData()->GetEditViewCol() == aCellPos.Col()) && - (mpViewShell->GetViewData()->GetEditViewRow() == aCellPos.Row())) - { - if (!mbViewEditEngine) - { - if (pForwarder) - DELETEZ( pForwarder ); - if (pEditEngine) - DELETEZ( pEditEngine ); - - SCCOL nCol; - SCROW nRow; - EditView* pEditView; - mpViewShell->GetViewData()->GetEditView( meSplitPos, pEditView, nCol, nRow ); - if (pEditView) - { - pEditEngine = (ScFieldEditEngine*)pEditView->GetEditEngine(); - pForwarder = new SvxEditEngineForwarder(*pEditEngine); - bHasForwarder = sal_True; - } - } - else - bHasForwarder = sal_True; - } - else if (mbViewEditEngine) - { - // remove Forwarder created with EditEngine from EditView - if (pForwarder) - DELETEZ( pForwarder ); - pEditEngine->SetNotifyHdl(Link()); - // don't delete, because it is the EditEngine of the EditView - pEditEngine = NULL; - mbViewEditEngine = sal_False; - } - - if (!bHasForwarder)*/ - ScCellTextData::GetTextForwarder(); // creates Forwarder and EditEngine + ScCellTextData::GetTextForwarder(); // creates Forwarder and EditEngine ScDocument* pDoc = ( pDocShell ? pDocShell->GetDocument() : NULL ); if ( pDoc && pEditEngine && mpViewShell ) @@ -1109,9 +1069,8 @@ SvxViewForwarder* ScAccessibleEditObjectTextData::GetViewForwarder() { if (!mpViewForwarder) { - // --> OD 2005-12-21 #i49561# + // i#49561 Get right-aligned cell content to be read by screenreader. mpViewForwarder = new ScEditObjectViewForwarder( mpWindow, mpEditView ); - // <-- } return mpViewForwarder; } @@ -1255,8 +1214,6 @@ SvxEditViewForwarder* ScAccessibleEditLineTextData::GetEditViewForwarder( sal_Bo { pTxtWnd->StartEditEngine(); pTxtWnd->GrabFocus(); -// pTxtWnd->SetTextString( rText ); -// pTxtWnd->GetEditView()->SetSelection( rSel ); mpEditView = pTxtWnd->GetEditView(); } diff --git a/sc/source/ui/Accessibility/makefile.mk b/sc/source/ui/Accessibility/makefile.mk index f041ca095bdd..49f3fb1fb39c 100644 --- a/sc/source/ui/Accessibility/makefile.mk +++ b/sc/source/ui/Accessibility/makefile.mk @@ -37,53 +37,33 @@ TARGET=accessibility # --- Files -------------------------------------------------------- -SLOFILES = \ +SLOFILES = \ + $(EXCEPTIONSFILES) + +EXCEPTIONSFILES= \ + $(SLO)$/AccessibleCell.obj \ + $(SLO)$/AccessibleCellBase.obj \ $(SLO)$/AccessibleContextBase.obj \ - $(SLO)$/AccessibleTableBase.obj \ + $(SLO)$/AccessibleCsvControl.obj \ + $(SLO)$/AccessibleDataPilotControl.obj \ $(SLO)$/AccessibleDocument.obj \ - $(SLO)$/AccessibleGlobal.obj \ - $(SLO)$/AccessibleSpreadsheet.obj \ - $(SLO)$/AccessibleCell.obj \ - $(SLO)$/AccessibilityHints.obj \ $(SLO)$/AccessibleDocumentBase.obj \ - $(SLO)$/AccessibleCellBase.obj \ - $(SLO)$/AccessibleDocumentPagePreview.obj \ - $(SLO)$/AccessibleFilterMenu.obj \ - $(SLO)$/AccessibleFilterMenuItem.obj \ - $(SLO)$/AccessibleFilterTopWindow.obj \ - $(SLO)$/AccessiblePreviewTable.obj \ - $(SLO)$/AccessiblePreviewCell.obj \ - $(SLO)$/AccessiblePreviewHeaderCell.obj \ - $(SLO)$/AccessiblePageHeader.obj \ - $(SLO)$/AccessibleText.obj \ - $(SLO)$/AccessiblePageHeaderArea.obj \ - $(SLO)$/DrawModelBroadcaster.obj \ + $(SLO)$/AccessibleDocumentPagePreview.obj \ $(SLO)$/AccessibleEditObject.obj \ - $(SLO)$/AccessibleDataPilotControl.obj \ - $(SLO)$/AccessibleCsvControl.obj - -EXCEPTIONSFILES= \ - $(SLO)$/AccessibleContextBase.obj \ - $(SLO)$/AccessibleTableBase.obj \ - $(SLO)$/AccessibleDocument.obj \ + $(SLO)$/AccessibleFilterMenu.obj \ + $(SLO)$/AccessibleFilterMenuItem.obj \ + $(SLO)$/AccessibleFilterTopWindow.obj \ $(SLO)$/AccessibleGlobal.obj \ - $(SLO)$/AccessibleSpreadsheet.obj \ - $(SLO)$/AccessibleCell.obj \ - $(SLO)$/AccessibleDocumentBase.obj \ - $(SLO)$/AccessibleCellBase.obj \ - $(SLO)$/AccessibleDocumentPagePreview.obj \ - $(SLO)$/AccessibleFilterMenu.obj \ - $(SLO)$/AccessibleFilterMenuItem.obj \ - $(SLO)$/AccessibleFilterTopWindow.obj \ - $(SLO)$/AccessiblePreviewTable.obj \ - $(SLO)$/AccessiblePreviewCell.obj \ - $(SLO)$/AccessiblePreviewHeaderCell.obj \ + $(SLO)$/AccessibilityHints.obj \ $(SLO)$/AccessiblePageHeader.obj \ - $(SLO)$/AccessiblePageHeaderArea.obj \ + $(SLO)$/AccessiblePageHeaderArea.obj \ + $(SLO)$/AccessiblePreviewCell.obj \ + $(SLO)$/AccessiblePreviewHeaderCell.obj \ + $(SLO)$/AccessiblePreviewTable.obj \ + $(SLO)$/AccessibleSpreadsheet.obj \ + $(SLO)$/AccessibleTableBase.obj \ + $(SLO)$/AccessibleText.obj \ $(SLO)$/DrawModelBroadcaster.obj \ - $(SLO)$/AccessibleEditObject.obj \ - $(SLO)$/AccessibleDataPilotControl.obj \ - $(SLO)$/AccessibleCsvControl.obj # --- Tagets ------------------------------------------------------- diff --git a/sc/source/ui/app/client.cxx b/sc/source/ui/app/client.cxx index 1553f37cc05c..c2557feb501f 100644 --- a/sc/source/ui/app/client.cxx +++ b/sc/source/ui/app/client.cxx @@ -64,7 +64,7 @@ ScClient::ScClient( ScTabViewShell* pViewShell, Window* pDraw, SdrModel* pSdrMod SetObject( pObj->GetObjRef() ); } -__EXPORT ScClient::~ScClient() +ScClient::~ScClient() { } @@ -94,7 +94,7 @@ SdrOle2Obj* ScClient::GetDrawObj() return pOle2Obj; } -void __EXPORT ScClient::RequestNewObjectArea( Rectangle& aLogicRect ) +void ScClient::RequestNewObjectArea( Rectangle& aLogicRect ) { SfxViewShell* pSfxViewSh = GetViewShell(); ScTabViewShell* pViewSh = PTR_CAST( ScTabViewShell, pSfxViewSh ); @@ -156,7 +156,7 @@ void __EXPORT ScClient::RequestNewObjectArea( Rectangle& aLogicRect ) } } -void __EXPORT ScClient::ObjectAreaChanged() +void ScClient::ObjectAreaChanged() { SfxViewShell* pSfxViewSh = GetViewShell(); ScTabViewShell* pViewSh = PTR_CAST( ScTabViewShell, pSfxViewSh ); @@ -184,7 +184,7 @@ void __EXPORT ScClient::ObjectAreaChanged() pViewSh->ScrollToObject( pDrawObj ); } -void __EXPORT ScClient::ViewChanged() +void ScClient::ViewChanged() { if ( GetAspect() == embed::Aspects::MSOLE_ICON ) { @@ -243,7 +243,7 @@ void __EXPORT ScClient::ViewChanged() } } -void __EXPORT ScClient::MakeVisible() +void ScClient::MakeVisible() { SdrOle2Obj* pDrawObj = GetDrawObj(); if (pDrawObj) diff --git a/sc/source/ui/app/drwtrans.cxx b/sc/source/ui/app/drwtrans.cxx index cba682688f1f..0726f2c2faec 100644 --- a/sc/source/ui/app/drwtrans.cxx +++ b/sc/source/ui/app/drwtrans.cxx @@ -160,9 +160,9 @@ ScDrawTransferObj::ScDrawTransferObj( SdrModel* pClipModel, ScDocShell* pContain uno::Reference< beans::XPropertySet > xPropSet( xControlModel, uno::UNO_QUERY ); uno::Reference< beans::XPropertySetInfo > xInfo = xPropSet->getPropertySetInfo(); - rtl::OUString sPropButtonType = rtl::OUString::createFromAscii( "ButtonType" ); - rtl::OUString sPropTargetURL = rtl::OUString::createFromAscii( "TargetURL" ); - rtl::OUString sPropLabel = rtl::OUString::createFromAscii( "Label" ); + rtl::OUString sPropButtonType(RTL_CONSTASCII_USTRINGPARAM( "ButtonType" )); + rtl::OUString sPropTargetURL(RTL_CONSTASCII_USTRINGPARAM( "TargetURL" )); + rtl::OUString sPropLabel(RTL_CONSTASCII_USTRINGPARAM( "Label" )); if(xInfo->hasPropertyByName( sPropButtonType )) { @@ -268,7 +268,6 @@ ScDrawTransferObj::~ScDrawTransferObj() delete pDragSourceView; } -// static ScDrawTransferObj* ScDrawTransferObj::GetOwnClipboard( Window* ) { ScDrawTransferObj* pObj = SC_MOD()->GetClipData().pDrawClipboard; @@ -540,7 +539,7 @@ sal_Bool ScDrawTransferObj::WriteObject( SotStorageStreamRef& rxOStm, void* pUse try { uno::Sequence < beans::PropertyValue > aSeq; - ::rtl::OUString aDummyName = ::rtl::OUString::createFromAscii("Dummy"); + ::rtl::OUString aDummyName(RTL_CONSTASCII_USTRINGPARAM("Dummy")); xPers->storeToEntry( xWorkStore, aDummyName, aSeq, aSeq ); if ( xWorkStore->isStreamElement( aDummyName ) ) { diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx index 697f573cf630..9622b5ef9e47 100644 --- a/sc/source/ui/app/inputhdl.cxx +++ b/sc/source/ui/app/inputhdl.cxx @@ -106,7 +106,7 @@ BOOL ScInputHandler::bAutoComplete = FALSE; // wird in KeyInput gesetzt // only characters that are allowed in formulas next to references // and the quotation mark (so string constants can be skipped) -static const sal_Char __FAR_DATA pMinDelimiters[] = " !\""; +static const sal_Char pMinDelimiters[] = " !\""; extern USHORT nEditAdjust; //! Member an ViewData @@ -472,7 +472,7 @@ ScInputHandler::ScInputHandler() // Bindings (nur noch fuer Invalidate benutzt) werden bei Bedarf aktuell geholt } -__EXPORT ScInputHandler::~ScInputHandler() +ScInputHandler::~ScInputHandler() { // Wenn dies der Applikations-InputHandler ist, wird der dtor erst nach SfxApplication::Main // gerufen, darf sich also auf keine Sfx-Funktionen mehr verlassen @@ -684,7 +684,7 @@ void ScInputHandler::GetFormulaData() if ( pDesc->pFuncName ) { pDesc->initArgumentInfo(); - String aEntry = pDesc->GetSignature(); + String aEntry = pDesc->getSignature(); TypedStrData* pData = new TypedStrData( aEntry, 0.0, SC_STRTYPE_FUNCTIONS ); if (!pFormulaDataPara->Insert(pData)) delete pData; @@ -748,7 +748,6 @@ void ScInputHandler::ShowTipCursor() String aFormula = pEngine->GetText( (USHORT) 0 ); ESelection aSel = pActiveView->GetSelection(); aSel.Adjust(); - xub_StrLen nLeftParentPos = 0; if( aSel.nEndPos ) { if ( aFormula.Len() < aSel.nEndPos ) @@ -767,7 +766,7 @@ void ScInputHandler::ShowTipCursor() while( !bFound ) { aSelText.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ")" ) ); - nLeftParentPos = lcl_MatchParenthesis( aSelText, aSelText.Len()-1 ); + xub_StrLen nLeftParentPos = lcl_MatchParenthesis( aSelText, aSelText.Len()-1 ); if( nLeftParentPos != STRING_NOTFOUND ) { sal_Unicode c = ( nLeftParentPos > 0 ) ? aSelText.GetChar( nLeftParentPos-1 ) : 0; @@ -781,17 +780,12 @@ void ScInputHandler::ShowTipCursor() nArgPos = aHelper.GetArgStart( aSelText, nNextFStart, 0 ); nArgs = static_cast<USHORT>(ppFDesc->getParameterCount()); - USHORT nActive = 0; - USHORT nCount = 0; - USHORT nCountSemicolon = 0; - USHORT nCountDot = 0; - USHORT nStartPosition = 0; - USHORT nEndPosition = 0; BOOL bFlag = FALSE; String aNew; USHORT nParAutoPos = SCPOS_INVALID; if( pFormulaDataPara->FindText( ppFDesc->getFunctionName(), aNew, nParAutoPos, FALSE ) ) { + USHORT nActive = 0; for( USHORT i=0; i < nArgs; i++ ) { xub_StrLen nLength = static_cast<xub_StrLen>(aArgs[i].getLength()); @@ -804,8 +798,10 @@ void ScInputHandler::ShowTipCursor() } if( bFlag ) { - nCountSemicolon = aNew.GetTokenCount(cSep)-1; - nCountDot = aNew.GetTokenCount(cSheetSep)-1; + USHORT nCountSemicolon = aNew.GetTokenCount(cSep)-1; + USHORT nCountDot = aNew.GetTokenCount(cSheetSep)-1; + USHORT nStartPosition = 0; + USHORT nEndPosition = 0; if( !nCountSemicolon ) { @@ -820,6 +816,7 @@ void ScInputHandler::ShowTipCursor() } else if( !nCountDot ) { + USHORT nCount = 0; for( USHORT i = 0; i < aNew.Len(); i++ ) { sal_Unicode cNext = aNew.GetChar( i ); @@ -841,6 +838,7 @@ void ScInputHandler::ShowTipCursor() } else { + USHORT nCount = 0; for( USHORT i = 0; i < aNew.Len(); i++ ) { sal_Unicode cNext = aNew.GetChar( i ); @@ -1026,17 +1024,12 @@ void ScInputHandler::UseFormulaData() nArgPos = aHelper.GetArgStart( aFormula, nNextFStart, 0 ); nArgs = static_cast<USHORT>(ppFDesc->getParameterCount()); - USHORT nActive = 0; - USHORT nCount = 0; - USHORT nCountSemicolon = 0; - USHORT nCountDot = 0; - USHORT nStartPosition = 0; - USHORT nEndPosition = 0; BOOL bFlag = FALSE; String aNew; USHORT nParAutoPos = SCPOS_INVALID; if( pFormulaDataPara->FindText( ppFDesc->getFunctionName(), aNew, nParAutoPos, FALSE ) ) { + USHORT nActive = 0; for( USHORT i=0; i < nArgs; i++ ) { xub_StrLen nLength = static_cast<xub_StrLen>(aArgs[i].getLength()); @@ -1049,8 +1042,10 @@ void ScInputHandler::UseFormulaData() } if( bFlag ) { - nCountSemicolon = aNew.GetTokenCount(cSep)-1; - nCountDot = aNew.GetTokenCount(cSheetSep)-1; + USHORT nCountSemicolon = aNew.GetTokenCount(cSep)-1; + USHORT nCountDot = aNew.GetTokenCount(cSheetSep)-1; + USHORT nStartPosition = 0; + USHORT nEndPosition = 0; if( !nCountSemicolon ) { @@ -1065,6 +1060,7 @@ void ScInputHandler::UseFormulaData() } else if( !nCountDot ) { + USHORT nCount = 0; for( USHORT i = 0; i < aNew.Len(); i++ ) { sal_Unicode cNext = aNew.GetChar( i ); @@ -1086,6 +1082,7 @@ void ScInputHandler::UseFormulaData() } else { + USHORT nCount = 0; for( USHORT i = 0; i < aNew.Len(); i++ ) { sal_Unicode cNext = aNew.GetChar( i ); diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx index c49345f3672b..9549380d7006 100644 --- a/sc/source/ui/app/inputwin.cxx +++ b/sc/source/ui/app/inputwin.cxx @@ -119,7 +119,7 @@ ScInputWindowWrapper::ScInputWindowWrapper( Window* pParentP, // GetInfo fliegt wieder raus, wenn es ein SFX_IMPL_TOOLBOX gibt !!!! -SfxChildWinInfo __EXPORT ScInputWindowWrapper::GetInfo() const +SfxChildWinInfo ScInputWindowWrapper::GetInfo() const { SfxChildWinInfo aInfo = SfxChildWindow::GetInfo(); return aInfo; @@ -127,7 +127,7 @@ SfxChildWinInfo __EXPORT ScInputWindowWrapper::GetInfo() const //================================================================== -#define IMAGE(id) pImgMgr->SeekImage(id, bHC) +#define IMAGE(id) pImgMgr->SeekImage(id) //================================================================== // class ScInputWindow @@ -166,8 +166,6 @@ ScInputWindow::ScInputWindow( Window* pParent, SfxBindings* pBind ) : } DBG_ASSERT( pViewSh, "no view shell for input window" ); - BOOL bHC = GetSettings().GetStyleSettings().GetHighContrastMode(); - // Positionsfenster, 3 Buttons, Eingabefenster InsertWindow ( 1, &aWndPos, 0, 0 ); InsertSeparator ( 1 ); @@ -226,7 +224,7 @@ ScInputWindow::ScInputWindow( Window* pParent, SfxBindings* pBind ) : pImgMgr->RegisterToolBox( this ); } -__EXPORT ScInputWindow::~ScInputWindow() +ScInputWindow::~ScInputWindow() { BOOL bDown = ( ScGlobal::pSysLocale == NULL ); // after Clear? @@ -275,11 +273,11 @@ sal_Bool ScInputWindow::UseSubTotal(ScRangeList* pRangeList) const if ( pViewSh ) { ScDocument* pDoc = pViewSh->GetViewData()->GetDocument(); - sal_Int32 nRangeCount (pRangeList->Count()); - sal_Int32 nRangeIndex (0); + size_t nRangeCount (pRangeList->size()); + size_t nRangeIndex (0); while (!bSubTotal && nRangeIndex < nRangeCount) { - const ScRange* pRange = pRangeList->GetObject( nRangeIndex ); + const ScRange* pRange = (*pRangeList)[nRangeIndex]; if( pRange ) { SCTAB nTabEnd(pRange->aEnd.Tab()); @@ -312,7 +310,7 @@ sal_Bool ScInputWindow::UseSubTotal(ScRangeList* pRangeList) const nRangeIndex = 0; while (!bSubTotal && nRangeIndex < nRangeCount) { - const ScRange* pRange = pRangeList->GetObject( nRangeIndex ); + const ScRange* pRange = (*pRangeList)[nRangeIndex]; if( pRange ) { ScRange aDBArea; @@ -329,7 +327,7 @@ sal_Bool ScInputWindow::UseSubTotal(ScRangeList* pRangeList) const return bSubTotal; } -void __EXPORT ScInputWindow::Select() +void ScInputWindow::Select() { ScModule* pScMod = SC_MOD(); ToolBox::Select(); @@ -377,10 +375,10 @@ void __EXPORT ScInputWindow::Select() // check if one of the marked ranges is empty bool bEmpty = false; - const ULONG nCount = aMarkRangeList.Count(); - for ( ULONG i = 0; i < nCount; ++i ) + const size_t nCount = aMarkRangeList.size(); + for ( size_t i = 0; i < nCount; ++i ) { - const ScRange aRange( *aMarkRangeList.GetObject( i ) ); + const ScRange aRange( *aMarkRangeList[i] ); if ( pDoc->IsBlockEmpty( aRange.aStart.Tab(), aRange.aStart.Col(), aRange.aStart.Row(), aRange.aEnd.Col(), aRange.aEnd.Row() ) ) @@ -396,7 +394,7 @@ void __EXPORT ScInputWindow::Select() const BOOL bDataFound = pViewSh->GetAutoSumArea( aRangeList ); if ( bDataFound ) { - ScAddress aAddr = aRangeList.Last()->aEnd; + ScAddress aAddr = aRangeList.back()->aEnd; aAddr.IncRow(); const sal_Bool bSubTotal( UseSubTotal( &aRangeList ) ); pViewSh->EnterAutoSum( aRangeList, bSubTotal, aAddr ); @@ -405,9 +403,9 @@ void __EXPORT ScInputWindow::Select() else { const sal_Bool bSubTotal( UseSubTotal( &aMarkRangeList ) ); - for ( ULONG i = 0; i < nCount; ++i ) + for ( size_t i = 0; i < nCount; ++i ) { - const ScRange aRange( *aMarkRangeList.GetObject( i ) ); + const ScRange aRange( *aMarkRangeList[i] ); const bool bSetCursor = ( i == nCount - 1 ? true : false ); const bool bContinue = ( i != 0 ? true : false ); if ( !pViewSh->AutoSum( aRange, bSubTotal, bSetCursor, bContinue ) ) @@ -487,7 +485,7 @@ void __EXPORT ScInputWindow::Select() } } -void __EXPORT ScInputWindow::Resize() +void ScInputWindow::Resize() { ToolBox::Resize(); @@ -560,8 +558,6 @@ void ScInputWindow::SetOkCancelMode() SfxImageManager* pImgMgr = SfxImageManager::GetImageManager( pScMod ); if (!bIsOkCancelMode) { - BOOL bHC = GetSettings().GetStyleSettings().GetHighContrastMode(); - RemoveItem( 3 ); // SID_INPUT_SUM und SID_INPUT_EQUAL entfernen RemoveItem( 3 ); InsertItem( SID_INPUT_CANCEL, IMAGE( SID_INPUT_CANCEL ), 0, 3 ); @@ -584,8 +580,6 @@ void ScInputWindow::SetSumAssignMode() SfxImageManager* pImgMgr = SfxImageManager::GetImageManager( pScMod ); if (bIsOkCancelMode) { - BOOL bHC = GetSettings().GetStyleSettings().GetHighContrastMode(); - // SID_INPUT_CANCEL, und SID_INPUT_OK entfernen RemoveItem( 3 ); RemoveItem( 3 ); @@ -607,12 +601,12 @@ void ScInputWindow::SetFormulaMode( BOOL bSet ) aTextWindow.SetFormulaMode(bSet); } -void __EXPORT ScInputWindow::SetText( const String& rString ) +void ScInputWindow::SetText( const String& rString ) { ToolBox::SetText(rString); } -String __EXPORT ScInputWindow::GetText() const +String ScInputWindow::GetText() const { return ToolBox::GetText(); } @@ -694,11 +688,9 @@ void ScInputWindow::DataChanged( const DataChangedEvent& rDCEvt ) if ( rDCEvt.GetType() == DATACHANGED_SETTINGS && (rDCEvt.GetFlags() & SETTINGS_STYLE) ) { // update item images - ScModule* pScMod = SC_MOD(); SfxImageManager* pImgMgr = SfxImageManager::GetImageManager( pScMod ); - BOOL bHC = GetSettings().GetStyleSettings().GetHighContrastMode(); - // IMAGE macro uses pScMod, pImgMgr, bHC + // IMAGE macro uses pScMod, pImgMg SetItemImage( SID_INPUT_FUNCTION, IMAGE( SID_INPUT_FUNCTION ) ); if ( bIsOkCancelMode ) @@ -756,7 +748,7 @@ ScTextWnd::ScTextWnd( Window* pParent ) SetPointer ( POINTER_TEXT ); } -__EXPORT ScTextWnd::~ScTextWnd() +ScTextWnd::~ScTextWnd() { while (!maAccTextDatas.empty()) { maAccTextDatas.back()->Dispose(); @@ -765,7 +757,7 @@ __EXPORT ScTextWnd::~ScTextWnd() delete pEditEngine; } -void __EXPORT ScTextWnd::Paint( const Rectangle& rRec ) +void ScTextWnd::Paint( const Rectangle& rRec ) { if (pEditView) pEditView->Paint( rRec ); @@ -791,7 +783,7 @@ void __EXPORT ScTextWnd::Paint( const Rectangle& rRec ) } } -void __EXPORT ScTextWnd::Resize() +void ScTextWnd::Resize() { if (pEditView) { @@ -812,13 +804,13 @@ void __EXPORT ScTextWnd::Resize() } } -void __EXPORT ScTextWnd::MouseMove( const MouseEvent& rMEvt ) +void ScTextWnd::MouseMove( const MouseEvent& rMEvt ) { if (pEditView) pEditView->MouseMove( rMEvt ); } -void __EXPORT ScTextWnd::MouseButtonDown( const MouseEvent& rMEvt ) +void ScTextWnd::MouseButtonDown( const MouseEvent& rMEvt ) { if (!HasFocus()) { @@ -834,7 +826,7 @@ void __EXPORT ScTextWnd::MouseButtonDown( const MouseEvent& rMEvt ) } } -void __EXPORT ScTextWnd::MouseButtonUp( const MouseEvent& rMEvt ) +void ScTextWnd::MouseButtonUp( const MouseEvent& rMEvt ) { if (pEditView) if (pEditView->MouseButtonUp( rMEvt )) @@ -850,7 +842,7 @@ void __EXPORT ScTextWnd::MouseButtonUp( const MouseEvent& rMEvt ) } } -void __EXPORT ScTextWnd::Command( const CommandEvent& rCEvt ) +void ScTextWnd::Command( const CommandEvent& rCEvt ) { bInputMode = TRUE; USHORT nCommand = rCEvt.GetCommand(); @@ -924,7 +916,7 @@ void ScTextWnd::StartDrag( sal_Int8 /* nAction */, const Point& rPosPixel ) } } -void __EXPORT ScTextWnd::KeyInput(const KeyEvent& rKEvt) +void ScTextWnd::KeyInput(const KeyEvent& rKEvt) { bInputMode = TRUE; if (!SC_MOD()->InputKeyEvent( rKEvt )) @@ -939,18 +931,18 @@ void __EXPORT ScTextWnd::KeyInput(const KeyEvent& rKEvt) bInputMode = FALSE; } -void __EXPORT ScTextWnd::GetFocus() +void ScTextWnd::GetFocus() { ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell(); if ( pViewSh ) pViewSh->SetFormShellAtTop( FALSE ); // focus in input line -> FormShell no longer on top } -void __EXPORT ScTextWnd::LoseFocus() +void ScTextWnd::LoseFocus() { } -String __EXPORT ScTextWnd::GetText() const +String ScTextWnd::GetText() const { // ueberladen, um per Testtool an den Text heranzukommen @@ -1175,10 +1167,6 @@ void ScTextWnd::SetTextString( const String& rNewString ) // Position der Aenderung suchen, nur Rest painten - long nInvPos = 0; - long nStartPos = 0; - long nTextSize = 0; - if (!pEditEngine) { BOOL bPaintAll; @@ -1207,6 +1195,7 @@ void ScTextWnd::SetTextString( const String& rNewString ) } else { + long nTextSize = 0; xub_StrLen nDifPos; if (rNewString.Len() > aString.Len()) nDifPos = rNewString.Match(aString); @@ -1225,8 +1214,8 @@ void ScTextWnd::SetTextString( const String& rNewString ) // -1 wegen Rundung und "A" Point aLogicStart = PixelToLogic(Point(TEXT_STARTPOS-1,0)); - nStartPos = aLogicStart.X(); - nInvPos = nStartPos; + long nStartPos = aLogicStart.X(); + long nInvPos = nStartPos; if (nDifPos) nInvPos += GetTextWidth(aString,0,nDifPos); @@ -1382,7 +1371,7 @@ ScPosWnd::ScPosWnd( Window* pParent ) : StartListening( *SFX_APP() ); // fuer Navigator-Bereichsnamen-Updates } -__EXPORT ScPosWnd::~ScPosWnd() +ScPosWnd::~ScPosWnd() { EndListening( *SFX_APP() ); @@ -1638,7 +1627,7 @@ void ScPosWnd::Modify() } } -void __EXPORT ScPosWnd::Select() +void ScPosWnd::Select() { ComboBox::Select(); // in VCL gibt GetText() erst danach den ausgewaehlten Eintrag @@ -1734,7 +1723,7 @@ void ScPosWnd::DoEnter() ReleaseFocus_Impl(); } -long __EXPORT ScPosWnd::Notify( NotifyEvent& rNEvt ) +long ScPosWnd::Notify( NotifyEvent& rNEvt ) { long nHandled = 0; diff --git a/sc/source/ui/app/makefile.mk b/sc/source/ui/app/makefile.mk index 9d487ba207fc..95b36b1e7323 100644 --- a/sc/source/ui/app/makefile.mk +++ b/sc/source/ui/app/makefile.mk @@ -38,29 +38,23 @@ TARGET=app # --- Files -------------------------------------------------------- SLOFILES = \ - $(SLO)$/scmod.obj \ - $(SLO)$/scmod2.obj \ - $(SLO)$/scdll.obj \ - $(SLO)$/typemap.obj \ - $(SLO)$/transobj.obj \ - $(SLO)$/drwtrans.obj \ - $(SLO)$/lnktrans.obj \ - $(SLO)$/seltrans.obj \ - $(SLO)$/inputhdl.obj \ - $(SLO)$/inputwin.obj \ - $(SLO)$/rfindlst.obj \ - $(SLO)$/uiitems.obj \ + $(EXCEPTIONSFILES) \ $(SLO)$/msgpool.obj \ - $(SLO)$/client.obj + $(SLO)$/rfindlst.obj \ + $(SLO)$/uiitems.obj EXCEPTIONSFILES= \ + $(SLO)$/client.obj \ $(SLO)$/drwtrans.obj \ - $(SLO)$/scdll.obj \ - $(SLO)$/scmod2.obj \ + $(SLO)$/inputhdl.obj \ + $(SLO)$/inputwin.obj \ + $(SLO)$/lnktrans.obj \ + $(SLO)$/scdll.obj \ $(SLO)$/scmod.obj \ - $(SLO)$/typemap.obj \ - $(SLO)$/client.obj \ - $(SLO)$/inputwin.obj + $(SLO)$/scmod2.obj \ + $(SLO)$/seltrans.obj \ + $(SLO)$/typemap.obj \ + $(SLO)$/transobj.obj #LIB3TARGET=$(SLB)$/ysclib.lib #LIB3OBJFILES=$(SLO)$/sclib.obj diff --git a/sc/source/ui/app/msgpool.cxx b/sc/source/ui/app/msgpool.cxx index 0de23989202f..31c31734612d 100644 --- a/sc/source/ui/app/msgpool.cxx +++ b/sc/source/ui/app/msgpool.cxx @@ -40,7 +40,7 @@ //------------------------------------------------------------------------ -static SfxItemInfo __READONLY_DATA aMsgItemInfos[] = +static SfxItemInfo const aMsgItemInfos[] = { { 0, SFX_ITEM_POOLABLE }, // SCITEM_STRING { 0, SFX_ITEM_POOLABLE }, // SCITEM_SEARCHDATA - nicht mehr benutzt !!! @@ -94,7 +94,7 @@ ScMessagePool::ScMessagePool() } -__EXPORT ScMessagePool::~ScMessagePool() +ScMessagePool::~ScMessagePool() { Delete(); SetSecondaryPool( NULL ); // before deleting defaults (accesses defaults) @@ -108,7 +108,7 @@ __EXPORT ScMessagePool::~ScMessagePool() } -SfxMapUnit __EXPORT ScMessagePool::GetMetric( USHORT nWhich ) const +SfxMapUnit ScMessagePool::GetMetric( USHORT nWhich ) const { // eigene Attribute: Twips, alles andere 1/100 mm diff --git a/sc/source/ui/app/rfindlst.cxx b/sc/source/ui/app/rfindlst.cxx index 8f2526197787..c82bc7d79512 100644 --- a/sc/source/ui/app/rfindlst.cxx +++ b/sc/source/ui/app/rfindlst.cxx @@ -59,7 +59,7 @@ ScRangeFindList::~ScRangeFindList() } } -ColorData ScRangeFindList::GetColorName( USHORT nIndex ) // static +ColorData ScRangeFindList::GetColorName( size_t nIndex ) { return aColNames[nIndex % SC_RANGECOLORS]; } diff --git a/sc/source/ui/app/scdll.cxx b/sc/source/ui/app/scdll.cxx index 8cd7a4e74686..9e80a7a8dfdc 100644 --- a/sc/source/ui/app/scdll.cxx +++ b/sc/source/ui/app/scdll.cxx @@ -152,9 +152,7 @@ void ScDLL::Init() ScModule* pMod = new ScModule( &ScDocShell::Factory() ); (*ppShlPtr) = pMod; -//REMOVE ScDocShell::RegisterFactory( SDT_SC_DOCFACTPRIO ); - - ScDocShell::Factory().SetDocumentServiceName( rtl::OUString::createFromAscii( "com.sun.star.sheet.SpreadsheetDocument" ) ); + ScDocShell::Factory().SetDocumentServiceName( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sheet.SpreadsheetDocument" )) ); ScGlobal::Init(); // erst wenn der ResManager initialisiert ist // erst nach ScGlobal::Init duerfen die App-Optionen @@ -296,20 +294,13 @@ void ScDLL::Init() ScSpellDialogChildWindow ::RegisterChildWindow(FALSE, pMod); ::avmedia::MediaPlayer ::RegisterChildWindow(FALSE, pMod); - //<!--Added by PengYunQuan for Validity Cell Range Picker ScValidityRefChildWin::RegisterChildWindow(FALSE, pMod); - //-->Added by PengYunQuan for Validity Cell Range Picker // Edit-Engine-Felder, soweit nicht schon in OfficeApplication::Init SvClassManager& rClassManager = SvxFieldItem::GetClassManager(); -// rClassManager.SV_CLASS_REGISTER( SvxURLField ); -// rClassManager.SV_CLASS_REGISTER( SvxDateField ); -// rClassManager.SV_CLASS_REGISTER( SvxPageField ); rClassManager.SV_CLASS_REGISTER( SvxPagesField ); -// rClassManager.SV_CLASS_REGISTER( SvxTimeField ); rClassManager.SV_CLASS_REGISTER( SvxFileField ); -// rClassManager.SV_CLASS_REGISTER( SvxExtFileField ); rClassManager.SV_CLASS_REGISTER( SvxTableField ); SdrRegisterFieldClasses(); // SvDraw-Felder registrieren diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx index 66b9fade4d8f..029cd9e900a7 100644 --- a/sc/source/ui/app/scmod.cxx +++ b/sc/source/ui/app/scmod.cxx @@ -628,7 +628,7 @@ void ScModule::Execute( SfxRequest& rReq ) { try { - com::sun::star::uno::Reference < ::com::sun::star::ui::dialogs::XExecutableDialog > xDialog(::comphelper::getProcessServiceFactory()->createInstance(rtl::OUString::createFromAscii("com.sun.star.comp.ui.XSLTFilterDialog")), com::sun::star::uno::UNO_QUERY); + com::sun::star::uno::Reference < ::com::sun::star::ui::dialogs::XExecutableDialog > xDialog(::comphelper::getProcessServiceFactory()->createInstance(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.ui.XSLTFilterDialog"))), com::sun::star::uno::UNO_QUERY); if( xDialog.is() ) { xDialog->execute(); @@ -1918,7 +1918,7 @@ IMPL_LINK( ScModule, IdleHandler, Timer*, EMPTYARG ) bMore = bLinks || bWidth || bSpell; // ueberhaupt noch was? - // While calculating a Basic formula, a paint event may have occured, + // While calculating a Basic formula, a paint event may have occurred, // so check the bNeedsRepaint flags for this document's views if (bWidth) lcl_CheckNeedsRepaint( pDocSh ); @@ -2263,7 +2263,7 @@ Window * ScModule::Find1RefWindow( USHORT nSlotId, Window *pWndAncestor ) while( Window *pParent = pWndAncestor->GetParent() ) pWndAncestor = pParent; - for( std::list<Window*>::iterator i = rlRefWindow.begin(); i!=rlRefWindow.end(); i++ ) + for( std::list<Window*>::iterator i = rlRefWindow.begin(); i!=rlRefWindow.end(); ++i ) if ( pWndAncestor->IsWindowOrChild( *i, (*i)->IsSystemWindow() ) ) return *i; @@ -2278,8 +2278,8 @@ Window * ScModule::Find1RefWindow( Window *pWndAncestor ) while( Window *pParent = pWndAncestor->GetParent() ) pWndAncestor = pParent; for( std::map<USHORT, std::list<Window*> >::iterator i = m_mapRefWindow.begin(); - i!=m_mapRefWindow.end(); i++ ) - for( std::list<Window*>::iterator j = i->second.begin(); j!=i->second.end(); j++ ) + i!=m_mapRefWindow.end(); ++i ) + for( std::list<Window*>::iterator j = i->second.begin(); j!=i->second.end(); ++j ) if ( pWndAncestor->IsWindowOrChild( *j, (*j)->IsSystemWindow() ) ) return *j; diff --git a/sc/source/ui/app/scmod2.cxx b/sc/source/ui/app/scmod2.cxx index 246d204038ae..6cf559d950fd 100644 --- a/sc/source/ui/app/scmod2.cxx +++ b/sc/source/ui/app/scmod2.cxx @@ -50,7 +50,6 @@ using namespace com::sun::star; //------------------------------------------------------------------ -// static void ScModule::GetSpellSettings( USHORT& rDefLang, USHORT& rCjkLang, USHORT& rCtlLang, BOOL& rAutoSpell ) { @@ -67,7 +66,6 @@ void ScModule::GetSpellSettings( USHORT& rDefLang, USHORT& rCjkLang, USHORT& rCt rAutoSpell = aOptions.bIsSpellAuto; } -// static void ScModule::SetAutoSpellProperty( BOOL bSet ) { // use SvtLinguConfig instead of service LinguProperties to avoid @@ -76,12 +74,11 @@ void ScModule::SetAutoSpellProperty( BOOL bSet ) uno::Any aAny; aAny <<= bSet; - aConfig.SetProperty( rtl::OUString::createFromAscii( LINGUPROP_AUTOSPELL ), aAny ); + aConfig.SetProperty( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( LINGUPROP_AUTOSPELL )), aAny ); } -// static BOOL ScModule::HasThesaurusLanguage( USHORT nLang ) { if ( nLang == LANGUAGE_NONE ) diff --git a/sc/source/ui/app/seltrans.cxx b/sc/source/ui/app/seltrans.cxx index 1866008f6782..f229e885d0d5 100644 --- a/sc/source/ui/app/seltrans.cxx +++ b/sc/source/ui/app/seltrans.cxx @@ -70,7 +70,7 @@ BOOL lcl_IsURLButton( SdrObject* pObject ) uno::Reference< beans::XPropertySet > xPropSet( xControlModel, uno::UNO_QUERY ); uno::Reference< beans::XPropertySetInfo > xInfo = xPropSet->getPropertySetInfo(); - rtl::OUString sPropButtonType = rtl::OUString::createFromAscii( "ButtonType" ); + rtl::OUString sPropButtonType(RTL_CONSTASCII_USTRINGPARAM( "ButtonType" )); if(xInfo->hasPropertyByName( sPropButtonType )) { uno::Any aAny = xPropSet->getPropertyValue( sPropButtonType ); @@ -84,7 +84,6 @@ BOOL lcl_IsURLButton( SdrObject* pObject ) return bRet; } -// static ScSelectionTransferObj* ScSelectionTransferObj::CreateFromView( ScTabView* pView ) { diff --git a/sc/source/ui/app/template.cxx b/sc/source/ui/app/template.cxx index edb30ff6468d..b9bddee4fe1d 100644 --- a/sc/source/ui/app/template.cxx +++ b/sc/source/ui/app/template.cxx @@ -43,7 +43,7 @@ ScTemplateDlg::ScTemplateDlg(Window * pParent, USHORT nAppResource) : //------------------------------------------------------------------------ -__EXPORT ScTemplateDlg::~ScTemplateDlg() +ScTemplateDlg::~ScTemplateDlg() { } diff --git a/sc/source/ui/app/transobj.cxx b/sc/source/ui/app/transobj.cxx index 906a0f3e150a..91a972cab1cd 100644 --- a/sc/source/ui/app/transobj.cxx +++ b/sc/source/ui/app/transobj.cxx @@ -85,7 +85,6 @@ using namespace com::sun::star; // ----------------------------------------------------------------------- -// static void ScTransferObj::GetAreaSize( ScDocument* pDoc, SCTAB nTab1, SCTAB nTab2, SCROW& nRow, SCCOL& nCol ) { SCCOL nMaxCol = 0; @@ -107,7 +106,6 @@ void ScTransferObj::GetAreaSize( ScDocument* pDoc, SCTAB nTab1, SCTAB nTab2, SCR nCol = nMaxCol; } -// static void ScTransferObj::PaintToDev( OutputDevice* pDev, ScDocument* pDoc, double nPrintFactor, const ScRange& rBlock, BOOL bMetaFile ) { @@ -216,7 +214,6 @@ ScTransferObj::~ScTransferObj() } -// static ScTransferObj* ScTransferObj::GetOwnClipboard( Window* pUIWin ) { ScTransferObj* pObj = SC_MOD()->GetClipData().pCellClipboard; @@ -311,8 +308,15 @@ sal_Bool ScTransferObj::GetData( const datatransfer::DataFlavor& rFlavor ) BOOL bIncludeFiltered = pDoc->IsCutMode() || bUsedForLink; ScImportExport aObj( pDoc, aBlock ); + ScExportTextOptions aTextOptions(ScExportTextOptions::None, 0, true); if ( bUsedForLink ) - aObj.SetExportTextOptions( ScExportTextOptions( ScExportTextOptions::ToSpace, ' ', false ) ); + { + // For a DDE link, convert line breaks and separators to space. + aTextOptions.meNewlineConversion = ScExportTextOptions::ToSpace; + aTextOptions.mcSeparatorConvertTo = ' '; + aTextOptions.mbAddQuotes = false; + } + aObj.SetExportTextOptions(aTextOptions); aObj.SetFormulas( pDoc->GetViewOptions().GetOption( VOPT_FORMULAS ) ); aObj.SetIncludeFiltered( bIncludeFiltered ); @@ -725,7 +729,6 @@ void ScTransferObj::InitDocShell() } } -// static SfxObjectShell* ScTransferObj::SetDrawClipDoc( BOOL bAnyOle ) { // update ScGlobal::pDrawClipDocShellRef @@ -745,7 +748,6 @@ SfxObjectShell* ScTransferObj::SetDrawClipDoc( BOOL bAnyOle ) } } -// static void ScTransferObj::StripRefs( ScDocument* pDoc, SCCOL nStartX, SCROW nStartY, SCCOL nEndX, SCROW nEndY, ScDocument* pDestDoc, SCCOL nSubX, SCROW nSubY ) diff --git a/sc/source/ui/app/uiitems.cxx b/sc/source/ui/app/uiitems.cxx index 4148b96675c6..1d6be7abdfc3 100644 --- a/sc/source/ui/app/uiitems.cxx +++ b/sc/source/ui/app/uiitems.cxx @@ -83,17 +83,17 @@ ScInputStatusItem::ScInputStatusItem( const ScInputStatusItem& rItem ) { } -__EXPORT ScInputStatusItem::~ScInputStatusItem() +ScInputStatusItem::~ScInputStatusItem() { delete pEditData; } -String __EXPORT ScInputStatusItem::GetValueText() const +String ScInputStatusItem::GetValueText() const { return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("InputStatus")); } -int __EXPORT ScInputStatusItem::operator==( const SfxPoolItem& rItem ) const +int ScInputStatusItem::operator==( const SfxPoolItem& rItem ) const { DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" ); @@ -104,7 +104,7 @@ int __EXPORT ScInputStatusItem::operator==( const SfxPoolItem& rItem ) const //! Edit-Daten vergleichen! } -SfxPoolItem* __EXPORT ScInputStatusItem::Clone( SfxItemPool * ) const +SfxPoolItem* ScInputStatusItem::Clone( SfxItemPool * ) const { return new ScInputStatusItem( *this ); } @@ -190,20 +190,20 @@ ScSortItem::ScSortItem( const ScSortItem& rItem ) : { } -__EXPORT ScSortItem::~ScSortItem() +ScSortItem::~ScSortItem() { } //------------------------------------------------------------------------ -String __EXPORT ScSortItem::GetValueText() const +String ScSortItem::GetValueText() const { return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("SortItem")); } //------------------------------------------------------------------------ -int __EXPORT ScSortItem::operator==( const SfxPoolItem& rItem ) const +int ScSortItem::operator==( const SfxPoolItem& rItem ) const { DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" ); @@ -215,7 +215,7 @@ int __EXPORT ScSortItem::operator==( const SfxPoolItem& rItem ) const //------------------------------------------------------------------------ -SfxPoolItem* __EXPORT ScSortItem::Clone( SfxItemPool * ) const +SfxPoolItem* ScSortItem::Clone( SfxItemPool * ) const { return new ScSortItem( *this ); } @@ -265,7 +265,7 @@ ScQueryItem::ScQueryItem( const ScQueryItem& rItem ) : { } -__EXPORT ScQueryItem::~ScQueryItem() +ScQueryItem::~ScQueryItem() { } @@ -290,14 +290,14 @@ BOOL ScQueryItem::GetAdvancedQuerySource(ScRange& rSource) const //------------------------------------------------------------------------ -String __EXPORT ScQueryItem::GetValueText() const +String ScQueryItem::GetValueText() const { return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("QueryItem")); } //------------------------------------------------------------------------ -int __EXPORT ScQueryItem::operator==( const SfxPoolItem& rItem ) const +int ScQueryItem::operator==( const SfxPoolItem& rItem ) const { DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" ); @@ -311,7 +311,7 @@ int __EXPORT ScQueryItem::operator==( const SfxPoolItem& rItem ) const //------------------------------------------------------------------------ -SfxPoolItem* __EXPORT ScQueryItem::Clone( SfxItemPool * ) const +SfxPoolItem* ScQueryItem::Clone( SfxItemPool * ) const { return new ScQueryItem( *this ); } @@ -348,20 +348,20 @@ ScSubTotalItem::ScSubTotalItem( const ScSubTotalItem& rItem ) : { } -__EXPORT ScSubTotalItem::~ScSubTotalItem() +ScSubTotalItem::~ScSubTotalItem() { } //------------------------------------------------------------------------ -String __EXPORT ScSubTotalItem::GetValueText() const +String ScSubTotalItem::GetValueText() const { return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("SubTotalItem")); } //------------------------------------------------------------------------ -int __EXPORT ScSubTotalItem::operator==( const SfxPoolItem& rItem ) const +int ScSubTotalItem::operator==( const SfxPoolItem& rItem ) const { DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" ); @@ -373,7 +373,7 @@ int __EXPORT ScSubTotalItem::operator==( const SfxPoolItem& rItem ) const //------------------------------------------------------------------------ -SfxPoolItem* __EXPORT ScSubTotalItem::Clone( SfxItemPool * ) const +SfxPoolItem* ScSubTotalItem::Clone( SfxItemPool * ) const { return new ScSubTotalItem( *this ); } @@ -408,21 +408,21 @@ ScUserListItem::ScUserListItem( const ScUserListItem& rItem ) pUserList = NULL; } -__EXPORT ScUserListItem::~ScUserListItem() +ScUserListItem::~ScUserListItem() { delete pUserList; } //------------------------------------------------------------------------ -String __EXPORT ScUserListItem::GetValueText() const +String ScUserListItem::GetValueText() const { return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ScUserListItem")); } //------------------------------------------------------------------------ -int __EXPORT ScUserListItem::operator==( const SfxPoolItem& rItem ) const +int ScUserListItem::operator==( const SfxPoolItem& rItem ) const { DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" ); @@ -440,7 +440,7 @@ int __EXPORT ScUserListItem::operator==( const SfxPoolItem& rItem ) const //------------------------------------------------------------------------ -SfxPoolItem* __EXPORT ScUserListItem::Clone( SfxItemPool * ) const +SfxPoolItem* ScUserListItem::Clone( SfxItemPool * ) const { return new ScUserListItem( *this ); } @@ -475,20 +475,20 @@ ScConsolidateItem::ScConsolidateItem( const ScConsolidateItem& rItem ) : //------------------------------------------------------------------------ -__EXPORT ScConsolidateItem::~ScConsolidateItem() +ScConsolidateItem::~ScConsolidateItem() { } //------------------------------------------------------------------------ -String __EXPORT ScConsolidateItem::GetValueText() const +String ScConsolidateItem::GetValueText() const { return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ScConsolidateItem")); } //------------------------------------------------------------------------ -int __EXPORT ScConsolidateItem::operator==( const SfxPoolItem& rItem ) const +int ScConsolidateItem::operator==( const SfxPoolItem& rItem ) const { DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" ); @@ -499,7 +499,7 @@ int __EXPORT ScConsolidateItem::operator==( const SfxPoolItem& rItem ) const //------------------------------------------------------------------------ -SfxPoolItem* __EXPORT ScConsolidateItem::Clone( SfxItemPool * ) const +SfxPoolItem* ScConsolidateItem::Clone( SfxItemPool * ) const { return new ScConsolidateItem( *this ); } @@ -535,21 +535,21 @@ ScPivotItem::ScPivotItem( const ScPivotItem& rItem ) : //------------------------------------------------------------------------ -__EXPORT ScPivotItem::~ScPivotItem() +ScPivotItem::~ScPivotItem() { delete pSaveData; } //------------------------------------------------------------------------ -String __EXPORT ScPivotItem::GetValueText() const +String ScPivotItem::GetValueText() const { return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ScPivotItem")); } //------------------------------------------------------------------------ -int __EXPORT ScPivotItem::operator==( const SfxPoolItem& rItem ) const +int ScPivotItem::operator==( const SfxPoolItem& rItem ) const { DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" ); @@ -562,7 +562,7 @@ int __EXPORT ScPivotItem::operator==( const SfxPoolItem& rItem ) const //------------------------------------------------------------------------ -SfxPoolItem* __EXPORT ScPivotItem::Clone( SfxItemPool * ) const +SfxPoolItem* ScPivotItem::Clone( SfxItemPool * ) const { return new ScPivotItem( *this ); } @@ -589,20 +589,20 @@ ScSolveItem::ScSolveItem( const ScSolveItem& rItem ) //------------------------------------------------------------------------ -__EXPORT ScSolveItem::~ScSolveItem() +ScSolveItem::~ScSolveItem() { } //------------------------------------------------------------------------ -String __EXPORT ScSolveItem::GetValueText() const +String ScSolveItem::GetValueText() const { return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ScSolveItem")); } //------------------------------------------------------------------------ -int __EXPORT ScSolveItem::operator==( const SfxPoolItem& rItem ) const +int ScSolveItem::operator==( const SfxPoolItem& rItem ) const { DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" ); @@ -613,7 +613,7 @@ int __EXPORT ScSolveItem::operator==( const SfxPoolItem& rItem ) const //------------------------------------------------------------------------ -SfxPoolItem* __EXPORT ScSolveItem::Clone( SfxItemPool * ) const +SfxPoolItem* ScSolveItem::Clone( SfxItemPool * ) const { return new ScSolveItem( *this ); } @@ -639,20 +639,20 @@ ScTabOpItem::ScTabOpItem( const ScTabOpItem& rItem ) //------------------------------------------------------------------------ -__EXPORT ScTabOpItem::~ScTabOpItem() +ScTabOpItem::~ScTabOpItem() { } //------------------------------------------------------------------------ -String __EXPORT ScTabOpItem::GetValueText() const +String ScTabOpItem::GetValueText() const { return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ScTabOpItem")); } //------------------------------------------------------------------------ -int __EXPORT ScTabOpItem::operator==( const SfxPoolItem& rItem ) const +int ScTabOpItem::operator==( const SfxPoolItem& rItem ) const { DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" ); @@ -663,7 +663,7 @@ int __EXPORT ScTabOpItem::operator==( const SfxPoolItem& rItem ) const //------------------------------------------------------------------------ -SfxPoolItem* __EXPORT ScTabOpItem::Clone( SfxItemPool * ) const +SfxPoolItem* ScTabOpItem::Clone( SfxItemPool * ) const { return new ScTabOpItem( *this ); } @@ -692,20 +692,20 @@ ScCondFrmtItem::ScCondFrmtItem( const ScCondFrmtItem& rItem ) //------------------------------------------------------------------------ -__EXPORT ScCondFrmtItem::~ScCondFrmtItem() +ScCondFrmtItem::~ScCondFrmtItem() { } //------------------------------------------------------------------------ -String __EXPORT ScCondFrmtItem::GetValueText() const +String ScCondFrmtItem::GetValueText() const { return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ScCondFrmtItem")); } //------------------------------------------------------------------------ -int __EXPORT ScCondFrmtItem::operator==( const SfxPoolItem& rItem ) const +int ScCondFrmtItem::operator==( const SfxPoolItem& rItem ) const { DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" ); @@ -716,7 +716,7 @@ int __EXPORT ScCondFrmtItem::operator==( const SfxPoolItem& rItem ) const //------------------------------------------------------------------------ -SfxPoolItem* __EXPORT ScCondFrmtItem::Clone( SfxItemPool * ) const +SfxPoolItem* ScCondFrmtItem::Clone( SfxItemPool * ) const { return new ScCondFrmtItem( *this ); } diff --git a/sc/source/ui/attrdlg/attrdlg.cxx b/sc/source/ui/attrdlg/attrdlg.cxx index 6c33476e9d89..1f2e11e49985 100644 --- a/sc/source/ui/attrdlg/attrdlg.cxx +++ b/sc/source/ui/attrdlg/attrdlg.cxx @@ -99,13 +99,13 @@ ScAttrDlg::ScAttrDlg( SfxViewFrame* pFrameP, // ----------------------------------------------------------------------- -__EXPORT ScAttrDlg::~ScAttrDlg() +ScAttrDlg::~ScAttrDlg() { } // ----------------------------------------------------------------------- -void __EXPORT ScAttrDlg::PageCreated( USHORT nPageId, SfxTabPage& rTabPage ) +void ScAttrDlg::PageCreated( USHORT nPageId, SfxTabPage& rTabPage ) { SfxObjectShell* pDocSh = SfxObjectShell::Current(); SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool())); diff --git a/sc/source/ui/attrdlg/condfrmt.cxx b/sc/source/ui/attrdlg/condfrmt.cxx index dbdad9aace69..a36edf55fd33 100644 --- a/sc/source/ui/attrdlg/condfrmt.cxx +++ b/sc/source/ui/attrdlg/condfrmt.cxx @@ -29,7 +29,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sc.hxx" - #include <sfx2/dispatch.hxx> #include <svl/stritem.hxx> @@ -48,6 +47,7 @@ #include "condfrmt.hxx" #undef _CONDFRMT_CXX +#include "rangelst.hxx" //============================================================================ // class ScConditionalFormat @@ -262,7 +262,6 @@ ScConditionalFormatDlg::ScConditionalFormatDlg( } } - if ( pCurrentFormat->Count() > 1 ) { aCbxCond2.Check( TRUE ); @@ -325,15 +324,13 @@ ScConditionalFormatDlg::ScConditionalFormatDlg( // SFX_APPWINDOW->Disable(); } - //---------------------------------------------------------------------------- // Destruktor -__EXPORT ScConditionalFormatDlg::~ScConditionalFormatDlg() +ScConditionalFormatDlg::~ScConditionalFormatDlg() { } - //---------------------------------------------------------------------------- void ScConditionalFormatDlg::SetReference( const ScRange& rRef, ScDocument* pDocP ) @@ -380,7 +377,6 @@ BOOL ScConditionalFormatDlg::IsRefInputMode() const return (pEdActive != NULL); } - //---------------------------------------------------------------------------- void ScConditionalFormatDlg::SetActive() @@ -397,7 +393,6 @@ void ScConditionalFormatDlg::SetActive() RefInputDone(); } - //---------------------------------------------------------------------------- // Holt die ausgewaehlte bedingte Formatierung ab @@ -413,6 +408,9 @@ void ScConditionalFormatDlg::GetConditionalFormat( ScConditionalFormat& rCndFmt if (pViewShell) { ScViewData* pData = pViewShell->GetViewData(); + ScRangeListRef rRanges; + pData->GetMultiArea( rRanges ); + rCndFmt.AddRangeInfo( rRanges ); aCurPos = ScAddress( pData->GetCurX(), pData->GetCurY(), pData->GetTabNo() ); } @@ -456,7 +454,6 @@ void ScConditionalFormatDlg::GetConditionalFormat( ScConditionalFormat& rCndFmt } } - //---------------------------------------------------------------------------- // Zerstoert den Dialog @@ -465,7 +462,6 @@ BOOL ScConditionalFormatDlg::Close() return DoClose( ScCondFormatDlgWrapper::GetChildWindowId() ); } - //---------------------------------------------------------------------------- // Handler: @@ -490,7 +486,6 @@ IMPL_LINK( ScConditionalFormatDlg, ClickCond1Hdl, void *, EMPTYARG ) return( 0L ); } - //---------------------------------------------------------------------------- // Zellwert/Formel @@ -518,7 +513,6 @@ IMPL_LINK( ScConditionalFormatDlg, ChangeCond11Hdl, void *, EMPTYARG ) return( 0L ); } - //---------------------------------------------------------------------------- // zwischen, gleich, groesser, ... @@ -528,7 +522,17 @@ IMPL_LINK( ScConditionalFormatDlg, ChangeCond12Hdl, void *, EMPTYARG ) { USHORT nPos = aLbCond12.GetSelectEntryPos(); - if( nPos == 6 || nPos == 7 ) // zwischen, n. zwischen + aEdtCond11.Show(); + aRbCond11.Show(); + if( nPos > 7 ) + { + aEdtCond11.Hide(); + aRbCond11.Hide(); + aFtCond1And.Hide(); + aEdtCond12.Hide(); + aRbCond12.Hide(); + } + else if( nPos == 6 || nPos == 7 ) // zwischen, n. zwischen { aEdtCond11.SetSizePixel( aCond1Size3 ); aRbCond11.SetPosPixel( aRBtn1Pos1 ); @@ -549,7 +553,6 @@ IMPL_LINK( ScConditionalFormatDlg, ChangeCond12Hdl, void *, EMPTYARG ) return( 0L ); } - //---------------------------------------------------------------------------- // Enabled/Disabled Condition2-Controls @@ -571,7 +574,6 @@ IMPL_LINK( ScConditionalFormatDlg, ClickCond2Hdl, void *, EMPTYARG ) return( 0L ); } - //---------------------------------------------------------------------------- // Zellwert/Formel @@ -599,7 +601,6 @@ IMPL_LINK( ScConditionalFormatDlg, ChangeCond21Hdl, void *, EMPTYARG ) return( 0L ); } - //---------------------------------------------------------------------------- // zwischen, gleich, groesser, ... @@ -609,7 +610,17 @@ IMPL_LINK( ScConditionalFormatDlg, ChangeCond22Hdl, void *, EMPTYARG ) { USHORT nPos = aLbCond22.GetSelectEntryPos(); - if( nPos == 6 || nPos == 7 ) // zwischen, n. zwischen + aEdtCond21.Show(); + aRbCond21.Show(); + if( nPos > 7 ) + { + aEdtCond21.Hide(); + aRbCond21.Hide(); + aFtCond2And.Hide(); + aEdtCond22.Hide(); + aRbCond22.Hide(); + } + else if( nPos == 6 || nPos == 7 ) // zwischen, n. zwischen { aEdtCond21.SetSizePixel( aCond2Size3 ); aRbCond21.SetPosPixel( aRBtn2Pos1 ); @@ -630,7 +641,6 @@ IMPL_LINK( ScConditionalFormatDlg, ChangeCond22Hdl, void *, EMPTYARG ) return( 0L ); } - //---------------------------------------------------------------------------- // Enabled/Disabled Condition3-Controls @@ -652,7 +662,6 @@ IMPL_LINK( ScConditionalFormatDlg, ClickCond3Hdl, void *, EMPTYARG ) return( 0L ); } - //---------------------------------------------------------------------------- // Zellwert/Formel @@ -680,7 +689,6 @@ IMPL_LINK( ScConditionalFormatDlg, ChangeCond31Hdl, void *, EMPTYARG ) return( 0L ); } - //---------------------------------------------------------------------------- // zwischen, gleich, groesser, ... @@ -690,7 +698,17 @@ IMPL_LINK( ScConditionalFormatDlg, ChangeCond32Hdl, void *, EMPTYARG ) { USHORT nPos = aLbCond32.GetSelectEntryPos(); - if( nPos == 6 || nPos == 7 ) // zwischen, n. zwischen + aEdtCond31.Show(); + aRbCond31.Show(); + if( nPos > 7 ) + { + aEdtCond31.Hide(); + aRbCond31.Hide(); + aFtCond3And.Hide(); + aEdtCond32.Hide(); + aRbCond32.Hide(); + } + else if( nPos == 6 || nPos == 7 ) // zwischen, n. zwischen { aEdtCond31.SetSizePixel( aCond3Size3 ); aRbCond31.SetPosPixel( aRBtn3Pos1 ); @@ -711,7 +729,6 @@ IMPL_LINK( ScConditionalFormatDlg, ChangeCond32Hdl, void *, EMPTYARG ) return( 0L ); } - //---------------------------------------------------------------------------- IMPL_LINK( ScConditionalFormatDlg, GetFocusHdl, Control*, pCtrl ) @@ -737,7 +754,6 @@ IMPL_LINK( ScConditionalFormatDlg, GetFocusHdl, Control*, pCtrl ) return 0; } - //---------------------------------------------------------------------------- IMPL_LINK( ScConditionalFormatDlg, LoseFocusHdl, Control*, EMPTYARG ) @@ -746,7 +762,6 @@ IMPL_LINK( ScConditionalFormatDlg, LoseFocusHdl, Control*, EMPTYARG ) return 0; } - //---------------------------------------------------------------------------- // [OK], [Cancel] @@ -771,7 +786,6 @@ IMPL_LINK( ScConditionalFormatDlg, BtnHdl, PushButton*, pBtn ) return( 0L ); } - //---------------------------------------------------------------------------- IMPL_LINK( ScConditionalFormatDlg, NewBtnHdl, PushButton*, pBtn ) diff --git a/sc/source/ui/attrdlg/makefile.mk b/sc/source/ui/attrdlg/makefile.mk index 9b4dc49dec57..a979840b6063 100644 --- a/sc/source/ui/attrdlg/makefile.mk +++ b/sc/source/ui/attrdlg/makefile.mk @@ -42,12 +42,16 @@ CXXFILES = attrdlg.cxx \ tabpages.cxx \ condfrmt.cxx -SLOFILES = $(SLO)$/attrdlg.obj \ - $(SLO)$/tabpages.obj \ +SLOFILES = \ + $(EXCEPTIONSFILES) + +EXCEPTIONSFILES = \ + $(SLO)$/attrdlg.obj \ $(SLO)$/condfrmt.obj \ $(SLO)$/scabstdlg.obj \ - $(SLO)$/scuiexp.obj \ - $(SLO)$/scdlgfact.obj + $(SLO)$/scdlgfact.obj \ + $(SLO)$/scuiexp.obj \ + $(SLO)$/tabpages.obj LIB1TARGET = $(SLB)$/$(TARGET).lib diff --git a/sc/source/ui/attrdlg/scdlgfact.cxx b/sc/source/ui/attrdlg/scdlgfact.cxx index b4035b187197..64006c450e44 100644 --- a/sc/source/ui/attrdlg/scdlgfact.cxx +++ b/sc/source/ui/attrdlg/scdlgfact.cxx @@ -38,91 +38,91 @@ #include "scdlgfact.hxx" #include "sc.hrc" -#include "scuiasciiopt.hxx" //add for ScImportAsciiDlg -#include "scuiautofmt.hxx" //add for ScAutoFormatDlg -#include "corodlg.hxx" //add for ScColRowLabelDlg -#include "crdlg.hxx" //add for ScColOrRowDlg -#include "dapidata.hxx" //add for ScDataPilotDatabaseDlg -#include "dapitype.hxx" //add for ScDataPilotSourceTypeDlg, ScDataPilotServiceDlg -#include "delcldlg.hxx" //add for ScDeleteCellDlg -#include "delcodlg.hxx" //add for ScDeleteContentsDlg -#include "filldlg.hxx" //add for ScFillSeriesDlg -#include "groupdlg.hxx" //add for ScGroupDlg -#include "inscldlg.hxx" //add for ScInsertCellDlg -#include "inscodlg.hxx" //add for ScInsertContentsDlg -#include "instbdlg.hxx" //add for ScInsertTableDlg -#include "lbseldlg.hxx" //add for ScSelEntryDlg -#include "linkarea.hxx" //add for ScLinkedAreaDlg -#include "mtrindlg.hxx" //add for ScMetricInputDlg -#include "mvtabdlg.hxx" //add for ScMoveTableDlg -#include "namecrea.hxx" //add for ScNameCreateDlg -#include "namepast.hxx" //add for ScNamePasteDlg -#include "pfiltdlg.hxx" //add for ScPivotFilterDlg -#include "pvfundlg.hxx" //add for ScDPFunctionDlg +#include "scuiasciiopt.hxx" +#include "scuiautofmt.hxx" +#include "corodlg.hxx" +#include "crdlg.hxx" +#include "dapidata.hxx" +#include "dapitype.hxx" +#include "delcldlg.hxx" +#include "delcodlg.hxx" +#include "filldlg.hxx" +#include "groupdlg.hxx" +#include "inscldlg.hxx" +#include "inscodlg.hxx" +#include "instbdlg.hxx" +#include "lbseldlg.hxx" +#include "linkarea.hxx" +#include "mtrindlg.hxx" +#include "mvtabdlg.hxx" +#include "namecrea.hxx" +#include "namepast.hxx" +#include "pfiltdlg.hxx" +#include "pvfundlg.hxx" #include "dpgroupdlg.hxx" -#include "scendlg.hxx" //add for ScNewScenarioDlg -#include "shtabdlg.hxx" //add for ScShowTabDlg -#include "strindlg.hxx" //add for ScStringInputDlg -#include "tabbgcolordlg.hxx"//add for ScTabBgColorDlg -#include "scuiimoptdlg.hxx" //add for ScImportOptionsDlg -#include "attrdlg.hxx" //add for ScAttrDlg -#include "hfedtdlg.hxx" //add for ScHFEditDlg -#include "styledlg.hxx" //add for ScStyleDlg -#include "subtdlg.hxx" //add for ScSubTotalDlg -#include "textdlgs.hxx" //add for ScCharDlg, ScParagraphDlg -#include "validate.hxx" //add for ScValidationDlg -#include "validate.hrc" //add for ScValidationDlg -#include "sortdlg.hxx" //add for ScSortDlg +#include "scendlg.hxx" +#include "shtabdlg.hxx" +#include "strindlg.hxx" +#include "tabbgcolordlg.hxx" +#include "scuiimoptdlg.hxx" +#include "attrdlg.hxx" +#include "hfedtdlg.hxx" +#include "styledlg.hxx" +#include "subtdlg.hxx" +#include "textdlgs.hxx" +#include "validate.hxx" +#include "validate.hrc" +#include "sortdlg.hxx" #include "textimportoptions.hxx" -#include "opredlin.hxx" //add for ScRedlineOptionsTabPage -#include "tpcalc.hxx" //add for ScTpCalcOptions -#include "tpprint.hxx" //add for ScTpPrintOptions -#include "tpstat.hxx" //add for ScDocStatPage -#include "tpusrlst.hxx" //add for ScTpUserLists -#include "tpview.hxx" //add for ScTpContentOptions +#include "opredlin.hxx" +#include "tpcalc.hxx" +#include "tpprint.hxx" +#include "tpstat.hxx" +#include "tpusrlst.hxx" +#include "tpview.hxx" #include "tpformula.hxx" -#include "datafdlg.hxx" //add for ScDataFormDlg +#include "datafdlg.hxx" #include "tpcompatibility.hxx" // ause #include "editutil.hxx" #include <sfx2/layout.hxx> -IMPL_ABSTDLG_BASE(VclAbstractDialog_Impl); //add for ScColOrRowDlg -IMPL_ABSTDLG_BASE(AbstractScImportAsciiDlg_Impl);//add for ScImportAsciiDlg -IMPL_ABSTDLG_BASE(AbstractScAutoFormatDlg_Impl); //add for ScAutoFormatDlg -IMPL_ABSTDLG_BASE(AbstractScColRowLabelDlg_Impl); //add for ScColRowLabelDlg -IMPL_ABSTDLG_BASE(AbstractScDataPilotDatabaseDlg_Impl); //add for ScDataPilotDatabaseDlg -IMPL_ABSTDLG_BASE(AbstractScDataPilotSourceTypeDlg_Impl); //add for ScDataPilotSourceTypeDlg -IMPL_ABSTDLG_BASE(AbstractScDataPilotServiceDlg_Impl); //add for ScDataPilotServiceDlg -IMPL_ABSTDLG_BASE(AbstractScDeleteCellDlg_Impl); //add for ScDeleteCellDlg +IMPL_ABSTDLG_BASE(VclAbstractDialog_Impl); +IMPL_ABSTDLG_BASE(AbstractScImportAsciiDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScAutoFormatDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScColRowLabelDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScDataPilotDatabaseDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScDataPilotSourceTypeDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScDataPilotServiceDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScDeleteCellDlg_Impl); //for dataform -IMPL_ABSTDLG_BASE(AbstractScDataFormDlg_Impl); //add for ScDataFormDlg -IMPL_ABSTDLG_BASE(AbstractScDeleteContentsDlg_Impl); //add for ScDeleteContentsDlg -IMPL_ABSTDLG_BASE(AbstractScFillSeriesDlg_Impl); //add for ScFillSeriesDlg -IMPL_ABSTDLG_BASE(AbstractScGroupDlg_Impl); //add for ScGroupDlg -IMPL_ABSTDLG_BASE(AbstractScInsertCellDlg_Impl); //add for ScInsertCellDlg -IMPL_ABSTDLG_BASE(AbstractScInsertContentsDlg_Impl); //add for ScInsertContentsDlg -IMPL_ABSTDLG_BASE(AbstractScInsertTableDlg_Impl); //add for ScInsertTableDlg -IMPL_ABSTDLG_BASE(AbstractScSelEntryDlg_Impl); //add for ScSelEntryDlg -IMPL_ABSTDLG2_BASE(AbstractScLinkedAreaDlg_Impl); //add for ScLinkedAreaDlg -IMPL_ABSTDLG_BASE(AbstractScMetricInputDlg_Impl); //add for ScMetricInputDlg -IMPL_ABSTDLG_BASE(AbstractScMoveTableDlg_Impl); //add for ScMoveTableDlg -IMPL_ABSTDLG_BASE(AbstractScNameCreateDlg_Impl); //add for ScNameCreateDlg -IMPL_ABSTDLG_BASE(AbstractScNamePasteDlg_Impl); //add for ScNamePasteDlg -IMPL_ABSTDLG_BASE(AbstractScPivotFilterDlg_Impl); //add for ScPivotFilterDlg -IMPL_ABSTDLG_BASE(AbstractScDPFunctionDlg_Impl); //add for ScDPFunctionDlg -IMPL_ABSTDLG_BASE(AbstractScDPSubtotalDlg_Impl); //add for ScDPSubtotalDlg +IMPL_ABSTDLG_BASE(AbstractScDataFormDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScDeleteContentsDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScFillSeriesDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScGroupDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScInsertCellDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScInsertContentsDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScInsertTableDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScSelEntryDlg_Impl); +IMPL_ABSTDLG2_BASE(AbstractScLinkedAreaDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScMetricInputDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScMoveTableDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScNameCreateDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScNamePasteDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScPivotFilterDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScDPFunctionDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScDPSubtotalDlg_Impl); IMPL_ABSTDLG_BASE(AbstractScDPNumGroupDlg_Impl); IMPL_ABSTDLG_BASE(AbstractScDPDateGroupDlg_Impl); -IMPL_ABSTDLG_BASE(AbstractScDPShowDetailDlg_Impl); //add for ScDPShowDetailDlg -IMPL_ABSTDLG_BASE(AbstractScNewScenarioDlg_Impl); //add for ScNewScenarioDlg -IMPL_ABSTDLG_BASE(AbstractScShowTabDlg_Impl); //add for ScShowTabDlg -IMPL_ABSTDLG_BASE(AbstractScStringInputDlg_Impl); //add for ScStringInputDlg -IMPL_ABSTDLG_BASE(AbstractScTabBgColorDlg_Impl); //add for ScTabBgColorDlg -IMPL_ABSTDLG_BASE(AbstractScImportOptionsDlg_Impl); //add for ScImportOptionsDlg +IMPL_ABSTDLG_BASE(AbstractScDPShowDetailDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScNewScenarioDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScShowTabDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScStringInputDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScTabBgColorDlg_Impl); +IMPL_ABSTDLG_BASE(AbstractScImportOptionsDlg_Impl); IMPL_ABSTDLG_BASE(AbstractScTextImportOptionsDlg_Impl); -IMPL_ABSTDLG_BASE(AbstractTabDialog_Impl); //add for ScAttrDlg, ScHFEditDlg, ScStyleDlg, ScSubTotalDlg,ScCharDlg, ScParagraphDlg, ScValidationDlg, ScSortDlg +IMPL_ABSTDLG_BASE(AbstractTabDialog_Impl); // AbstractTabDialog_Impl begin void AbstractTabDialog_Impl::SetCurPageId( USHORT nId ) @@ -157,7 +157,7 @@ String AbstractTabDialog_Impl::GetText() const #if ENABLE_LAYOUT namespace layout { -IMPL_ABSTDLG_BASE(AbstractTabDialog_Impl); //add for ScAttrDlg, ScHFEditDlg, ScStyleDlg, ScSubTotalDlg,ScCharDlg, ScParagraphDlg, ScValidationDlg, ScSortDlg +IMPL_ABSTDLG_BASE(AbstractTabDialog_Impl); // AbstractTabDialog_Impl begin void AbstractTabDialog_Impl::SetCurPageId( USHORT nId ) @@ -191,7 +191,7 @@ String AbstractTabDialog_Impl::GetText() const } #endif /* ENABLE_LAYOUT */ -//add for AbstractTabDialog_Impl end + // AbstractScImportAsciiDlg_Impl begin void AbstractScImportAsciiDlg_Impl::GetOptions( ScAsciiOptions& rOpt ) { @@ -289,13 +289,13 @@ String AbstractScDataPilotServiceDlg_Impl::GetParPass() const //AbstractScDataPilotServiceDlg_Impl end //AbstractScDeleteCellDlg_Impl begin -DelCellCmd AbstractScDeleteCellDlg_Impl::GetDelCellCmd() const //add for ScDeleteCellDlg +DelCellCmd AbstractScDeleteCellDlg_Impl::GetDelCellCmd() const { return pDlg->GetDelCellCmd(); } //AbstractScDeleteCellDlg_Impl end -//add for AbstractScDeleteContentsDlg_Impl begin + void AbstractScDeleteContentsDlg_Impl::DisableObjects() { pDlg->DisableObjects(); @@ -304,9 +304,9 @@ USHORT AbstractScDeleteContentsDlg_Impl::GetDelContentsCmdBits() const { return pDlg->GetDelContentsCmdBits(); } -//add for AbstractScDeleteContentsDlg_Impl end -//add for AbstractScFillSeriesDlg_Impl begin + + FillDir AbstractScFillSeriesDlg_Impl::GetFillDir() const { return pDlg->GetFillDir(); @@ -342,26 +342,26 @@ void AbstractScFillSeriesDlg_Impl::SetEdStartValEnabled(BOOL bFlag) { pDlg->SetEdStartValEnabled(bFlag); } -//add for AbstractScFillSeriesDlg_Impl end -//add for AbstractScGroupDlg_Impl begin + + BOOL AbstractScGroupDlg_Impl::GetColsChecked() const { return pDlg->GetColsChecked(); } -//add for AbstractScGroupDlg_Impl end -//add for AbstractScInsertCellDlg_Impl begin + + InsCellCmd AbstractScInsertCellDlg_Impl::GetInsCellCmd() const { return pDlg->GetInsCellCmd(); } -//add for AbstractScInsertCellDlg_Impl end -//add for AbstractScInsertContentsDlg_Impl begin + + USHORT AbstractScInsertContentsDlg_Impl::GetInsContentsCmdBits() const { return pDlg->GetInsContentsCmdBits(); @@ -407,10 +407,10 @@ InsCellCmd AbstractScInsertContentsDlg_Impl::GetMoveMode() { return pDlg->GetMoveMode(); } -//add for AbstractScInsertContentsDlg_Impl end -//add for AbstractScInsertTableDlg_Impl begin + + BOOL AbstractScInsertTableDlg_Impl::GetTablesFromFile() { return pDlg->GetTablesFromFile(); @@ -440,16 +440,16 @@ const String* AbstractScInsertTableDlg_Impl::GetNextTable( USHORT* pN ) { return pDlg->GetNextTable( pN ); } -//add for AbstractScInsertTableDlg_Impl end -//add for AbstractScSelEntryDlg_Impl begin + + String AbstractScSelEntryDlg_Impl::GetSelectEntry() const { return pDlg->GetSelectEntry(); } -//add for AbstractScSelEntryDlg_Impl end -//add for AbstractScLinkedAreaDlg_Impl begin + + void AbstractScLinkedAreaDlg_Impl::InitFromOldLink( const String& rFile, const String& rFilter, const String& rOptions, const String& rSource, ULONG nRefresh ) @@ -477,19 +477,19 @@ ULONG AbstractScLinkedAreaDlg_Impl::GetRefresh() { return pDlg->GetRefresh(); } -//add for AbstractScLinkedAreaDlg_Impl end -//add for AbstractScMetricInputDlg_Impl begin + + long AbstractScMetricInputDlg_Impl::GetInputValue( FieldUnit eUnit ) const { return pDlg->GetInputValue( eUnit ); } -//add for AbstractScMetricInputDlg_Impl end -//add for AbstractScMoveTableDlg_Impl begin -USHORT AbstractScMoveTableDlg_Impl::GetSelectedDocument() const //add for ScMoveTableDlg + + +USHORT AbstractScMoveTableDlg_Impl::GetSelectedDocument() const { return pDlg->GetSelectedDocument(); } @@ -498,44 +498,57 @@ USHORT AbstractScMoveTableDlg_Impl::GetSelectedTable() const { return pDlg->GetSelectedTable(); } -BOOL AbstractScMoveTableDlg_Impl::GetCopyTable() const +bool AbstractScMoveTableDlg_Impl::GetCopyTable() const { return pDlg->GetCopyTable(); } -void AbstractScMoveTableDlg_Impl::SetCopyTable(BOOL bFla) +bool AbstractScMoveTableDlg_Impl::GetRenameTable() const +{ + return pDlg->GetRenameTable(); +} +void AbstractScMoveTableDlg_Impl::GetTabNameString( String& rString ) const +{ + pDlg->GetTabNameString( rString ); +} +void AbstractScMoveTableDlg_Impl::SetForceCopyTable() { - return pDlg->SetCopyTable( bFla ); + return pDlg->SetForceCopyTable(); } void AbstractScMoveTableDlg_Impl::EnableCopyTable(BOOL bFlag) { return pDlg->EnableCopyTable( bFlag); } -//add for AbstractScMoveTableDlg_Impl end +void AbstractScMoveTableDlg_Impl::EnableRenameTable(BOOL bFlag) +{ + return pDlg->EnableRenameTable( bFlag); +} + + -//add for AbstractScNameCreateDlg_Impl begin -USHORT AbstractScNameCreateDlg_Impl::GetFlags() const //add for ScNameCreateDlg + +USHORT AbstractScNameCreateDlg_Impl::GetFlags() const { return pDlg->GetFlags(); } -//add for AbstractScNameCreateDlg_Impl end -//add for AbstractScNamePasteDlg_Impl begin -String AbstractScNamePasteDlg_Impl::GetSelectedName() const //add for ScNamePasteDlg + + +String AbstractScNamePasteDlg_Impl::GetSelectedName() const { return pDlg->GetSelectedName(); } -//add for AbstractScNamePasteDlg_Impl end -//add for AbstractScPivotFilterDlg_Impl begin -const ScQueryItem& AbstractScPivotFilterDlg_Impl::GetOutputItem() //add for ScPivotFilterDlg + + +const ScQueryItem& AbstractScPivotFilterDlg_Impl::GetOutputItem() { return pDlg->GetOutputItem(); } -//add for AbstractScPivotFilterDlg_Impl end -//add for AbstractScDPFunctionDlg_Impl begin -USHORT AbstractScDPFunctionDlg_Impl::GetFuncMask() const //add for ScDPFunctionDlg + + +USHORT AbstractScDPFunctionDlg_Impl::GetFuncMask() const { return pDlg->GetFuncMask(); } @@ -543,10 +556,10 @@ USHORT AbstractScDPFunctionDlg_Impl::GetFuncMask() const //add for ScDPFunctionD { return pDlg->GetFieldRef(); } -//add for AbstractScDPFunctionDlg_Impl end -//add for AbstractScDPSubtotalDlg_Impl begin -USHORT AbstractScDPSubtotalDlg_Impl::GetFuncMask() const //add for ScDPSubtotalDlg + + +USHORT AbstractScDPSubtotalDlg_Impl::GetFuncMask() const { return pDlg->GetFuncMask(); } @@ -554,7 +567,7 @@ void AbstractScDPSubtotalDlg_Impl::FillLabelData( ScDPLabelData& rLabelData ) co { pDlg->FillLabelData( rLabelData ); } -//add for AbstractScDPSubtotalDlg_Impl end + ScDPNumGroupInfo AbstractScDPNumGroupDlg_Impl::GetGroupInfo() const { @@ -571,14 +584,14 @@ sal_Int32 AbstractScDPDateGroupDlg_Impl::GetDatePart() const return pDlg->GetDatePart(); } -//add for AbstractScDPShowDetailDlg_Impl begin + String AbstractScDPShowDetailDlg_Impl::GetDimensionName() const { return pDlg->GetDimensionName(); } -//add for AbstractScDPShowDetailDlg_Impl end -//add for AbstractScNewScenarioDlg_Impl begin + + void AbstractScNewScenarioDlg_Impl::SetScenarioData( const String& rName, const String& rComment, const Color& rColor, USHORT nFlags ) { @@ -591,10 +604,10 @@ void AbstractScNewScenarioDlg_Impl::GetScenarioData( String& rName, String& rCom pDlg->GetScenarioData( rName,rComment,rColor,rFlags); } -//add for AbstractScNewScenarioDlg_Impl end -//add for AbstractScShowTabDlg_Impl begin -void AbstractScShowTabDlg_Impl::Insert( const String& rString, BOOL bSelected ) //add for ScShowTabDlg + + +void AbstractScShowTabDlg_Impl::Insert( const String& rString, BOOL bSelected ) { pDlg->Insert( rString, bSelected); } @@ -617,31 +630,31 @@ String AbstractScShowTabDlg_Impl::GetSelectEntry(USHORT nPos) const { return pDlg->GetSelectEntry(nPos); } -//add for AbstractScShowTabDlg_Impl end -//add for AbstractScStringInputDlg_Impl begin -void AbstractScStringInputDlg_Impl::GetInputString( String& rString ) const //add for ScStringInputDlg + + +void AbstractScStringInputDlg_Impl::GetInputString( String& rString ) const { pDlg->GetInputString( rString ); } -//add for AbstractScStringInputDlg_Impl end -//add for AbstractScTabBgColorDlg_Impl begin -void AbstractScTabBgColorDlg_Impl::GetSelectedColor( Color& rColor ) const //add for ScTabBgColorDlg + + +void AbstractScTabBgColorDlg_Impl::GetSelectedColor( Color& rColor ) const { pDlg->GetSelectedColor( rColor ); } -//add for AbstractScTabBgColorDlg_Impl end -//add for AbstractScImportOptionsDlg_Impl begin -void AbstractScImportOptionsDlg_Impl::GetImportOptions( ScImportOptions& rOptions ) const //add for ScImportOptionsDlg + + +void AbstractScImportOptionsDlg_Impl::GetImportOptions( ScImportOptions& rOptions ) const { pDlg->GetImportOptions(rOptions); } // add for AbstractScImportOptionsDlg_Impl end -//add for AbstractScLangChooserDlg_Impl begin + LanguageType AbstractScTextImportOptionsDlg_Impl::GetLanguageType() const { return pDlg->getLanguageType(); @@ -652,11 +665,11 @@ bool AbstractScTextImportOptionsDlg_Impl::IsDateConversionSet() const return pDlg->isDateConversionSet(); } -//add for AbstractScLangChooserDlg_Impl end + // =========================Factories for createdialog =================== -//add for ScImportAsciiDlg begin + AbstractScImportAsciiDlg * ScAbstractDialogFactory_Impl::CreateScImportAsciiDlg ( Window* pParent, String aDatName, SvStream* pInStream, int nId, sal_Unicode cSep ) { @@ -691,9 +704,9 @@ AbstractScTextImportOptionsDlg * ScAbstractDialogFactory_Impl::CreateScTextImpor return pDlg ? new AbstractScTextImportOptionsDlg_Impl(pDlg) : NULL; } -//add for ScAutoFormatDlg begin -AbstractScAutoFormatDlg * ScAbstractDialogFactory_Impl::CreateScAutoFormatDlg( Window* pParent, //add for ScAutoFormatDlg + +AbstractScAutoFormatDlg * ScAbstractDialogFactory_Impl::CreateScAutoFormatDlg( Window* pParent, ScAutoFormat* pAutoFormat, const ScAutoFormatData* pSelFormatData, ScDocument* pDoc, @@ -713,11 +726,11 @@ AbstractScAutoFormatDlg * ScAbstractDialogFactory_Impl::CreateScAutoFormatDlg( W return new AbstractScAutoFormatDlg_Impl( pDlg ); return 0; } -//add for ScAutoFormatDlg end -//add for ScColRowLabelDlg begin -AbstractScColRowLabelDlg * ScAbstractDialogFactory_Impl::CreateScColRowLabelDlg(Window* pParent, //add for ScColRowLabelDlg + + +AbstractScColRowLabelDlg * ScAbstractDialogFactory_Impl::CreateScColRowLabelDlg(Window* pParent, int nId, BOOL bCol , BOOL bRow) @@ -736,10 +749,10 @@ AbstractScColRowLabelDlg * ScAbstractDialogFactory_Impl::CreateScColRowLabelDlg return new AbstractScColRowLabelDlg_Impl( pDlg ); return 0; } -//add for ScColRowLabelDlg end -//add for ScColOrRowDlg begin + + VclAbstractDialog * ScAbstractDialogFactory_Impl::CreateScColOrRowDlg(Window* pParent, const String& rStrTitle, @@ -761,9 +774,9 @@ VclAbstractDialog * ScAbstractDialogFactory_Impl::CreateScColOrRowDlg(Window* return new VclAbstractDialog_Impl( pDlg ); return 0; } -//add for ScColOrRowDlg end -//add for ScSortWarningDlg begin + + VclAbstractDialog * ScAbstractDialogFactory_Impl::CreateScSortWarningDlg( Window* pParent, const String& rExtendText, const String& rCurrentText, int nId ) { @@ -780,12 +793,12 @@ VclAbstractDialog * ScAbstractDialogFactory_Impl::CreateScSortWarningDlg( Window return new VclAbstractDialog_Impl( pDlg ); return 0; } -//add for ScSortWarningDlg end -//add for ScDataPilotDatabaseDlg begin + + AbstractScDataPilotDatabaseDlg * ScAbstractDialogFactory_Impl::CreateScDataPilotDatabaseDlg (Window* pParent , - int nId ) //add for ScDataPilotDatabaseDlg + int nId ) { ScDataPilotDatabaseDlg * pDlg=NULL; switch ( nId ) @@ -801,9 +814,9 @@ AbstractScDataPilotDatabaseDlg * ScAbstractDialogFactory_Impl::CreateScDataPilo return new AbstractScDataPilotDatabaseDlg_Impl( pDlg ); return 0; } -//add for ScDataPilotDatabaseDlg end -//add for ScDataPilotSourceTypeDlg begin + + AbstractScDataPilotSourceTypeDlg* ScAbstractDialogFactory_Impl::CreateScDataPilotSourceTypeDlg( Window* pParent, BOOL bEnableExternal, int nId ) @@ -826,7 +839,7 @@ AbstractScDataPilotSourceTypeDlg* ScAbstractDialogFactory_Impl::CreateScDataPilo // add for ScDataPilotSourceTypeDlg end -//add for ScDataPilotServiceDlg begin + AbstractScDataPilotServiceDlg* ScAbstractDialogFactory_Impl::CreateScDataPilotServiceDlg( Window* pParent, const com::sun::star::uno::Sequence<rtl::OUString>& rServices, int nId ) @@ -848,7 +861,7 @@ AbstractScDataPilotServiceDlg* ScAbstractDialogFactory_Impl::CreateScDataPilotSe // add for ScDataPilotServiceDlg end -//add for ScDeleteCellDlg begin + AbstractScDeleteCellDlg* ScAbstractDialogFactory_Impl::CreateScDeleteCellDlg( Window* pParent, int nId, BOOL bDisallowCellMove ) { @@ -867,9 +880,9 @@ AbstractScDeleteCellDlg* ScAbstractDialogFactory_Impl::CreateScDeleteCellDlg( Wi return 0; } -//add for ScDeleteCellDlg end -//add for ScDataFormDlg begin + + AbstractScDataFormDlg* ScAbstractDialogFactory_Impl::CreateScDataFormDlg( Window* pParent, int nId, ScTabViewShell* pTabViewShell ) { ScDataFormDlg * pDlg=NULL; @@ -887,10 +900,10 @@ AbstractScDataFormDlg* ScAbstractDialogFactory_Impl::CreateScDataFormDlg( Window return 0; } -//add for ScDataFormDlg end -//add for ScDeleteContentsDlg begin -AbstractScDeleteContentsDlg* ScAbstractDialogFactory_Impl::CreateScDeleteContentsDlg(Window* pParent,int nId, //add for ScDeleteContentsDlg + + +AbstractScDeleteContentsDlg* ScAbstractDialogFactory_Impl::CreateScDeleteContentsDlg(Window* pParent,int nId, USHORT nCheckDefaults ) { ScDeleteContentsDlg * pDlg=NULL; @@ -908,10 +921,10 @@ AbstractScDeleteContentsDlg* ScAbstractDialogFactory_Impl::CreateScDeleteContent return 0; } -//add for ScDeleteContentsDlg end -//add for ScFillSeriesDlg begin -AbstractScFillSeriesDlg* ScAbstractDialogFactory_Impl::CreateScFillSeriesDlg( Window* pParent, //add for ScFillSeriesDlg + + +AbstractScFillSeriesDlg* ScAbstractDialogFactory_Impl::CreateScFillSeriesDlg( Window* pParent, ScDocument& rDocument, FillDir eFillDir, FillCmd eFillCmd, @@ -937,9 +950,9 @@ AbstractScFillSeriesDlg* ScAbstractDialogFactory_Impl::CreateScFillSeriesDlg( Wi return 0; } -//add for ScFillSeriesDlg end -//add for ScGroupDlg begin + + AbstractScGroupDlg* ScAbstractDialogFactory_Impl::CreateAbstractScGroupDlg( Window* pParent, USHORT nResId, int nId, @@ -962,11 +975,11 @@ AbstractScGroupDlg* ScAbstractDialogFactory_Impl::CreateAbstractScGroupDlg( Wind return 0; } -//add for ScGroupDlg end -//add for ScInsertCellDlg begin -AbstractScInsertCellDlg * ScAbstractDialogFactory_Impl::CreateScInsertCellDlg( Window* pParent, //add for ScInsertCellDlg + + +AbstractScInsertCellDlg * ScAbstractDialogFactory_Impl::CreateScInsertCellDlg( Window* pParent, int nId, BOOL bDisallowCellMove ) { @@ -985,9 +998,9 @@ AbstractScInsertCellDlg * ScAbstractDialogFactory_Impl::CreateScInsertCellDlg( W return 0; } -//add for ScInsertCellDlg end -//add for ScInsertContentsDlg begin + + AbstractScInsertContentsDlg * ScAbstractDialogFactory_Impl::CreateScInsertContentsDlg( Window* pParent, int nId, USHORT nCheckDefaults, @@ -1007,9 +1020,9 @@ AbstractScInsertContentsDlg * ScAbstractDialogFactory_Impl::CreateScInsertConten return new AbstractScInsertContentsDlg_Impl( pDlg ); return 0; } -//add for ScInsertContentsDlg end -//add for ScInsertTableDlg begin + + AbstractScInsertTableDlg * ScAbstractDialogFactory_Impl::CreateScInsertTableDlg ( Window* pParent, ScViewData& rViewData, SCTAB nTabCount, bool bFromFile, int nId) { @@ -1027,7 +1040,7 @@ AbstractScInsertTableDlg * ScAbstractDialogFactory_Impl::CreateScInsertTableDlg return new AbstractScInsertTableDlg_Impl( pDlg ); return 0; } -//add for ScInsertTableDlg end + // add for ScSelEntryDlg begin AbstractScSelEntryDlg * ScAbstractDialogFactory_Impl::CreateScSelEntryDlg ( Window* pParent, @@ -1053,7 +1066,7 @@ AbstractScSelEntryDlg * ScAbstractDialogFactory_Impl::CreateScSelEntryDlg ( Wind } // add for ScSelEntryDlg end -//add for ScLinkedAreaDlg begin + AbstractScLinkedAreaDlg * ScAbstractDialogFactory_Impl::CreateScLinkedAreaDlg ( Window* pParent, int nId) { @@ -1071,9 +1084,9 @@ AbstractScLinkedAreaDlg * ScAbstractDialogFactory_Impl::CreateScLinkedAreaDlg ( return new AbstractScLinkedAreaDlg_Impl( pDlg ); return 0; } -//add for ScLinkedAreaDlg end -//add for ScMetricInputDlg begin + + AbstractScMetricInputDlg * ScAbstractDialogFactory_Impl::CreateScMetricInputDlg ( Window* pParent, USHORT nResId, // Ableitung fuer jeden Dialog! long nCurrent, @@ -1104,17 +1117,19 @@ AbstractScMetricInputDlg * ScAbstractDialogFactory_Impl::CreateScMetricInputDlg return new AbstractScMetricInputDlg_Impl( pDlg ); return 0; } -//add for ScMetricInputDlg end -//add for ScMoveTableDlg begin -AbstractScMoveTableDlg * ScAbstractDialogFactory_Impl::CreateScMoveTableDlg( Window* pParent, int nId ) + + +AbstractScMoveTableDlg * ScAbstractDialogFactory_Impl::CreateScMoveTableDlg( Window* pParent, + const String& rDefault, + int nId ) { ScMoveTableDlg * pDlg=NULL; switch ( nId ) { case RID_SCDLG_MOVETAB : - pDlg = new ScMoveTableDlg( pParent ); + pDlg = new ScMoveTableDlg( pParent, rDefault ); break; default: break; @@ -1124,10 +1139,10 @@ AbstractScMoveTableDlg * ScAbstractDialogFactory_Impl::CreateScMoveTableDlg( Wi return new AbstractScMoveTableDlg_Impl( pDlg ); return 0; } -//add for ScMoveTableDlg end -//add for ScNameCreateDlg begin + + AbstractScNameCreateDlg * ScAbstractDialogFactory_Impl::CreateScNameCreateDlg ( Window * pParent, USHORT nFlags, int nId ) { ScNameCreateDlg * pDlg=NULL; @@ -1144,10 +1159,10 @@ AbstractScNameCreateDlg * ScAbstractDialogFactory_Impl::CreateScNameCreateDlg ( return new AbstractScNameCreateDlg_Impl( pDlg ); return 0; } -//add for ScNameCreateDlg end -//add for ScNamePasteDlg begin + + AbstractScNamePasteDlg * ScAbstractDialogFactory_Impl::CreateScNamePasteDlg ( Window * pParent, const ScRangeName* pList, int nId , BOOL bInsList ) { @@ -1165,9 +1180,9 @@ AbstractScNameCreateDlg * ScAbstractDialogFactory_Impl::CreateScNameCreateDlg ( return new AbstractScNamePasteDlg_Impl( pDlg ); return 0; } -//add for ScNamePasteDlg end -//add for ScPivotFilterDlg begin + + AbstractScPivotFilterDlg * ScAbstractDialogFactory_Impl::CreateScPivotFilterDlg ( Window* pParent, const SfxItemSet& rArgSet, USHORT nSourceTab , int nId ) { @@ -1185,10 +1200,10 @@ AbstractScPivotFilterDlg * ScAbstractDialogFactory_Impl::CreateScPivotFilterDlg return new AbstractScPivotFilterDlg_Impl( pDlg ); return 0; } -//add for ScPivotFilterDlg end -//add for ScDPFunctionDlg begin + + AbstractScDPFunctionDlg * ScAbstractDialogFactory_Impl::CreateScDPFunctionDlg ( Window* pParent, int nId, const ScDPLabelDataVec& rLabelVec, @@ -1209,9 +1224,9 @@ AbstractScDPFunctionDlg * ScAbstractDialogFactory_Impl::CreateScDPFunctionDlg ( return new AbstractScDPFunctionDlg_Impl( pDlg ); return 0; } -//add for ScDPFunctionDlg end -//add for ScDPSubtotalDlg begin + + AbstractScDPSubtotalDlg * ScAbstractDialogFactory_Impl::CreateScDPSubtotalDlg ( Window* pParent, int nId, ScDPObject& rDPObj, @@ -1234,7 +1249,7 @@ AbstractScDPSubtotalDlg * ScAbstractDialogFactory_Impl::CreateScDPSubtotalDlg ( return new AbstractScDPSubtotalDlg_Impl( pDlg ); return 0; } -//add for ScDPSubtotalDlg end + AbstractScDPNumGroupDlg * ScAbstractDialogFactory_Impl::CreateScDPNumGroupDlg( Window* pParent, int nId, const ScDPNumGroupInfo& rInfo ) @@ -1253,7 +1268,7 @@ AbstractScDPDateGroupDlg * ScAbstractDialogFactory_Impl::CreateScDPDateGroupDlg( return 0; } -//add for ScDPShowDetailDlg begin + AbstractScDPShowDetailDlg * ScAbstractDialogFactory_Impl::CreateScDPShowDetailDlg ( Window* pParent, int nId, ScDPObject& rDPObj, USHORT nOrient ) { @@ -1261,9 +1276,9 @@ AbstractScDPShowDetailDlg * ScAbstractDialogFactory_Impl::CreateScDPShowDetailDl return new AbstractScDPShowDetailDlg_Impl( new ScDPShowDetailDlg( pParent, rDPObj, nOrient ) ); return 0; } -//add for ScDPShowDetailDlg end -//add for ScNewScenarioDlg begin + + AbstractScNewScenarioDlg * ScAbstractDialogFactory_Impl::CreateScNewScenarioDlg ( Window* pParent, const String& rName, int nId, BOOL bEdit , BOOL bSheetProtected ) @@ -1282,9 +1297,9 @@ AbstractScNewScenarioDlg * ScAbstractDialogFactory_Impl::CreateScNewScenarioDlg return new AbstractScNewScenarioDlg_Impl( pDlg ); return 0; } -//add for ScNewScenarioDlg end -//add for ScShowTabDlg begin + + AbstractScShowTabDlg * ScAbstractDialogFactory_Impl::CreateScShowTabDlg ( Window* pParent, int nId ) { ScShowTabDlg * pDlg=NULL; @@ -1302,10 +1317,10 @@ AbstractScShowTabDlg * ScAbstractDialogFactory_Impl::CreateScShowTabDlg ( Window return 0; } -//add for ScShowTabDlg end -//add for ScStringInputDlg begin + + AbstractScStringInputDlg * ScAbstractDialogFactory_Impl::CreateScStringInputDlg ( Window* pParent, const String& rTitle, const String& rEditTitle, @@ -1327,9 +1342,9 @@ AbstractScShowTabDlg * ScAbstractDialogFactory_Impl::CreateScShowTabDlg ( Window return new AbstractScStringInputDlg_Impl( pDlg ); return 0; } - //add for ScStringInputDlg end -//add for ScTabBgColorDlg begin + + AbstractScTabBgColorDlg * ScAbstractDialogFactory_Impl::CreateScTabBgColorDlg ( Window* pParent, const String& rTitle, @@ -1352,9 +1367,9 @@ if ( pDlg ) return new AbstractScTabBgColorDlg_Impl( pDlg ); return 0; } -//add for ScTabBgColorDlg end -//add for ScImportOptionsDlg begin + + AbstractScImportOptionsDlg * ScAbstractDialogFactory_Impl::CreateScImportOptionsDlg ( Window* pParent, int nId, BOOL bAscii, @@ -1378,13 +1393,13 @@ AbstractScImportOptionsDlg * ScAbstractDialogFactory_Impl::CreateScImportOptions return new AbstractScImportOptionsDlg_Impl( pDlg ); return 0; } -//add for ScImportOptionsDlg end + #if ENABLE_LAYOUT && !LAYOUT_SFX_TABDIALOG_BROKEN #define SfxTabDialog layout::SfxTabDialog #define AbstractTabDialog_Impl layout::AbstractTabDialog_Impl #endif /* ENABLE_LAYOUT */ -//add for ScAttrDlg begin + SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScAttrDlg( SfxViewFrame* pFrame, Window* pParent, const SfxItemSet* pCellAttrs, @@ -1405,11 +1420,11 @@ SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScAttrDlg( SfxViewFra return 0; } -//add for ScAttrDlg end + #undef SfxTabDialog #undef AbstractTabDialog_Impl -//add for ScHFEditDlg begin + SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScHFEditDlg( SfxViewFrame* pFrame, Window* pParent, const SfxItemSet& rCoreSet, @@ -1431,9 +1446,9 @@ SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScHFEditDlg( SfxViewF return new AbstractTabDialog_Impl( pDlg ); return 0; } -//add for ScHFEditDlg end -//add for ScStyleDlg begin + + SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScStyleDlg( Window* pParent, SfxStyleSheetBase& rStyleBase, USHORT nRscId, @@ -1454,9 +1469,9 @@ SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScStyleDlg( Window* return new AbstractTabDialog_Impl( pDlg ); return 0; } -//add for ScStyleDlg end -//add for ScSubTotalDlg begin + + SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScSubTotalDlg( Window* pParent, const SfxItemSet* pArgSet, int nId) @@ -1475,9 +1490,9 @@ SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScSubTotalDlg( Window return new AbstractTabDialog_Impl( pDlg ); return 0; } -//add for ScSubTotalDlg end -//add for ScCharDlg begin + + SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScCharDlg( Window* pParent, const SfxItemSet* pAttr, const SfxObjectShell* pDocShell, int nId ) { @@ -1495,9 +1510,9 @@ SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScCharDlg( Window* pP return new AbstractTabDialog_Impl( pDlg ); return 0; } -//add for ScCharDlg end -//add for ScParagraphDlg begin + + SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScParagraphDlg( Window* pParent, const SfxItemSet* pAttr , int nId ) { @@ -1515,23 +1530,17 @@ SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScParagraphDlg( Windo return new AbstractTabDialog_Impl( pDlg ); return 0; } -//add for ScParagraphDlg end -//add for ScValidationDlg begin + + SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScValidationDlg( Window* pParent, -//<!--Modified by PengYunQuan for Validity Cell Range Picker -// const SfxItemSet* pArgSet,int nId ) const SfxItemSet* pArgSet,int nId, ScTabViewShell *pTabVwSh ) -//-->Modified by PengYunQuan for Validity Cell Range Picke { SfxTabDialog* pDlg=NULL; switch ( nId ) { case TAB_DLG_VALIDATION : - //<!--Modified by PengYunQuan for Validity Cell Range Picker - //pDlg = new ScValidationDlg( pParent, pArgSet ); pDlg = new ScValidationDlg( pParent, pArgSet, pTabVwSh ); - //-->Modified by PengYunQuan for Validity Cell Range Picker break; default: break; @@ -1541,13 +1550,13 @@ SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScValidationDlg( Wind return new AbstractTabDialog_Impl( pDlg ); return 0; } -//add for ScValidationDlg end + #if ENABLE_LAYOUT && !LAYOUT_SFX_TABDIALOG_BROKEN #define SfxTabDialog layout::SfxTabDialog #define AbstractTabDialog_Impl layout::AbstractTabDialog_Impl #endif /* ENABLE_LAYOUT */ -//add for ScSortDlg begin + SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScSortDlg( Window* pParent, const SfxItemSet* pArgSet,int nId ) { @@ -1568,7 +1577,7 @@ SfxAbstractTabDialog * ScAbstractDialogFactory_Impl::CreateScSortDlg( Window* #undef SfxTabDialog #undef AbstractTabDialog_Impl -//add for ScSortDlg end + //------------------ Factories for TabPages-------------------- CreateTabPage ScAbstractDialogFactory_Impl::GetTabPageCreatorFunc( USHORT nId ) { @@ -1621,11 +1630,4 @@ GetTabPageRanges ScAbstractDialogFactory_Impl::GetTabPageRangesFunc( USHORT nId return 0; } -void ScDPFunctionDlg_Dummy() -{ - // use ScDPListBoxWrapper to avoid warning (this isn't called) - ListBox* pListBox = NULL; - ScDPListBoxWrapper aWrapper( *pListBox ); -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/attrdlg/scdlgfact.hxx b/sc/source/ui/attrdlg/scdlgfact.hxx index 9815fd22d51e..d89ee8203dbe 100644 --- a/sc/source/ui/attrdlg/scdlgfact.hxx +++ b/sc/source/ui/attrdlg/scdlgfact.hxx @@ -262,9 +262,12 @@ class AbstractScMoveTableDlg_Impl : public AbstractScMoveTableDlg //add for ScM DECL_ABSTDLG_BASE( AbstractScMoveTableDlg_Impl, ScMoveTableDlg) virtual USHORT GetSelectedDocument () const; virtual USHORT GetSelectedTable () const; - virtual BOOL GetCopyTable () const; - virtual void SetCopyTable (BOOL bFlag=TRUE); + virtual bool GetCopyTable () const; + virtual bool GetRenameTable () const; + virtual void GetTabNameString( String& rString ) const; + virtual void SetForceCopyTable (); virtual void EnableCopyTable (BOOL bFlag=TRUE); + virtual void EnableRenameTable (BOOL bFlag=TRUE); }; class AbstractScNameCreateDlg_Impl : public AbstractScNameCreateDlg //add for ScNameCreateDlg @@ -488,7 +491,10 @@ public: long nFirst = 1, long nLast = 100 ); - virtual AbstractScMoveTableDlg * CreateScMoveTableDlg( Window* pParent, int nId ); //add for ScMoveTableDlg + virtual AbstractScMoveTableDlg * CreateScMoveTableDlg( Window* pParent, //add for ScMoveTableDlg + const String& rDefault, + int nId ); + virtual AbstractScNameCreateDlg * CreateScNameCreateDlg ( Window * pParent, USHORT nFlags, int nId ); //add for ScNameCreateDlg virtual AbstractScNamePasteDlg * CreateScNamePasteDlg ( Window * pParent, const ScRangeName* pList, //add for ScNamePasteDlg diff --git a/sc/source/ui/attrdlg/tabpages.cxx b/sc/source/ui/attrdlg/tabpages.cxx index 84298f174211..7d9ec8b40682 100644 --- a/sc/source/ui/attrdlg/tabpages.cxx +++ b/sc/source/ui/attrdlg/tabpages.cxx @@ -86,20 +86,20 @@ ScTabPageProtection::ScTabPageProtection( Window* pParent, // ----------------------------------------------------------------------- -__EXPORT ScTabPageProtection::~ScTabPageProtection() +ScTabPageProtection::~ScTabPageProtection() { } //------------------------------------------------------------------------ -USHORT* __EXPORT ScTabPageProtection::GetRanges() +USHORT* ScTabPageProtection::GetRanges() { return pProtectionRanges; } // ----------------------------------------------------------------------- -SfxTabPage* __EXPORT ScTabPageProtection::Create( Window* pParent, +SfxTabPage* ScTabPageProtection::Create( Window* pParent, const SfxItemSet& rAttrSet ) { return ( new ScTabPageProtection( pParent, rAttrSet ) ); @@ -107,7 +107,7 @@ SfxTabPage* __EXPORT ScTabPageProtection::Create( Window* pParent, //------------------------------------------------------------------------ -void __EXPORT ScTabPageProtection::Reset( const SfxItemSet& rCoreAttrs ) +void ScTabPageProtection::Reset( const SfxItemSet& rCoreAttrs ) { // Variablen initialisieren @@ -151,7 +151,7 @@ void __EXPORT ScTabPageProtection::Reset( const SfxItemSet& rCoreAttrs ) // ----------------------------------------------------------------------- -BOOL __EXPORT ScTabPageProtection::FillItemSet( SfxItemSet& rCoreAttrs ) +BOOL ScTabPageProtection::FillItemSet( SfxItemSet& rCoreAttrs ) { BOOL bAttrsChanged = FALSE; USHORT nWhich = GetWhich( SID_SCATTR_PROTECTION ); @@ -185,7 +185,7 @@ BOOL __EXPORT ScTabPageProtection::FillItemSet( SfxItemSet& rCoreAttrs ) //------------------------------------------------------------------------ -int __EXPORT ScTabPageProtection::DeactivatePage( SfxItemSet* pSetP ) +int ScTabPageProtection::DeactivatePage( SfxItemSet* pSetP ) { if ( pSetP ) FillItemSet( *pSetP ); diff --git a/sc/source/ui/cctrl/cbuttonw.cxx b/sc/source/ui/cctrl/cbuttonw.cxx index 4634b179664a..34698c7b9104 100644 --- a/sc/source/ui/cctrl/cbuttonw.cxx +++ b/sc/source/ui/cctrl/cbuttonw.cxx @@ -47,7 +47,7 @@ ScDDComboBoxButton::ScDDComboBoxButton( OutputDevice* pOutputDevice ) // ------------------------------------------------------------------------- -__EXPORT ScDDComboBoxButton::~ScDDComboBoxButton() +ScDDComboBoxButton::~ScDDComboBoxButton() { } diff --git a/sc/source/ui/cctrl/dpcontrol.cxx b/sc/source/ui/cctrl/dpcontrol.cxx index 78c1871c1e1e..74333ef21a44 100644 --- a/sc/source/ui/cctrl/dpcontrol.cxx +++ b/sc/source/ui/cctrl/dpcontrol.cxx @@ -1040,14 +1040,14 @@ ScDPFieldPopupWindow::ScDPFieldPopupWindow(Window* pParent, ScDocument* pDoc) : getSectionPosSize(aPos, aSize, BTN_SINGLE_SELECT); maBtnSelectSingle.SetPosSizePixel(aPos, aSize); maBtnSelectSingle.SetQuickHelpText(ScRscStrLoader(RID_POPUP_FILTER, STR_BTN_SELECT_CURRENT).GetString()); - maBtnSelectSingle.SetModeImage(Image(ScResId(RID_IMG_SELECT_CURRENT)), BMP_COLOR_NORMAL); + maBtnSelectSingle.SetModeImage(Image(ScResId(RID_IMG_SELECT_CURRENT))); maBtnSelectSingle.SetClickHdl( LINK(this, ScDPFieldPopupWindow, ButtonHdl) ); maBtnSelectSingle.Show(); getSectionPosSize(aPos, aSize, BTN_SINGLE_UNSELECT); maBtnUnselectSingle.SetPosSizePixel(aPos, aSize); maBtnUnselectSingle.SetQuickHelpText(ScRscStrLoader(RID_POPUP_FILTER, STR_BTN_UNSELECT_CURRENT).GetString()); - maBtnUnselectSingle.SetModeImage(Image(ScResId(RID_IMG_UNSELECT_CURRENT)), BMP_COLOR_NORMAL); + maBtnUnselectSingle.SetModeImage(Image(ScResId(RID_IMG_UNSELECT_CURRENT))); maBtnUnselectSingle.SetClickHdl( LINK(this, ScDPFieldPopupWindow, ButtonHdl) ); maBtnUnselectSingle.Show(); } diff --git a/sc/source/ui/cctrl/makefile.mk b/sc/source/ui/cctrl/makefile.mk index 70b5490a9626..41598f7901c1 100644 --- a/sc/source/ui/cctrl/makefile.mk +++ b/sc/source/ui/cctrl/makefile.mk @@ -39,16 +39,15 @@ LIBTARGET=NO # --- Files -------------------------------------------------------- EXCEPTIONSFILES= \ - $(SLO)$/tbinsert.obj \ - $(SLO)$/tbzoomsliderctrl.obj \ - $(SLO)$/dpcontrol.obj + $(SLO)$/cbuttonw.obj \ + $(SLO)$/dpcontrol.obj \ + $(SLO)$/editfield.obj \ + $(SLO)$/tbinsert.obj \ + $(SLO)$/tbzoomsliderctrl.obj SLOFILES = \ + $(SLO)$/dpcontrol.obj \ $(SLO)$/popmenu.obj \ - $(SLO)$/tbinsert.obj \ - $(SLO)$/cbuttonw.obj \ - $(SLO)$/dpcontrol.obj \ - $(SLO)$/editfield.obj \ $(EXCEPTIONSFILES) SRS1NAME=$(TARGET) diff --git a/sc/source/ui/cctrl/popmenu.cxx b/sc/source/ui/cctrl/popmenu.cxx index 742104ea517f..03414b4e25ec 100644 --- a/sc/source/ui/cctrl/popmenu.cxx +++ b/sc/source/ui/cctrl/popmenu.cxx @@ -39,7 +39,7 @@ //------------------------------------------------------------------ -void __EXPORT ScPopupMenu::Select() +void ScPopupMenu::Select() { nSel = GetCurItemId(); bHit = TRUE; diff --git a/sc/source/ui/cctrl/tbinsert.cxx b/sc/source/ui/cctrl/tbinsert.cxx index 6c439fd94693..b75d5d3fe7cf 100644 --- a/sc/source/ui/cctrl/tbinsert.cxx +++ b/sc/source/ui/cctrl/tbinsert.cxx @@ -70,11 +70,11 @@ ScTbxInsertCtrl::ScTbxInsertCtrl( USHORT nSlotId, USHORT nId, ToolBox& rTbx ) : rTbx.SetItemBits( nId, TIB_DROPDOWN | rTbx.GetItemBits( nId ) ); } -__EXPORT ScTbxInsertCtrl::~ScTbxInsertCtrl() +ScTbxInsertCtrl::~ScTbxInsertCtrl() { } -void __EXPORT ScTbxInsertCtrl::StateChanged( USHORT /* nSID */, SfxItemState eState, +void ScTbxInsertCtrl::StateChanged( USHORT /* nSID */, SfxItemState eState, const SfxPoolItem* pState ) { GetToolBox().EnableItem( GetId(), (GetItemState(pState) != SFX_ITEM_DISABLED) ); @@ -91,56 +91,40 @@ void __EXPORT ScTbxInsertCtrl::StateChanged( USHORT /* nSID */, SfxItemState eSt aSlotURL += rtl::OUString::valueOf( sal_Int32( nImageId )); Image aImage = GetImage( m_xFrame, aSlotURL, - hasBigImages(), - GetToolBox().GetSettings().GetStyleSettings().GetHighContrastMode() ); + hasBigImages() + ); GetToolBox().SetItemImage(GetId(), aImage); } } } -SfxPopupWindow* __EXPORT ScTbxInsertCtrl::CreatePopupWindow() +SfxPopupWindow* ScTbxInsertCtrl::CreatePopupWindow() { -// USHORT nWinResId, nTbxResId; USHORT nSlotId = GetSlotId(); if (nSlotId == SID_TBXCTL_INSERT) { rtl::OUString aInsertBarResStr( RTL_CONSTASCII_USTRINGPARAM( "private:resource/toolbar/insertbar" )); createAndPositionSubToolBar( aInsertBarResStr ); -// nWinResId = RID_TBXCTL_INSERT; -// nTbxResId = RID_TOOLBOX_INSERT; } else if (nSlotId == SID_TBXCTL_INSCELLS) { rtl::OUString aInsertCellsBarResStr( RTL_CONSTASCII_USTRINGPARAM( "private:resource/toolbar/insertcellsbar" )); createAndPositionSubToolBar( aInsertCellsBarResStr ); -// nWinResId = RID_TBXCTL_INSCELLS; -// nTbxResId = RID_TOOLBOX_INSCELLS; } - else /* SID_TBXCTL_INSOBJ */ + else { rtl::OUString aInsertObjectBarResStr( RTL_CONSTASCII_USTRINGPARAM( "private:resource/toolbar/insertobjectbar" )); createAndPositionSubToolBar( aInsertObjectBarResStr ); -// nWinResId = RID_TBXCTL_INSOBJ; -// nTbxResId = RID_TOOLBOX_INSOBJ; } -/* - WindowAlign eNewAlign = ( GetToolBox().IsHorizontal() ) ? WINDOWALIGN_LEFT : WINDOWALIGN_TOP; - ScTbxInsertPopup *pWin = new ScTbxInsertPopup( nSlotId, eNewAlign, - ScResId(nWinResId), ScResId(nTbxResId), GetBindings() ); - pWin->StartPopupMode(&GetToolBox(), TRUE); - pWin->StartSelection(); - pWin->Show(); - return pWin; -*/ return NULL; } -SfxPopupWindowType __EXPORT ScTbxInsertCtrl::GetPopupWindowType() const +SfxPopupWindowType ScTbxInsertCtrl::GetPopupWindowType() const { return nLastSlotId ? SFX_POPUPWINDOW_ONTIMEOUT : SFX_POPUPWINDOW_ONCLICK; } -void __EXPORT ScTbxInsertCtrl::Select( BOOL /* bMod1 */ ) +void ScTbxInsertCtrl::Select( BOOL /* bMod1 */ ) { SfxViewShell* pCurSh( SfxViewShell::Current() ); SfxDispatcher* pDispatch( 0 ); @@ -155,80 +139,6 @@ void __EXPORT ScTbxInsertCtrl::Select( BOOL /* bMod1 */ ) if ( pDispatch ) pDispatch->Execute(nLastSlotId); } -/* -//------------------------------------------------------------------ -// -// Popup - Window -// -//------------------------------------------------------------------ - -ScTbxInsertPopup::ScTbxInsertPopup( USHORT nId, WindowAlign eNewAlign, - const ResId& rRIdWin, const ResId& rRIdTbx, - SfxBindings& rBindings ) : - SfxPopupWindow ( nId, rRIdWin, rBindings), - aTbx ( this, GetBindings(), rRIdTbx ), - aRIdWinTemp(rRIdWin), - aRIdTbxTemp(rRIdTbx) -{ - aTbx.UseDefault(); - FreeResource(); - - aTbx.GetToolBox().SetAlign( eNewAlign ); - if (eNewAlign == WINDOWALIGN_LEFT || eNewAlign == WINDOWALIGN_RIGHT) - SetText( EMPTY_STRING ); - - Size aSize = aTbx.CalcWindowSizePixel(); - aTbx.SetPosSizePixel( Point(), aSize ); - SetOutputSizePixel( aSize ); - aTbx.GetToolBox().SetSelectHdl( LINK(this, ScTbxInsertPopup, TbxSelectHdl)); - aTbxClickHdl = aTbx.GetToolBox().GetClickHdl(); - aTbx.GetToolBox().SetClickHdl( LINK(this, ScTbxInsertPopup, TbxClickHdl)); -} - -ScTbxInsertPopup::~ScTbxInsertPopup() -{ -} - -SfxPopupWindow* __EXPORT ScTbxInsertPopup::Clone() const -{ - return new ScTbxInsertPopup( GetId(), aTbx.GetToolBox().GetAlign(), - aRIdWinTemp, aRIdTbxTemp, - (SfxBindings&) GetBindings() ); -} - -void ScTbxInsertPopup::StartSelection() -{ - aTbx.GetToolBox().StartSelection(); -} - -IMPL_LINK(ScTbxInsertPopup, TbxSelectHdl, ToolBox*, pBox) -{ - EndPopupMode(); - - USHORT nLastSlotId = pBox->GetCurItemId(); - SfxUInt16Item aItem( GetId(), nLastSlotId ); - SfxDispatcher* pDisp = GetBindings().GetDispatcher(); - pDisp->Execute( GetId(), SFX_CALLMODE_SYNCHRON, &aItem, 0L ); - pDisp->Execute( nLastSlotId, SFX_CALLMODE_ASYNCHRON ); - return 0; -} - -IMPL_LINK(ScTbxInsertPopup, TbxClickHdl, ToolBox*, pBox) -{ - USHORT nLastSlotId = pBox->GetCurItemId(); - SfxUInt16Item aItem( GetId(), nLastSlotId ); - GetBindings().GetDispatcher()->Execute( GetId(), SFX_CALLMODE_SYNCHRON, &aItem, 0L ); - if(aTbxClickHdl.IsSet()) - aTbxClickHdl.Call(pBox); - return 0; -} - -void __EXPORT ScTbxInsertPopup::PopupModeEnd() -{ - aTbx.GetToolBox().EndSelection(); - SfxPopupWindow::PopupModeEnd(); -} -*/ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/cctrl/tbzoomsliderctrl.cxx b/sc/source/ui/cctrl/tbzoomsliderctrl.cxx index 9fe3acc0af73..1b6cb14279b2 100644 --- a/sc/source/ui/cctrl/tbzoomsliderctrl.cxx +++ b/sc/source/ui/cctrl/tbzoomsliderctrl.cxx @@ -64,7 +64,7 @@ ScZoomSliderControl::ScZoomSliderControl( // ----------------------------------------------------------------------- -__EXPORT ScZoomSliderControl::~ScZoomSliderControl() +ScZoomSliderControl::~ScZoomSliderControl() { } @@ -256,10 +256,9 @@ ScZoomSliderWnd::ScZoomSliderWnd( Window* pParent, const ::com::sun::star::uno:: m_xDispatchProvider( rDispatchProvider ), m_xFrame( _xFrame ) { - BOOL bIsHC = GetSettings().GetStyleSettings().GetHighContrastMode(); - mpImpl->maSliderButton = Image( SVX_RES( bIsHC ? RID_SVXBMP_SLIDERBUTTON_HC : RID_SVXBMP_SLIDERBUTTON ) ); - mpImpl->maIncreaseButton = Image( SVX_RES( bIsHC ? RID_SVXBMP_SLIDERINCREASE_HC : RID_SVXBMP_SLIDERINCREASE ) ); - mpImpl->maDecreaseButton = Image( SVX_RES( bIsHC ? RID_SVXBMP_SLIDERDECREASE_HC : RID_SVXBMP_SLIDERDECREASE ) ); + mpImpl->maSliderButton = Image( SVX_RES( RID_SVXBMP_SLIDERBUTTON ) ); + mpImpl->maIncreaseButton = Image( SVX_RES( RID_SVXBMP_SLIDERINCREASE ) ); + mpImpl->maDecreaseButton = Image( SVX_RES( RID_SVXBMP_SLIDERDECREASE ) ); Size aSliderSize = LogicToPixel( Size( aLogicalSize), MapMode( MAP_10TH_MM ) ); SetSizePixel( Size( aSliderSize.Width() * nSliderWidth-1, aSliderSize.Height() + nSliderHeight ) ); } diff --git a/sc/source/ui/dbgui/asciiopt.cxx b/sc/source/ui/dbgui/asciiopt.cxx index f101809552c9..73826a06c9d9 100644 --- a/sc/source/ui/dbgui/asciiopt.cxx +++ b/sc/source/ui/dbgui/asciiopt.cxx @@ -44,8 +44,8 @@ // ============================================================================ -static const sal_Char __FAR_DATA pStrFix[] = "FIX"; -static const sal_Char __FAR_DATA pStrMrg[] = "MRG"; +static const sal_Char pStrFix[] = "FIX"; +static const sal_Char pStrMrg[] = "MRG"; // ============================================================================ diff --git a/sc/source/ui/dbgui/asciiopt.hrc b/sc/source/ui/dbgui/asciiopt.hrc index 7bf6d42d6e2f..6e1c9ae92877 100644 --- a/sc/source/ui/dbgui/asciiopt.hrc +++ b/sc/source/ui/dbgui/asciiopt.hrc @@ -25,7 +25,7 @@ * ************************************************************************/ #include "sc.hrc" -//#define RID_SCDLG_ASCII 256 + #define BTN_OK 1 #define BTN_CANCEL 2 #define BTN_HELP 3 @@ -60,12 +60,3 @@ #define LB_TYPE1 28 #define CTR_TABLEBOX 29 #define STR_TEXTTOCOLUMNS 30 - - - - - - - - - diff --git a/sc/source/ui/dbgui/asciiopt.src b/sc/source/ui/dbgui/asciiopt.src index 9efbfe0f557f..9396b862d2f3 100644 --- a/sc/source/ui/dbgui/asciiopt.src +++ b/sc/source/ui/dbgui/asciiopt.src @@ -258,48 +258,3 @@ ModalDialog RID_SCDLG_ASCII Text [ en-US ] = "Text to Columns" ; }; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/dbgui/consdlg.cxx b/sc/source/ui/dbgui/consdlg.cxx index 7e2bafd2c42b..22dc1827e3f9 100644 --- a/sc/source/ui/dbgui/consdlg.cxx +++ b/sc/source/ui/dbgui/consdlg.cxx @@ -142,7 +142,7 @@ ScConsolidateDlg::ScConsolidateDlg( SfxBindings* pB, SfxChildWindow* pCW, Window //---------------------------------------------------------------------------- -__EXPORT ScConsolidateDlg::~ScConsolidateDlg() +ScConsolidateDlg::~ScConsolidateDlg() { delete [] pAreaData; delete pRangeUtil; @@ -315,7 +315,7 @@ void ScConsolidateDlg::SetReference( const ScRange& rRef, ScDocument* pDocP ) //---------------------------------------------------------------------------- -BOOL __EXPORT ScConsolidateDlg::Close() +BOOL ScConsolidateDlg::Close() { return DoClose( ScConsolidateDlgWrapper::GetChildWindowId() ); } @@ -344,7 +344,7 @@ void ScConsolidateDlg::SetActive() //---------------------------------------------------------------------------- -void __EXPORT ScConsolidateDlg::Deactivate() +void ScConsolidateDlg::Deactivate() { bDlgLostFocus = TRUE; } diff --git a/sc/source/ui/dbgui/consdlg.hrc b/sc/source/ui/dbgui/consdlg.hrc index 6f9f6708c388..0e52b94ce052 100644 --- a/sc/source/ui/dbgui/consdlg.hrc +++ b/sc/source/ui/dbgui/consdlg.hrc @@ -58,4 +58,3 @@ #define FL_OPTIONS 60 #define BTN_REFS 61 - diff --git a/sc/source/ui/dbgui/consdlg.src b/sc/source/ui/dbgui/consdlg.src index 5226c22629c6..9716b190c886 100644 --- a/sc/source/ui/dbgui/consdlg.src +++ b/sc/source/ui/dbgui/consdlg.src @@ -214,4 +214,3 @@ ModelessDialog RID_SCDLG_CONSOLIDATE TabStop = TRUE ; }; }; - diff --git a/sc/source/ui/dbgui/csvgrid.cxx b/sc/source/ui/dbgui/csvgrid.cxx index a18bbb7e2607..eb179a83d3c5 100644 --- a/sc/source/ui/dbgui/csvgrid.cxx +++ b/sc/source/ui/dbgui/csvgrid.cxx @@ -34,8 +34,11 @@ #include "csvgrid.hxx" #include <algorithm> +#include <memory> + #include <svtools/colorcfg.hxx> #include <svl/smplhint.hxx> +#include <sal/macros.h> #include <tools/poly.hxx> #include "scmod.hxx" #include "asciiopt.hxx" @@ -61,14 +64,16 @@ struct Func_SetType { sal_Int32 mnType; inline Func_SetType( sal_Int32 nType ) : mnType( nType ) {} - inline void operator()( ScCsvColState& rState ) { rState.mnType = mnType; } + inline void operator()( ScCsvColState& rState ) const + { rState.mnType = mnType; } }; struct Func_Select { bool mbSelect; inline Func_Select( bool bSelect ) : mbSelect( bSelect ) {} - inline void operator()( ScCsvColState& rState ) { rState.Select( mbSelect ); } + inline void operator()( ScCsvColState& rState ) const + { rState.Select( mbSelect ); } }; @@ -76,7 +81,7 @@ struct Func_Select ScCsvGrid::ScCsvGrid( ScCsvControl& rParent ) : ScCsvControl( rParent ), - mrColorConfig( SC_MOD()->GetColorConfig() ), + mpColorConfig( 0 ), mpEditEngine( new ScEditEngineDefaulter( EditEngine::CreatePool(), TRUE ) ), maHeaderFont( GetFont() ), maColStates( 1 ), @@ -91,17 +96,25 @@ ScCsvGrid::ScCsvGrid( ScCsvControl& rParent ) : maPopup.SetMenuFlags( maPopup.GetMenuFlags() | MENU_FLAG_NOAUTOMNEMONICS ); EnableRTL( false ); // #107812# RTL - InitColors(); InitFonts(); ImplClearSplits(); - mrColorConfig.AddListener(this); } ScCsvGrid::~ScCsvGrid() { - mrColorConfig.RemoveListener(this); + OSL_ENSURE(mpColorConfig, "the object hasn't been initialized properly"); + if (mpColorConfig) + mpColorConfig->RemoveListener(this); } +void +ScCsvGrid::Init() +{ + OSL_PRECOND(!mpColorConfig, "the object has already been initialized"); + mpColorConfig = &SC_MOD()->GetColorConfig(); + InitColors(); + mpColorConfig->AddListener(this); +} // common grid handling ------------------------------------------------------- @@ -200,11 +213,14 @@ sal_Int32 ScCsvGrid::GetNoScrollCol( sal_Int32 nPos ) const void ScCsvGrid::InitColors() { - maBackColor.SetColor( static_cast< sal_uInt32 >( mrColorConfig.GetColorValue( ::svtools::DOCCOLOR ).nColor ) ); - maGridColor.SetColor( static_cast< sal_uInt32 >( mrColorConfig.GetColorValue( ::svtools::CALCGRID ).nColor ) ); - maGridPBColor.SetColor( static_cast< sal_uInt32 >( mrColorConfig.GetColorValue( ::svtools::CALCPAGEBREAK ).nColor ) ); - maAppBackColor.SetColor( static_cast< sal_uInt32 >( mrColorConfig.GetColorValue( ::svtools::APPBACKGROUND ).nColor ) ); - maTextColor.SetColor( static_cast< sal_uInt32 >( mrColorConfig.GetColorValue( ::svtools::FONTCOLOR ).nColor ) ); + OSL_PRECOND(mpColorConfig, "the object hasn't been initialized properly"); + if ( !mpColorConfig ) + return; + maBackColor.SetColor( static_cast< sal_uInt32 >( mpColorConfig->GetColorValue( ::svtools::DOCCOLOR ).nColor ) ); + maGridColor.SetColor( static_cast< sal_uInt32 >( mpColorConfig->GetColorValue( ::svtools::CALCGRID ).nColor ) ); + maGridPBColor.SetColor( static_cast< sal_uInt32 >( mpColorConfig->GetColorValue( ::svtools::CALCPAGEBREAK ).nColor ) ); + maAppBackColor.SetColor( static_cast< sal_uInt32 >( mpColorConfig->GetColorValue( ::svtools::APPBACKGROUND ).nColor ) ); + maTextColor.SetColor( static_cast< sal_uInt32 >( mpColorConfig->GetColorValue( ::svtools::FONTCOLOR ).nColor ) ); const StyleSettings& rSett = GetSettings().GetStyleSettings(); maHeaderBackColor = rSett.GetFaceColor(); @@ -508,7 +524,7 @@ sal_uInt8 lcl_GetExtColumnType( sal_Int32 nIntType ) { static sal_uInt8 pExtTypes[] = { SC_COL_STANDARD, SC_COL_TEXT, SC_COL_DMY, SC_COL_MDY, SC_COL_YMD, SC_COL_ENGLISH, SC_COL_SKIP }; - static sal_Int32 nExtTypeCount = sizeof( pExtTypes ) / sizeof( *pExtTypes ); + static sal_Int32 nExtTypeCount = SAL_N_ELEMENTS(pExtTypes); return pExtTypes[ ((0 <= nIntType) && (nIntType < nExtTypeCount)) ? nIntType : 0 ]; } @@ -1348,7 +1364,9 @@ void ScCsvGrid::ImplDrawTrackingRect( sal_uInt32 nColIndex ) ScAccessibleCsvControl* ScCsvGrid::ImplCreateAccessible() { - return new ScAccessibleCsvGrid( *this ); + std::auto_ptr<ScAccessibleCsvControl> pControl(new ScAccessibleCsvGrid( *this )); + pControl->Init(); + return pControl.release(); } diff --git a/sc/source/ui/dbgui/csvruler.cxx b/sc/source/ui/dbgui/csvruler.cxx index 84d5ad6bee1b..2dd2ebc21faf 100644 --- a/sc/source/ui/dbgui/csvruler.cxx +++ b/sc/source/ui/dbgui/csvruler.cxx @@ -61,9 +61,9 @@ static void load_FixedWidthList(ScCsvSplits &aSplits) const Any *pProperties; Sequence<OUString> aNames(1); OUString* pNames = aNames.getArray(); - ScLinkConfigItem aItem( OUString::createFromAscii( SEP_PATH ) ); + ScLinkConfigItem aItem( OUString(RTL_CONSTASCII_USTRINGPARAM( SEP_PATH )) ); - pNames[0] = OUString::createFromAscii( FIXED_WIDTH_LIST ); + pNames[0] = OUString(RTL_CONSTASCII_USTRINGPARAM( FIXED_WIDTH_LIST )); aValues = aItem.GetProperties( aNames ); pProperties = aValues.getConstArray(); @@ -96,9 +96,9 @@ static void save_FixedWidthList(ScCsvSplits aSplits) Any *pProperties; Sequence<OUString> aNames(1); OUString* pNames = aNames.getArray(); - ScLinkConfigItem aItem( OUString::createFromAscii( SEP_PATH ) ); + ScLinkConfigItem aItem( OUString(RTL_CONSTASCII_USTRINGPARAM( SEP_PATH )) ); - pNames[0] = OUString::createFromAscii( FIXED_WIDTH_LIST ); + pNames[0] = OUString(RTL_CONSTASCII_USTRINGPARAM( FIXED_WIDTH_LIST )); aValues = aItem.GetProperties( aNames ); pProperties = aValues.getArray(); pProperties[0] <<= sFixedWidthLists; diff --git a/sc/source/ui/dbgui/csvtablebox.cxx b/sc/source/ui/dbgui/csvtablebox.cxx index e7d3071da1f3..0dcbacc4746e 100644 --- a/sc/source/ui/dbgui/csvtablebox.cxx +++ b/sc/source/ui/dbgui/csvtablebox.cxx @@ -48,7 +48,27 @@ ScCsvTableBox::ScCsvTableBox( Window* pParent, const ResId& rResId ) : maVScroll( this, WB_VERT | WB_DRAG ), maScrollBox( this ) { - Init(); + mbFixedMode = false; + mnFixedWidth = 1; + + maHScroll.EnableRTL( false ); // #107812# RTL + maHScroll.SetLineSize( 1 ); + maVScroll.SetLineSize( 1 ); + + Link aLink = LINK( this, ScCsvTableBox, CsvCmdHdl ); + SetCmdHdl( aLink ); + maRuler.SetCmdHdl( aLink ); + maGrid.SetCmdHdl( aLink ); + + aLink = LINK( this, ScCsvTableBox, ScrollHdl ); + maHScroll.SetScrollHdl( aLink ); + maVScroll.SetScrollHdl( aLink ); + + aLink = LINK( this, ScCsvTableBox, ScrollEndHdl ); + maHScroll.SetEndScrollHdl( aLink ); + maVScroll.SetEndScrollHdl( aLink ); + + InitControls(); } @@ -95,27 +115,7 @@ void ScCsvTableBox::SetFixedWidthMode() void ScCsvTableBox::Init() { - mbFixedMode = false; - mnFixedWidth = 1; - - maHScroll.EnableRTL( false ); // #107812# RTL - maHScroll.SetLineSize( 1 ); - maVScroll.SetLineSize( 1 ); - - Link aLink = LINK( this, ScCsvTableBox, CsvCmdHdl ); - SetCmdHdl( aLink ); - maRuler.SetCmdHdl( aLink ); - maGrid.SetCmdHdl( aLink ); - - aLink = LINK( this, ScCsvTableBox, ScrollHdl ); - maHScroll.SetScrollHdl( aLink ); - maVScroll.SetScrollHdl( aLink ); - - aLink = LINK( this, ScCsvTableBox, ScrollEndHdl ); - maHScroll.SetEndScrollHdl( aLink ); - maVScroll.SetEndScrollHdl( aLink ); - - InitControls(); + maGrid.Init(); } void ScCsvTableBox::InitControls() diff --git a/sc/source/ui/dbgui/dapidata.cxx b/sc/source/ui/dbgui/dapidata.cxx index ab2159af2f93..1be379894444 100644 --- a/sc/source/ui/dbgui/dapidata.cxx +++ b/sc/source/ui/dbgui/dapidata.cxx @@ -91,7 +91,7 @@ ScDataPilotDatabaseDlg::ScDataPilotDatabaseDlg( Window* pParent ) : uno::Reference<container::XNameAccess> xContext( comphelper::getProcessServiceFactory()->createInstance( - rtl::OUString::createFromAscii( DP_SERVICE_DBCONTEXT ) ), + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( DP_SERVICE_DBCONTEXT )) ), uno::UNO_QUERY); if (xContext.is()) { @@ -166,7 +166,7 @@ void ScDataPilotDatabaseDlg::FillObjects() uno::Reference<container::XNameAccess> xContext( comphelper::getProcessServiceFactory()->createInstance( - rtl::OUString::createFromAscii( DP_SERVICE_DBCONTEXT ) ), + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( DP_SERVICE_DBCONTEXT )) ), uno::UNO_QUERY); if ( !xContext.is() ) return; @@ -177,7 +177,7 @@ void ScDataPilotDatabaseDlg::FillObjects() uno::Reference<task::XInteractionHandler> xHandler( comphelper::getProcessServiceFactory()->createInstance( - rtl::OUString::createFromAscii( SC_SERVICE_INTHANDLER ) ), + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_SERVICE_INTHANDLER )) ), uno::UNO_QUERY); uno::Reference<sdbc::XConnection> xConnection = xSource->connectWithCompletion( xHandler ); diff --git a/sc/source/ui/dbgui/dapitype.hrc b/sc/source/ui/dbgui/dapitype.hrc index efbabe64fa04..6358763d7fd1 100644 --- a/sc/source/ui/dbgui/dapitype.hrc +++ b/sc/source/ui/dbgui/dapitype.hrc @@ -50,4 +50,3 @@ #define CB_OBJECT 21 #define FT_OBJTYPE 22 #define LB_OBJTYPE 23 - diff --git a/sc/source/ui/dbgui/dapitype.src b/sc/source/ui/dbgui/dapitype.src index 5cf1dacad819..3c03150e400b 100644 --- a/sc/source/ui/dbgui/dapitype.src +++ b/sc/source/ui/dbgui/dapitype.src @@ -285,24 +285,3 @@ ModalDialog RID_SCDLG_DAPIDATA }; Text [ en-US ] = "Select Data Source"; }; - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/dbgui/dbnamdlg.cxx b/sc/source/ui/dbgui/dbnamdlg.cxx index 1782e4245b1d..69672f9802d3 100644 --- a/sc/source/ui/dbgui/dbnamdlg.cxx +++ b/sc/source/ui/dbgui/dbnamdlg.cxx @@ -191,7 +191,7 @@ ScDbNameDlg::ScDbNameDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent, //---------------------------------------------------------------------------- -__EXPORT ScDbNameDlg::~ScDbNameDlg() +ScDbNameDlg::~ScDbNameDlg() { DELETEZ( pSaveObj ); @@ -219,14 +219,6 @@ void ScDbNameDlg::Init() aBtnMore.AddWindow( &aFTSource ); aBtnMore.AddWindow( &aFTOperations ); - String theAreaStr; - SCCOL nStartCol = 0; - SCROW nStartRow = 0; - SCTAB nStartTab = 0; - SCCOL nEndCol = 0; - SCROW nEndRow = 0; - SCTAB nEndTab = 0; - aBtnOk.SetClickHdl ( LINK( this, ScDbNameDlg, OkBtnHdl ) ); aBtnCancel.SetClickHdl ( LINK( this, ScDbNameDlg, CancelBtnHdl ) ); aBtnAdd.SetClickHdl ( LINK( this, ScDbNameDlg, AddBtnHdl ) ); @@ -235,8 +227,17 @@ void ScDbNameDlg::Init() aEdAssign.SetModifyHdl ( LINK( this, ScDbNameDlg, AssModifyHdl ) ); UpdateNames(); + String theAreaStr; + if ( pViewData && pDoc ) { + SCCOL nStartCol = 0; + SCROW nStartRow = 0; + SCTAB nStartTab = 0; + SCCOL nEndCol = 0; + SCROW nEndRow = 0; + SCTAB nEndTab = 0; + ScDBCollection* pDBColl = pDoc->GetDBCollection(); ScDBData* pDBData = NULL; @@ -342,7 +343,7 @@ void ScDbNameDlg::SetReference( const ScRange& rRef, ScDocument* pDocP ) //---------------------------------------------------------------------------- -BOOL __EXPORT ScDbNameDlg::Close() +BOOL ScDbNameDlg::Close() { return DoClose( ScDbNameDlgWrapper::GetChildWindowId() ); } diff --git a/sc/source/ui/dbgui/dpgroupdlg.hrc b/sc/source/ui/dbgui/dpgroupdlg.hrc index 5a4797489ddf..27adea32c4e1 100644 --- a/sc/source/ui/dbgui/dpgroupdlg.hrc +++ b/sc/source/ui/dbgui/dpgroupdlg.hrc @@ -61,4 +61,3 @@ #define STR_UNITS 1 #endif - diff --git a/sc/source/ui/dbgui/dpgroupdlg.src b/sc/source/ui/dbgui/dpgroupdlg.src index f9a5ac589af5..6e6ba170f1b1 100644 --- a/sc/source/ui/dbgui/dpgroupdlg.src +++ b/sc/source/ui/dbgui/dpgroupdlg.src @@ -267,4 +267,3 @@ ModalDialog RID_SCDLG_DPDATEGROUP } ; // ---------------------------------------------------------------------------- - diff --git a/sc/source/ui/dbgui/dpuiglobal.hxx b/sc/source/ui/dbgui/dpuiglobal.hxx new file mode 100644 index 000000000000..b64875030bcf --- /dev/null +++ b/sc/source/ui/dbgui/dpuiglobal.hxx @@ -0,0 +1,43 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Initial Developer of the Original Code is + * Kohei Yoshida <kyoshida@novell.com> + * Portions created by the Initial Developer are Copyright (C) 2010 the + * Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ + +#ifndef __SC_DPUIGLOBAL_HXX__ +#define __SC_DPUIGLOBAL_HXX__ + +#define OUTER_MARGIN_HOR 4 +#define OUTER_MARGIN_VER 4 +#define DATA_FIELD_BTN_GAP 2 // must be an even number +#define ROW_FIELD_BTN_GAP 2 // must be an even number +#define FIELD_BTN_WIDTH 81 +#define FIELD_BTN_HEIGHT 23 +#define SELECT_FIELD_BTN_SPACE 2 +#define FIELD_AREA_GAP 3 // gap between row/column/data/page areas + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/dbgui/expftext.cxx b/sc/source/ui/dbgui/expftext.cxx index b05d9c193638..605cd6756b48 100644 --- a/sc/source/ui/dbgui/expftext.cxx +++ b/sc/source/ui/dbgui/expftext.cxx @@ -35,7 +35,7 @@ #include <vcl/help.hxx> /************************************************************************* -#* Member: ScExpandedFixedText Datum:18.09.97 +#* Member: ScExpandedFixedText #*------------------------------------------------------------------------ #* #* Klasse: MD_Test @@ -56,7 +56,7 @@ ScExpandedFixedText::ScExpandedFixedText( Window* pParent, } /************************************************************************* -#* Member: RequestHelp Datum:18.09.97 +#* Member: RequestHelp #*------------------------------------------------------------------------ #* #* Klasse: ScExpandedFixedText diff --git a/sc/source/ui/dbgui/fieldwnd.cxx b/sc/source/ui/dbgui/fieldwnd.cxx index 8c181959f049..f612250a89a3 100644 --- a/sc/source/ui/dbgui/fieldwnd.cxx +++ b/sc/source/ui/dbgui/fieldwnd.cxx @@ -38,65 +38,42 @@ #include "fieldwnd.hxx" #include "pvlaydlg.hxx" -#include "pvglob.hxx" +#include "dpuiglobal.hxx" #include "AccessibleDataPilotControl.hxx" #include "scresid.hxx" -#include "sc.hrc" +#include "pivot.hrc" -const size_t INVALID_INDEX = static_cast< size_t >( -1 ); +using ::rtl::OUString; +using ::std::vector; +using ::com::sun::star::uno::Reference; +using ::com::sun::star::uno::WeakReference; +using ::com::sun::star::accessibility::XAccessible; -//=================================================================== +const size_t INVALID_INDEX = static_cast<size_t>(-1); -ScDPFieldWindow::ScDPFieldWindow( - ScDPLayoutDlg* pDialog, - const ResId& rResId, - ScDPFieldType eFieldType, - FixedText* pFtFieldCaption ) : - Control( pDialog, rResId ), - pDlg( pDialog ), - pFtCaption( pFtFieldCaption ), - eType( eFieldType ), - nFieldSelected( 0 ), - pAccessible( NULL ) +ScDPFieldControlBase::ScrollBar::ScrollBar(Window* pParent, WinBits nStyle) : + ::ScrollBar(pParent, nStyle), + mpParent(pParent) { - Init(); - if (eType != TYPE_SELECT && pFtCaption) - aName = MnemonicGenerator::EraseAllMnemonicChars( pFtCaption->GetText() ); } -ScDPFieldWindow::ScDPFieldWindow( - ScDPLayoutDlg* pDialog, - const ResId& rResId, - ScDPFieldType eFieldType, - const String& rName ) : - Control( pDialog, rResId ), - aName(rName), - pDlg( pDialog ), - pFtCaption( NULL ), - eType( eFieldType ), - nFieldSelected( 0 ), - pAccessible( NULL ) +void ScDPFieldControlBase::ScrollBar::Command( const CommandEvent& rCEvt ) { - Init(); + mpParent->Command(rCEvt); } -void ScDPFieldWindow::Init() +ScDPFieldControlBase::ScDPFieldControlBase( ScDPLayoutDlg* pParent, const ResId& rResId, FixedText* pCaption ) : + Control(pParent, rResId), + mpDlg(pParent), + mpCaption(pCaption), + mnFieldSelected(0), + pAccessible(NULL) { - aWndRect = Rectangle( GetPosPixel(), GetSizePixel() ); - nFieldSize = (eType == TYPE_SELECT) ? PAGE_SIZE : ((eType == TYPE_PAGE) ? MAX_PAGEFIELDS : MAX_FIELDS); - - if( pFtCaption ) - { - Size aWinSize( aWndRect.GetSize() ); - Size aTextSize( GetTextWidth( pFtCaption->GetText() ), GetTextHeight() ); - aTextPos.X() = (aWinSize.Width() - aTextSize.Width()) / 2; - aTextPos.Y() = (aWinSize.Height() - aTextSize.Height()) / 2; - } - - GetStyleSettings(); + if (pCaption) + maName = MnemonicGenerator::EraseAllMnemonicChars( pCaption->GetText() ); } -__EXPORT ScDPFieldWindow::~ScDPFieldWindow() +ScDPFieldControlBase::~ScDPFieldControlBase() { if (pAccessible) { @@ -106,134 +83,447 @@ __EXPORT ScDPFieldWindow::~ScDPFieldWindow() } } -//------------------------------------------------------------------- +void ScDPFieldControlBase::UseMnemonic() +{ + // Now the FixedText has its mnemonic char. Grab the text and hide the + // FixedText to be able to handle tabstop and mnemonics separately. + if (mpCaption) + { + SetText(mpCaption->GetText()); + mpCaption->Hide(); + } -void ScDPFieldWindow::GetStyleSettings() + // after reading the mnemonics, tab stop style bits can be updated + UpdateStyle(); +} + +OUString ScDPFieldControlBase::GetName() const { - const StyleSettings& rStyleSet = GetSettings().GetStyleSettings(); - aFaceColor = rStyleSet.GetFaceColor(); - aWinColor = rStyleSet.GetWindowColor(); - aTextColor = rStyleSet.GetButtonTextColor(); - aWinTextColor = rStyleSet.GetWindowTextColor(); + return maName; } -//------------------------------------------------------------------- +void ScDPFieldControlBase::SetName(const OUString& rName) +{ + maName = rName; +} -Point ScDPFieldWindow::GetFieldPosition( size_t nIndex ) const +bool ScDPFieldControlBase::IsExistingIndex( size_t nIndex ) const { - Point aPos; - switch( eType ) - { - case TYPE_PAGE: - aPos.X() = OWIDTH * (nIndex % (MAX_PAGEFIELDS / 2)); - aPos.Y() = OHEIGHT * (nIndex / (MAX_PAGEFIELDS / 2)); - break; - case TYPE_COL: - aPos.X() = OWIDTH * (nIndex % (MAX_FIELDS / 2)); - aPos.Y() = OHEIGHT * (nIndex / (MAX_FIELDS / 2)); - break; - case TYPE_ROW: - case TYPE_DATA: - aPos.X() = 0; - aPos.Y() = OHEIGHT * nIndex; - break; - case TYPE_SELECT: - aPos.X() = (OWIDTH + SSPACE) * (nIndex / LINE_SIZE); - aPos.Y() = (OHEIGHT + SSPACE) * (nIndex % LINE_SIZE); - break; + return nIndex < maFieldNames.size(); +} + +void ScDPFieldControlBase::AddField( const String& rText, size_t nNewIndex ) +{ + DBG_ASSERT( nNewIndex == maFieldNames.size(), "ScDPFieldWindow::AddField - invalid index" ); + if( IsValidIndex( nNewIndex ) ) + { + maFieldNames.push_back( FieldName( rText, true ) ); + if (pAccessible) + { + com::sun::star::uno::Reference < com::sun::star::accessibility::XAccessible > xTempAcc = xAccessible; + if (xTempAcc.is()) + pAccessible->AddField(nNewIndex); + else + pAccessible = NULL; + } } - return aPos; } -Size ScDPFieldWindow::GetFieldSize() const +bool ScDPFieldControlBase::AddField( const String& rText, const Point& rPos, size_t& rnIndex ) { - return Size( (eType == TYPE_DATA) ? GetSizePixel().Width() : OWIDTH, OHEIGHT ); + size_t nNewIndex = 0; + if( GetFieldIndex( rPos, nNewIndex ) ) + { + if( nNewIndex > maFieldNames.size() ) + nNewIndex = maFieldNames.size(); + + maFieldNames.insert( maFieldNames.begin() + nNewIndex, FieldName( rText, true ) ); + mnFieldSelected = nNewIndex; + ResetScrollBar(); + Redraw(); + rnIndex = nNewIndex; + + if (pAccessible) + { + com::sun::star::uno::Reference < com::sun::star::accessibility::XAccessible > xTempAcc = xAccessible; + if (xTempAcc.is()) + pAccessible->AddField(nNewIndex); + else + pAccessible = NULL; + } + + return true; + } + + return false; } -Point ScDPFieldWindow::GetLastPosition() const +bool ScDPFieldControlBase::AppendField(const String& rText, size_t& rnIndex) { - return OutputToScreenPixel( GetFieldPosition( nFieldSize - 1 ) ); + if (!IsValidIndex(maFieldNames.size())) + return false; + + maFieldNames.push_back(FieldName(rText, true)); + mnFieldSelected = maFieldNames.size() - 1; + ResetScrollBar(); + Redraw(); + + rnIndex = mnFieldSelected; + return true; } -bool ScDPFieldWindow::GetFieldIndex( const Point& rPos, size_t& rnIndex ) const +void ScDPFieldControlBase::DelField( size_t nDelIndex ) { - rnIndex = INVALID_INDEX; - if( (rPos.X() >= 0) && (rPos.Y() >= 0) ) + if ( IsExistingIndex(nDelIndex) ) { - switch( eType ) + if (pAccessible) // before decrement fieldcount { - case TYPE_ROW: - case TYPE_DATA: - rnIndex = rPos.Y() / OHEIGHT; - break; - case TYPE_PAGE: - { - size_t nRow = rPos.Y() / OHEIGHT; - size_t nCol = rPos.X() / OWIDTH; - rnIndex = nRow * MAX_PAGEFIELDS / 2 + nCol; - } - break; - case TYPE_COL: - { - size_t nRow = rPos.Y() / OHEIGHT; - size_t nCol = rPos.X() / OWIDTH; - rnIndex = nRow * MAX_FIELDS / 2 + nCol; - } - break; - case TYPE_SELECT: + com::sun::star::uno::Reference < com::sun::star::accessibility::XAccessible > xTempAcc = xAccessible; + if (xTempAcc.is()) + pAccessible->RemoveField(nDelIndex); + else + pAccessible = NULL; + } + maFieldNames.erase( maFieldNames.begin() + nDelIndex ); + if (mnFieldSelected >= maFieldNames.size()) + mnFieldSelected = maFieldNames.size() - 1; + + ResetScrollBar(); + Redraw(); + } +} + +size_t ScDPFieldControlBase::GetFieldCount() const +{ + return maFieldNames.size(); +} + +bool ScDPFieldControlBase::IsEmpty() const +{ + return maFieldNames.empty(); +} + +void ScDPFieldControlBase::ClearFields() +{ + com::sun::star::uno::Reference < com::sun::star::accessibility::XAccessible > xTempAcc = xAccessible; + if (!xTempAcc.is() && pAccessible) + pAccessible = NULL; + if (pAccessible) + for( size_t nIdx = maFieldNames.size(); nIdx > 0; --nIdx ) + pAccessible->RemoveField( nIdx - 1 ); + + maFieldNames.clear(); +} + +void ScDPFieldControlBase::SetFieldText( const String& rText, size_t nIndex ) +{ + if( IsExistingIndex( nIndex ) ) + { + maFieldNames[ nIndex ] = FieldName( rText, true ); + Redraw(); + + if (pAccessible) + { + com::sun::star::uno::Reference < com::sun::star::accessibility::XAccessible > xTempAcc = xAccessible; + if (xTempAcc.is()) + pAccessible->FieldNameChange(nIndex); + else + pAccessible = NULL; + } + } +} + +const String& ScDPFieldControlBase::GetFieldText( size_t nIndex ) const +{ + if( IsExistingIndex( nIndex ) ) + return maFieldNames[ nIndex ].first; + return EMPTY_STRING; +} + +void ScDPFieldControlBase::GetExistingIndex( const Point& rPos, size_t& rnIndex ) +{ + if( !maFieldNames.empty() && (GetFieldType() != TYPE_SELECT) && GetFieldIndex( rPos, rnIndex ) ) + { + if( rnIndex >= maFieldNames.size() ) + rnIndex = maFieldNames.size() - 1; + } + else + rnIndex = 0; +} + +size_t ScDPFieldControlBase::GetSelectedField() const +{ + return mnFieldSelected; +} + +void ScDPFieldControlBase::SetSelectedField(size_t nSelected) +{ + mnFieldSelected = nSelected; +} + +vector<ScDPFieldControlBase::FieldName>& ScDPFieldControlBase::GetFieldNames() +{ + return maFieldNames; +} + +const vector<ScDPFieldControlBase::FieldName>& ScDPFieldControlBase::GetFieldNames() const +{ + return maFieldNames; +} + +void ScDPFieldControlBase::Paint( const Rectangle& /* rRect */ ) +{ + // #124828# hiding the caption is now done from StateChanged + Redraw(); +} + +void ScDPFieldControlBase::DataChanged( const DataChangedEvent& rDCEvt ) +{ + if( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) ) + { + Redraw(); + } + Control::DataChanged( rDCEvt ); +} + +void ScDPFieldControlBase::Command( const CommandEvent& rCEvt ) +{ + if (rCEvt.GetCommand() == COMMAND_WHEEL) + { + const CommandWheelData* pData = rCEvt.GetWheelData(); + if (pData->GetMode() == COMMAND_WHEEL_SCROLL && !pData->IsHorz()) + { + // Handle vertical mouse wheel scrolls. + long nNotch = pData->GetNotchDelta(); // positive => up; negative => down + HandleWheelScroll(nNotch); + } + } +} + +void ScDPFieldControlBase::MouseButtonDown( const MouseEvent& rMEvt ) +{ + if( rMEvt.IsLeft() ) + { + size_t nIndex = 0; + if( GetFieldIndex( rMEvt.GetPosPixel(), nIndex ) && IsExistingIndex( nIndex ) ) + { + GrabFocusWithSel( nIndex ); + + if( rMEvt.GetClicks() == 1 ) { - size_t nRow = rPos.Y() / (OHEIGHT + SSPACE); - size_t nCol = rPos.X() / (OWIDTH + SSPACE); - // is not between controls? - if( (rPos.Y() % (OHEIGHT + SSPACE) < OHEIGHT) && (rPos.X() % (OWIDTH + SSPACE) < OWIDTH) ) - rnIndex = nCol * LINE_SIZE + nRow; + PointerStyle ePtr = mpDlg->NotifyMouseButtonDown( GetFieldType(), nIndex ); + CaptureMouse(); + SetPointer( Pointer( ePtr ) ); } + else + mpDlg->NotifyDoubleClick( GetFieldType(), nIndex ); + } + } +} + +void ScDPFieldControlBase::MouseButtonUp( const MouseEvent& rMEvt ) +{ + if( rMEvt.IsLeft() ) + { + if( rMEvt.GetClicks() == 1 ) + { + mpDlg->NotifyMouseButtonUp( OutputToScreenPixel( rMEvt.GetPosPixel() ) ); + SetPointer( Pointer( POINTER_ARROW ) ); + } + + if( IsMouseCaptured() ) + ReleaseMouse(); + } +} + +void ScDPFieldControlBase::MouseMove( const MouseEvent& rMEvt ) +{ + if( IsMouseCaptured() ) + { + PointerStyle ePtr = mpDlg->NotifyMouseMove( OutputToScreenPixel( rMEvt.GetPosPixel() ) ); + SetPointer( Pointer( ePtr ) ); + } + size_t nIndex = 0; + if( GetFieldIndex( rMEvt.GetPosPixel(), nIndex ) && IsShortenedText( nIndex ) ) + { + Point aPos = OutputToScreenPixel( rMEvt.GetPosPixel() ); + Rectangle aRect( aPos, GetSizePixel() ); + String aHelpText = GetFieldText(nIndex); + Help::ShowQuickHelp( this, aRect, aHelpText ); + } +} + +void ScDPFieldControlBase::KeyInput( const KeyEvent& rKEvt ) +{ + const KeyCode& rKeyCode = rKEvt.GetKeyCode(); + USHORT nCode = rKeyCode.GetCode(); + bool bKeyEvaluated = false; + + const FieldNames& rFields = GetFieldNames(); + if( rKeyCode.IsMod1() && (GetFieldType() != TYPE_SELECT) ) + { + bKeyEvaluated = true; + switch( nCode ) + { + case KEY_UP: MoveFieldRel( 0, -1 ); break; + case KEY_DOWN: MoveFieldRel( 0, 1 ); break; + case KEY_LEFT: MoveFieldRel( -1, 0 ); break; + case KEY_RIGHT: MoveFieldRel( 1, 0 ); break; + case KEY_HOME: MoveField( 0 ); break; + case KEY_END: MoveField( rFields.size() - 1 ); break; + default: bKeyEvaluated = false; + } + } + else + { + bKeyEvaluated = true; + switch( nCode ) + { + case KEY_UP: MoveSelection( 0, -1 ); break; + case KEY_DOWN: MoveSelection( 0, 1 ); break; + case KEY_LEFT: MoveSelection( -1, 0 ); break; + case KEY_RIGHT: MoveSelection( 1, 0 ); break; + case KEY_HOME: SetSelectionHome(); break; + case KEY_END: SetSelectionEnd(); break; + case KEY_DELETE: + mpDlg->NotifyRemoveField( GetFieldType(), mnFieldSelected ); break; + default: + bKeyEvaluated = false; } } - return IsValidIndex( rnIndex ); + + if (bKeyEvaluated) + { + ScrollToShowSelection(); + Redraw(); + } + else + Control::KeyInput( rKEvt ); } -//------------------------------------------------------------------- +void ScDPFieldControlBase::GetFocus() +{ + Control::GetFocus(); + Redraw(); + if( GetGetFocusFlags() & GETFOCUS_MNEMONIC ) // move field on shortcut + { + size_t nOldCount = GetFieldCount(); + mpDlg->NotifyMoveFieldToEnd( GetFieldType() ); + if (GetFieldCount() > nOldCount) + // Scroll to the end only when a new field is inserted. + ScrollToEnd(); + } + else // else change focus + mpDlg->NotifyFieldFocus( GetFieldType(), TRUE ); -void ScDPFieldWindow::DrawBackground( OutputDevice& rDev ) + AccessibleSetFocus(true); +} + +void ScDPFieldControlBase::LoseFocus() { - Point aPos0; - Size aSize( GetSizePixel() ); + Control::LoseFocus(); + Redraw(); + mpDlg->NotifyFieldFocus( GetFieldType(), FALSE ); + + AccessibleSetFocus(false); +} + +Reference<XAccessible> ScDPFieldControlBase::CreateAccessible() +{ + pAccessible = + new ScAccessibleDataPilotControl(GetAccessibleParentWindow()->GetAccessible(), this); - if ( eType == TYPE_SELECT ) + com::sun::star::uno::Reference < ::com::sun::star::accessibility::XAccessible > xReturn = pAccessible; + + pAccessible->Init(); + xAccessible = xReturn; + + return xReturn; +} + +void ScDPFieldControlBase::FieldFocusChanged(size_t nOldSelected, size_t nFieldSelected) +{ + if (!pAccessible) + return; + + com::sun::star::uno::Reference < com::sun::star::accessibility::XAccessible > xTempAcc = xAccessible; + if (xTempAcc.is()) + pAccessible->FieldFocusChange(nOldSelected, nFieldSelected); + else + pAccessible = NULL; +} + +void ScDPFieldControlBase::AccessibleSetFocus(bool bOn) +{ + if (!pAccessible) + return; + + com::sun::star::uno::Reference < com::sun::star::accessibility::XAccessible > xTempAcc = xAccessible; + if (!xTempAcc.is()) { - rDev.SetLineColor(); - rDev.SetFillColor( aFaceColor ); - rDev.DrawRect( Rectangle( aPos0, aSize ) ); + pAccessible = NULL; + return; } + + if (bOn) + pAccessible->GotFocus(); else + pAccessible->LostFocus(); +} + +void ScDPFieldControlBase::UpdateStyle() +{ + WinBits nMask = ~(WB_TABSTOP | WB_NOTABSTOP); + SetStyle( (GetStyle() & nMask) | (IsEmpty() ? WB_NOTABSTOP : WB_TABSTOP) ); +} + +void ScDPFieldControlBase::DrawBackground( OutputDevice& rDev ) +{ + const StyleSettings& rStyleSet = GetSettings().GetStyleSettings(); + Color aFaceColor = rStyleSet.GetFaceColor(); + Color aWinColor = rStyleSet.GetWindowColor(); + Color aTextColor = rStyleSet.GetButtonTextColor(); + Color aWinTextColor = rStyleSet.GetWindowTextColor(); + + Point aPos0; + Size aSize( GetSizePixel() ); + + if (mpCaption) { rDev.SetLineColor( aWinTextColor ); rDev.SetFillColor( aWinColor ); - rDev.DrawRect( Rectangle( aPos0, aSize ) ); + } + else + { + rDev.SetLineColor( aFaceColor ); + rDev.SetFillColor( aFaceColor ); + } + rDev.DrawRect( Rectangle( aPos0, aSize ) ); - rDev.SetTextColor( aWinTextColor ); + rDev.SetTextColor( aWinTextColor ); - /* Draw the caption text. This needs some special handling, because we - support hard line breaks here. This part will draw each line of the - text for itself. */ + /* Draw the caption text. This needs some special handling, because we + support hard line breaks here. This part will draw each line of the + text for itself. */ - xub_StrLen nTokenCnt = GetText().GetTokenCount( '\n' ); - long nY = (aSize.Height() - nTokenCnt * rDev.GetTextHeight()) / 2; - for( xub_StrLen nToken = 0, nStringIx = 0; nToken < nTokenCnt; ++nToken ) - { - String aLine( GetText().GetToken( 0, '\n', nStringIx ) ); - Point aLinePos( (aSize.Width() - rDev.GetCtrlTextWidth( aLine )) / 2, nY ); - rDev.DrawCtrlText( aLinePos, aLine ); - nY += rDev.GetTextHeight(); - } + xub_StrLen nTokenCnt = GetText().GetTokenCount('\n'); + long nY = (aSize.Height() - nTokenCnt * rDev.GetTextHeight()) / 2; + for( xub_StrLen nToken = 0, nStringIx = 0; nToken < nTokenCnt; ++nToken ) + { + String aLine( GetText().GetToken( 0, '\n', nStringIx ) ); + Point aLinePos( (aSize.Width() - rDev.GetCtrlTextWidth( aLine )) / 2, nY ); + rDev.DrawCtrlText( aLinePos, aLine ); + nY += rDev.GetTextHeight(); } } -void ScDPFieldWindow::DrawField( - OutputDevice& rDev, const Rectangle& rRect, FieldString& rText, bool bFocus ) +void ScDPFieldControlBase::DrawField( + OutputDevice& rDev, const Rectangle& rRect, FieldName& rText, bool bFocus ) { + const StyleSettings& rStyleSet = GetSettings().GetStyleSettings(); + Color aTextColor = rStyleSet.GetButtonTextColor(); + VirtualDevice aVirDev( rDev ); // #i97623# VirtualDevice is always LTR while other windows derive direction from parent aVirDev.EnableRTL( IsRTLEnabled() ); @@ -273,506 +563,730 @@ void ScDPFieldWindow::DrawField( rDev.DrawBitmap( rRect.TopLeft(), aVirDev.GetBitmap( Point( 0, 0 ), aDevSize ) ); } -void ScDPFieldWindow::Redraw() +ScDPLayoutDlg* ScDPFieldControlBase::GetParentDlg() const { - VirtualDevice aVirDev; - // #i97623# VirtualDevice is always LTR while other windows derive direction from parent - aVirDev.EnableRTL( IsRTLEnabled() ); - aVirDev.SetMapMode( MAP_PIXEL ); - - Point aPos0; - Size aSize( GetSizePixel() ); - Font aFont( GetFont() ); // Font vom Window - aFont.SetTransparent( TRUE ); - aVirDev.SetFont( aFont ); - aVirDev.SetOutputSizePixel( aSize ); + return mpDlg; +} - DrawBackground( aVirDev ); +void ScDPFieldControlBase::AppendPaintable(Window* p) +{ + maPaintables.push_back(p); +} - if( !aFieldArr.empty() && (nFieldSelected >= aFieldArr.size()) ) - nFieldSelected = aFieldArr.size() - 1; - Rectangle aFieldRect( aPos0, GetFieldSize() ); - for( size_t nIx = 0; nIx < aFieldArr.size(); ++nIx ) +void ScDPFieldControlBase::DrawPaintables() +{ + Rectangle aRect(GetPosPixel(), GetSizePixel()); + Paintables::iterator itr = maPaintables.begin(), itrEnd = maPaintables.end(); + for (; itr != itrEnd; ++itr) { - aFieldRect.SetPos( GetFieldPosition( nIx ) ); - bool bFocus = HasFocus() && (nIx == nFieldSelected); - DrawField( aVirDev, aFieldRect, aFieldArr[ nIx ], bFocus ); - } - DrawBitmap( aPos0, aVirDev.GetBitmap( aPos0, aSize ) ); + Window* p = *itr; + if (!p->IsVisible()) + continue; - if( HasFocus() && (nFieldSelected < aFieldArr.size()) ) - { - long nFieldWidth = aFieldRect.GetWidth(); - long nSelectionWidth = Min( GetTextWidth( aFieldArr[ nFieldSelected ].first ) + 4, nFieldWidth - 6 ); - Rectangle aSelection( - GetFieldPosition( nFieldSelected ) + Point( (nFieldWidth - nSelectionWidth) / 2, 3 ), - Size( nSelectionWidth, aFieldRect.GetHeight() - 6 ) ); - InvertTracking( aSelection, SHOWTRACK_SMALL | SHOWTRACK_WINDOW ); + p->Paint(aRect); } - - UpdateStyle(); } -void ScDPFieldWindow::UpdateStyle() +void ScDPFieldControlBase::DrawInvertSelection() { - WinBits nMask = ~(WB_TABSTOP | WB_NOTABSTOP); - SetStyle( (GetStyle() & nMask) | (IsEmpty() ? WB_NOTABSTOP : WB_TABSTOP) ); -} + if (!HasFocus()) + return; -//------------------------------------------------------------------- + if (mnFieldSelected >= maFieldNames.size()) + return; -bool ScDPFieldWindow::IsValidIndex( size_t nIndex ) const -{ - return nIndex < nFieldSize; -} + size_t nPos = GetDisplayPosition(mnFieldSelected); + if (nPos == INVALID_INDEX) + return; -bool ScDPFieldWindow::IsExistingIndex( size_t nIndex ) const -{ - return nIndex < aFieldArr.size(); + Size aFldSize = GetFieldSize(); + long nFldWidth = aFldSize.Width(); + long nSelWidth = std::min<long>( + GetTextWidth(maFieldNames[mnFieldSelected].first) + 4, nFldWidth - 6); + + Point aPos = GetFieldPosition(nPos); + aPos += Point((nFldWidth - nSelWidth) / 2, 3); + Size aSize(nSelWidth, aFldSize.Height() - 6); + + Rectangle aSel(aPos, aSize); + InvertTracking(aSel, SHOWTRACK_SMALL | SHOWTRACK_WINDOW); } -bool ScDPFieldWindow::IsShortenedText( size_t nIndex ) const +bool ScDPFieldControlBase::IsShortenedText( size_t nIndex ) const { - return (nIndex < aFieldArr.size()) && !aFieldArr[ nIndex ].second; + const FieldNames& rFields = GetFieldNames(); + return (nIndex < rFields.size()) && !rFields[nIndex].second; } -size_t ScDPFieldWindow::CalcNewFieldIndex( SCsCOL nDX, SCsROW nDY ) const +void ScDPFieldControlBase::MoveField( size_t nDestIndex ) { - size_t nNewField = nFieldSelected; - switch( eType ) + if (nDestIndex != mnFieldSelected) { - case TYPE_PAGE: - nNewField += static_cast<SCsCOLROW>(nDX) + nDY * MAX_PAGEFIELDS / 2; - break; - case TYPE_COL: - nNewField += static_cast<SCsCOLROW>(nDX) + nDY * MAX_FIELDS / 2; - break; - case TYPE_ROW: - case TYPE_DATA: - nNewField += nDY; - break; - case TYPE_SELECT: - nNewField += static_cast<SCsCOLROW>(nDX) * LINE_SIZE + nDY; - break; + swap(maFieldNames[nDestIndex], maFieldNames[mnFieldSelected]); + mnFieldSelected = nDestIndex; } +} - return IsExistingIndex( nNewField ) ? nNewField : nFieldSelected; +void ScDPFieldControlBase::MoveFieldRel( SCsCOL nDX, SCsROW nDY ) +{ + MoveField( CalcNewFieldIndex( nDX, nDY ) ); } -void ScDPFieldWindow::SetSelection( size_t nIndex ) +void ScDPFieldControlBase::SetSelection(size_t nIndex) { - if( !aFieldArr.empty() ) + FieldNames& rFields = GetFieldNames(); + if (rFields.empty()) + return; + + if( mnFieldSelected >= rFields.size() ) + mnFieldSelected = rFields.size() - 1; + if( mnFieldSelected != nIndex ) { - if( nFieldSelected >= aFieldArr.size() ) - nFieldSelected = aFieldArr.size() - 1; - if( nFieldSelected != nIndex ) - { - sal_Int32 nOldSelected(nFieldSelected); - nFieldSelected = nIndex; - Redraw(); + size_t nOldSelected = mnFieldSelected; + mnFieldSelected = nIndex; + Redraw(); - if (pAccessible && HasFocus()) - { - com::sun::star::uno::Reference < com::sun::star::accessibility::XAccessible > xTempAcc = xAccessible; - if (xTempAcc.is()) - pAccessible->FieldFocusChange(nOldSelected, nFieldSelected); - else - pAccessible = NULL; - } - } + if (HasFocus()) + FieldFocusChanged(nOldSelected, mnFieldSelected); } } -void ScDPFieldWindow::SetSelectionHome() +void ScDPFieldControlBase::SetSelectionHome() { - if( !aFieldArr.empty() ) + const FieldNames& rFields = GetFieldNames(); + if( !rFields.empty() ) { - if( eType == TYPE_SELECT ) - pDlg->NotifyMoveSlider( KEY_HOME ); SetSelection( 0 ); } } -void ScDPFieldWindow::SetSelectionEnd() +void ScDPFieldControlBase::SetSelectionEnd() { - if( !aFieldArr.empty() ) + const FieldNames& rFields = GetFieldNames(); + if( !rFields.empty() ) { - if( eType == TYPE_SELECT ) - pDlg->NotifyMoveSlider( KEY_END ); - SetSelection( aFieldArr.size() - 1 ); + SetSelection( rFields.size() - 1 ); } } -void ScDPFieldWindow::MoveSelection( USHORT nKeyCode, SCsCOL nDX, SCsROW nDY ) +void ScDPFieldControlBase::MoveSelection(SCsCOL nDX, SCsROW nDY) { size_t nNewIndex = CalcNewFieldIndex( nDX, nDY ); - if( (eType == TYPE_SELECT) && (nNewIndex == nFieldSelected) ) - { - if( pDlg->NotifyMoveSlider( nKeyCode ) ) - { - switch( nKeyCode ) - { - case KEY_UP: nNewIndex += (LINE_SIZE - 1); break; - case KEY_DOWN: nNewIndex -= (LINE_SIZE - 1); break; - } - } - } SetSelection( nNewIndex ); } -void ScDPFieldWindow::ModifySelectionOffset( long nOffsetDiff ) +void ScDPFieldControlBase::ModifySelectionOffset( long nOffsetDiff ) { - nFieldSelected -= nOffsetDiff; + mnFieldSelected -= nOffsetDiff; Redraw(); } -void ScDPFieldWindow::SelectNext() +void ScDPFieldControlBase::SelectNext() { - if( eType == TYPE_SELECT ) - MoveSelection( KEY_DOWN, 0, 1 ); + SetSelection(mnFieldSelected + 1); } -void ScDPFieldWindow::GrabFocusWithSel( size_t nIndex ) +void ScDPFieldControlBase::GrabFocusWithSel( size_t nIndex ) { SetSelection( nIndex ); if( !HasFocus() ) GrabFocus(); } -void ScDPFieldWindow::MoveField( size_t nDestIndex ) +//============================================================================= + +ScDPHorFieldControl::ScDPHorFieldControl( + ScDPLayoutDlg* pDialog, const ResId& rResId, FixedText* pCaption) : + ScDPFieldControlBase(pDialog, rResId, pCaption), + maScroll(this, WB_HORZ | WB_DRAG), + mnFieldBtnRowCount(0), + mnFieldBtnColCount(0) { - if( nDestIndex != nFieldSelected ) - { - // "recycle" existing functionality - pDlg->NotifyMouseButtonDown( eType, nFieldSelected ); - pDlg->NotifyMouseButtonUp( OutputToScreenPixel( GetFieldPosition( nDestIndex ) ) ); - } + maScroll.SetScrollHdl( LINK(this, ScDPHorFieldControl, ScrollHdl) ); + maScroll.SetEndScrollHdl( LINK(this, ScDPHorFieldControl, EndScrollHdl) ); + maScroll.Hide(); + + AppendPaintable(&maScroll); } -void ScDPFieldWindow::MoveFieldRel( SCsCOL nDX, SCsROW nDY ) +ScDPHorFieldControl::~ScDPHorFieldControl() { - MoveField( CalcNewFieldIndex( nDX, nDY ) ); } -//------------------------------------------------------------------- +Point ScDPHorFieldControl::GetFieldPosition( size_t nIndex ) +{ + Point aPos; + Size aSize; + GetFieldBtnPosSize(nIndex, aPos, aSize); + return aPos; +} -void __EXPORT ScDPFieldWindow::Paint( const Rectangle& /* rRect */ ) +Size ScDPHorFieldControl::GetFieldSize() const { - // #124828# hiding the caption is now done from StateChanged - Redraw(); + return Size(FIELD_BTN_WIDTH, FIELD_BTN_HEIGHT); } -void ScDPFieldWindow::UseMnemonic() +bool ScDPHorFieldControl::GetFieldIndex( const Point& rPos, size_t& rnIndex ) { - // Now the FixedText has its mnemonic char. Grab the text and hide the - // FixedText to be able to handle tabstop and mnemonics separately. - if( pFtCaption ) + rnIndex = INVALID_INDEX; + if (rPos.X() < 0 || rPos.Y() < 0) + return false; + + Size aWndSize = GetSizePixel(); + if (rPos.X() > aWndSize.Width() || rPos.Y() > aWndSize.Height()) + return false; + + size_t nX = rPos.X(); + size_t nY = rPos.Y(); + size_t nW = aWndSize.Width(); + size_t nH = aWndSize.Height(); + + Size aFldSize = GetFieldSize(); + size_t nCurX = OUTER_MARGIN_HOR + aFldSize.Width() + ROW_FIELD_BTN_GAP/2; + size_t nCurY = OUTER_MARGIN_VER + aFldSize.Height() + ROW_FIELD_BTN_GAP/2; + size_t nCol = 0; + size_t nRow = 0; + while (nX > nCurX && nCurX <= nW) { - SetText( pFtCaption->GetText() ); - pFtCaption->Hide(); + nCurX += aFldSize.Width() + ROW_FIELD_BTN_GAP; + ++nCol; + } + while (nY > nCurY && nCurY <= nH) + { + nCurY += aFldSize.Height() + ROW_FIELD_BTN_GAP; + ++nRow; } - // after reading the mnemonics, tab stop style bits can be updated - UpdateStyle(); + size_t nOffset = maScroll.GetThumbPos(); + nCol += nOffset; // convert to logical column ID. + rnIndex = nCol * mnFieldBtnRowCount + nRow; + size_t nFldCount = GetFieldCount(); + if (rnIndex > nFldCount) + rnIndex = nFldCount; + return IsValidIndex(rnIndex); } -void __EXPORT ScDPFieldWindow::DataChanged( const DataChangedEvent& rDCEvt ) +void ScDPHorFieldControl::Redraw() { - if( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) ) + const StyleSettings& rStyleSet = GetSettings().GetStyleSettings(); + Color aFaceColor = rStyleSet.GetFaceColor(); + Color aWinColor = rStyleSet.GetWindowColor(); + Color aTextColor = rStyleSet.GetButtonTextColor(); + Color aWinTextColor = rStyleSet.GetWindowTextColor(); + + VirtualDevice aVirDev; + // #i97623# VirtualDevice is always LTR while other windows derive direction from parent + aVirDev.EnableRTL( IsRTLEnabled() ); + aVirDev.SetMapMode( MAP_PIXEL ); + + Point aPos0; + Size aSize( GetSizePixel() ); + Font aFont( GetFont() ); // Font vom Window + aFont.SetTransparent( TRUE ); + aVirDev.SetFont( aFont ); + aVirDev.SetOutputSizePixel( aSize ); + + DrawBackground( aVirDev ); + + FieldNames& rFields = GetFieldNames(); { - GetStyleSettings(); - Redraw(); + long nScrollOffset = maScroll.GetThumbPos(); + FieldNames::iterator itr = rFields.begin(), itrEnd = rFields.end(); + if (nScrollOffset) + ::std::advance(itr, nScrollOffset*mnFieldBtnRowCount); + + for (size_t i = 0; itr != itrEnd; ++itr, ++i) + { + Point aFldPt; + Size aFldSize; + if (!GetFieldBtnPosSize(i, aFldPt, aFldSize)) + break; + + size_t nField = i + nScrollOffset*mnFieldBtnRowCount; + bool bFocus = HasFocus() && (nField == GetSelectedField()); + DrawField(aVirDev, Rectangle(aFldPt, aFldSize), *itr, bFocus); + } } - Control::DataChanged( rDCEvt ); + + DrawBitmap( aPos0, aVirDev.GetBitmap( aPos0, aSize ) ); + DrawPaintables(); + DrawInvertSelection(); + UpdateStyle(); } -void __EXPORT ScDPFieldWindow::MouseButtonDown( const MouseEvent& rMEvt ) +void ScDPHorFieldControl::CalcSize() { - if( rMEvt.IsLeft() ) - { - size_t nIndex = 0; - if( GetFieldIndex( rMEvt.GetPosPixel(), nIndex ) && IsExistingIndex( nIndex ) ) - { - GrabFocusWithSel( nIndex ); + Size aWndSize = GetSizePixel(); - if( rMEvt.GetClicks() == 1 ) - { - PointerStyle ePtr = pDlg->NotifyMouseButtonDown( eType, nIndex ); - CaptureMouse(); - SetPointer( Pointer( ePtr ) ); - } - else - pDlg->NotifyDoubleClick( eType, nIndex ); - } - } + long nScrollSize = GetSettings().GetStyleSettings().GetScrollBarSize(); + maScroll.SetSizePixel(Size(aWndSize.Width() - OUTER_MARGIN_HOR*2, nScrollSize)); + maScroll.SetPosPixel(Point(OUTER_MARGIN_HOR, aWndSize.Height() - OUTER_MARGIN_VER - nScrollSize)); + + long nTotalH = aWndSize.Height() - nScrollSize - OUTER_MARGIN_VER*2; + long nTotalW = aWndSize.Width() - OUTER_MARGIN_HOR*2; + mnFieldBtnRowCount = nTotalH / (GetFieldSize().Height() + ROW_FIELD_BTN_GAP); + mnFieldBtnColCount = (nTotalW + ROW_FIELD_BTN_GAP) / (GetFieldSize().Width() + ROW_FIELD_BTN_GAP); + + maScroll.SetLineSize(1); + maScroll.SetVisibleSize(mnFieldBtnColCount); + maScroll.SetPageSize(mnFieldBtnColCount); + maScroll.SetRange(Range(0, mnFieldBtnColCount)); } -void __EXPORT ScDPFieldWindow::MouseButtonUp( const MouseEvent& rMEvt ) +bool ScDPHorFieldControl::IsValidIndex(size_t /*nIndex*/) const { - if( rMEvt.IsLeft() ) - { - if( rMEvt.GetClicks() == 1 ) - { - pDlg->NotifyMouseButtonUp( OutputToScreenPixel( rMEvt.GetPosPixel() ) ); - SetPointer( Pointer( POINTER_ARROW ) ); - } + return true; +} - if( IsMouseCaptured() ) - ReleaseMouse(); - } +size_t ScDPHorFieldControl::CalcNewFieldIndex(SCsCOL nDX, SCsROW nDY) const +{ + size_t nSel = GetSelectedField(); + size_t nFldCount = GetFieldCount(); + SCsROW nRow = nSel % mnFieldBtnRowCount; + SCsCOL nCol = nSel / mnFieldBtnRowCount; + SCsCOL nColUpper = ceil( + static_cast<double>(nFldCount) / static_cast<double>(mnFieldBtnRowCount)) - 1; + SCsROW nRowUpper = mnFieldBtnRowCount - 1; + + nCol += nDX; + if (nCol < 0) + nCol = 0; + else if (nColUpper < nCol) + nCol = nColUpper; + nRow += nDY; + if (nRow < 0) + nRow = 0; + else if (nRowUpper < nRow) + nRow = nRowUpper; + + nSel = nCol*mnFieldBtnRowCount + nRow; + if (nSel >= nFldCount) + nSel = nFldCount - 1; + + return nSel; } -void __EXPORT ScDPFieldWindow::MouseMove( const MouseEvent& rMEvt ) +size_t ScDPHorFieldControl::GetDisplayPosition(size_t nIndex) const { - if( IsMouseCaptured() ) + size_t nColFirst = maScroll.GetThumbPos(); + size_t nColLast = nColFirst + mnFieldBtnColCount - 1; + size_t nCol = nIndex / mnFieldBtnRowCount; + size_t nRow = nIndex % mnFieldBtnRowCount; + if (nCol < nColFirst || nColLast < nCol) + // index is outside the visible area. + return INVALID_INDEX; + + size_t nPos = (nCol - nColFirst)*mnFieldBtnRowCount + nRow; + return nPos; +} + +String ScDPHorFieldControl::GetDescription() const +{ + return ScResId(STR_ACC_DATAPILOT_COL_DESCR); +} + +void ScDPHorFieldControl::ScrollToEnd() +{ + maScroll.DoScroll(maScroll.GetRangeMax()); +} + +void ScDPHorFieldControl::ScrollToShowSelection() +{ + size_t nLower = maScroll.GetThumbPos(); + size_t nUpper = nLower + mnFieldBtnColCount - 1; + size_t nCol = GetSelectedField() / mnFieldBtnRowCount; + if (nCol < nLower) { - PointerStyle ePtr = pDlg->NotifyMouseMove( OutputToScreenPixel( rMEvt.GetPosPixel() ) ); - SetPointer( Pointer( ePtr ) ); + // scroll to left. + maScroll.DoScroll(nCol); } - size_t nIndex = 0; - if( GetFieldIndex( rMEvt.GetPosPixel(), nIndex ) && IsShortenedText( nIndex ) ) + else if (nUpper < nCol) { - Point aPos = OutputToScreenPixel( rMEvt.GetPosPixel() ); - Rectangle aRect( aPos, GetSizePixel() ); - String aHelpText = GetFieldText(nIndex); - Help::ShowQuickHelp( this, aRect, aHelpText ); + // scroll to right. + maScroll.DoScroll(nCol - mnFieldBtnColCount + 1); } } -void __EXPORT ScDPFieldWindow::KeyInput( const KeyEvent& rKEvt ) +void ScDPHorFieldControl::ResetScrollBar() { - const KeyCode& rKeyCode = rKEvt.GetKeyCode(); - USHORT nCode = rKeyCode.GetCode(); - BOOL bKeyEvaluated = FALSE; + long nOldMax = maScroll.GetRangeMax(); + long nNewMax = ceil( + static_cast<double>(GetFieldCount()) / static_cast<double>(mnFieldBtnRowCount)); - if( rKeyCode.IsMod1() && (eType != TYPE_SELECT) ) + if (nOldMax != nNewMax) { - bKeyEvaluated = TRUE; - switch( nCode ) - { - case KEY_UP: MoveFieldRel( 0, -1 ); break; - case KEY_DOWN: MoveFieldRel( 0, 1 ); break; - case KEY_LEFT: MoveFieldRel( -1, 0 ); break; - case KEY_RIGHT: MoveFieldRel( 1, 0 ); break; - case KEY_HOME: MoveField( 0 ); break; - case KEY_END: MoveField( aFieldArr.size() - 1 ); break; - default: bKeyEvaluated = FALSE; - } - } - else - { - bKeyEvaluated = TRUE; - switch( nCode ) - { - case KEY_UP: MoveSelection( nCode, 0, -1 ); break; - case KEY_DOWN: MoveSelection( nCode, 0, 1 ); break; - case KEY_LEFT: MoveSelection( nCode, -1, 0 ); break; - case KEY_RIGHT: MoveSelection( nCode, 1, 0 ); break; - case KEY_HOME: SetSelectionHome(); break; - case KEY_END: SetSelectionEnd(); break; - case KEY_DELETE: - pDlg->NotifyRemoveField( eType, nFieldSelected ); break; - default: bKeyEvaluated = FALSE; - } + maScroll.SetRangeMax(nNewMax); + bool bShow = mnFieldBtnColCount*mnFieldBtnRowCount < GetFieldCount(); + maScroll.Show(bShow); } +} - if( !bKeyEvaluated ) - Control::KeyInput( rKEvt ); +void ScDPHorFieldControl::HandleWheelScroll(long /*nNotch*/) +{ + // not handled for horizontal field controls. } -void __EXPORT ScDPFieldWindow::GetFocus() +bool ScDPHorFieldControl::GetFieldBtnPosSize(size_t nPos, Point& rPos, Size& rSize) { - Control::GetFocus(); - Redraw(); - if( GetGetFocusFlags() & GETFOCUS_MNEMONIC ) // move field on shortcut - pDlg->NotifyMoveField( eType ); - else // else change focus - pDlg->NotifyFieldFocus( eType, TRUE ); + if (nPos >= mnFieldBtnColCount*mnFieldBtnRowCount) + return false; - if (pAccessible) - { - com::sun::star::uno::Reference < com::sun::star::accessibility::XAccessible > xTempAcc = xAccessible; - if (xTempAcc.is()) - pAccessible->GotFocus(); - else - pAccessible = NULL; - } + Point aPos = Point(OUTER_MARGIN_HOR, OUTER_MARGIN_VER); + size_t nRow = nPos % mnFieldBtnRowCount; + size_t nCol = nPos / mnFieldBtnRowCount; + + aPos.X() += nCol*(GetFieldSize().Width() + ROW_FIELD_BTN_GAP); + aPos.Y() += nRow*(GetFieldSize().Height() + ROW_FIELD_BTN_GAP); + + rPos = aPos; + rSize = GetFieldSize(); + return true; } -void __EXPORT ScDPFieldWindow::LoseFocus() +void ScDPHorFieldControl::HandleScroll() { - Control::LoseFocus(); Redraw(); - pDlg->NotifyFieldFocus( eType, FALSE ); +} - if (pAccessible) - { - com::sun::star::uno::Reference < com::sun::star::accessibility::XAccessible > xTempAcc = xAccessible; - if (xTempAcc.is()) - pAccessible->LostFocus(); - else - pAccessible = NULL; - } +IMPL_LINK(ScDPHorFieldControl, ScrollHdl, ScrollBar*, EMPTYARG) +{ + HandleScroll(); + return 0; +} + +IMPL_LINK(ScDPHorFieldControl, EndScrollHdl, ScrollBar*, EMPTYARG) +{ + HandleScroll(); + return 0; +} + +//============================================================================= + +ScDPPageFieldControl::ScDPPageFieldControl( + ScDPLayoutDlg* pDialog, const ResId& rResId, FixedText* pCaption) : + ScDPHorFieldControl(pDialog, rResId, pCaption) +{ +} + +ScDPPageFieldControl::~ScDPPageFieldControl() +{ +} + +ScDPFieldType ScDPPageFieldControl::GetFieldType() const +{ + return TYPE_PAGE; +} + +String ScDPPageFieldControl::GetDescription() const +{ + return ScResId(STR_ACC_DATAPILOT_PAGE_DESCR); +} + +//============================================================================= + +ScDPColFieldControl::ScDPColFieldControl( + ScDPLayoutDlg* pDialog, const ResId& rResId, FixedText* pCaption) : + ScDPHorFieldControl(pDialog, rResId, pCaption) +{ +} + +ScDPColFieldControl::~ScDPColFieldControl() +{ +} + +ScDPFieldType ScDPColFieldControl::GetFieldType() const +{ + return TYPE_COL; +} + +String ScDPColFieldControl::GetDescription() const +{ + return ScResId(STR_ACC_DATAPILOT_COL_DESCR); +} + +//============================================================================= + +ScDPRowFieldControl::ScDPRowFieldControl( + ScDPLayoutDlg* pDialog, const ResId& rResId, FixedText* pCaption ) : + ScDPFieldControlBase( pDialog, rResId, pCaption ), + maScroll(this, WB_VERT | WB_DRAG), + mnColumnBtnCount(0) +{ + maScroll.SetScrollHdl( LINK(this, ScDPRowFieldControl, ScrollHdl) ); + maScroll.SetEndScrollHdl( LINK(this, ScDPRowFieldControl, EndScrollHdl) ); + maScroll.Show(false); + + AppendPaintable(&maScroll); +} + +ScDPRowFieldControl::~ScDPRowFieldControl() +{ } //------------------------------------------------------------------- -void ScDPFieldWindow::AddField( const String& rText, size_t nNewIndex ) +Point ScDPRowFieldControl::GetFieldPosition(size_t nIndex) { - DBG_ASSERT( nNewIndex == aFieldArr.size(), "ScDPFieldWindow::AddField - invalid index" ); - if( IsValidIndex( nNewIndex ) ) - { - aFieldArr.push_back( FieldString( rText, true ) ); - if (pAccessible) - { - com::sun::star::uno::Reference < com::sun::star::accessibility::XAccessible > xTempAcc = xAccessible; - if (xTempAcc.is()) - pAccessible->AddField(nNewIndex); - else - pAccessible = NULL; - } - } + Point aPos; + Size aSize; + GetFieldBtnPosSize(nIndex, aPos, aSize); + return aPos; } -void ScDPFieldWindow::DelField( size_t nDelIndex ) +Size ScDPRowFieldControl::GetFieldSize() const { - if( IsExistingIndex( nDelIndex ) ) - { - if (pAccessible) // before decrement fieldcount - { - com::sun::star::uno::Reference < com::sun::star::accessibility::XAccessible > xTempAcc = xAccessible; - if (xTempAcc.is()) - pAccessible->RemoveField(nDelIndex); - else - pAccessible = NULL; - } - aFieldArr.erase( aFieldArr.begin() + nDelIndex ); - Redraw(); - } + return Size(FIELD_BTN_WIDTH, FIELD_BTN_HEIGHT); } -void ScDPFieldWindow::ClearFields() +bool ScDPRowFieldControl::GetFieldIndex( const Point& rPos, size_t& rnIndex ) { - if( eType == TYPE_SELECT || eType == TYPE_PAGE || eType == TYPE_COL || eType == TYPE_ROW || eType == TYPE_DATA) + rnIndex = INVALID_INDEX; + if (rPos.X() < 0 || rPos.Y() < 0) + return false; + + long nFldH = GetFieldSize().Height(); + long nThreshold = OUTER_MARGIN_VER + nFldH + ROW_FIELD_BTN_GAP / 2; + + size_t nIndex = 0; + for (; nIndex < mnColumnBtnCount; ++nIndex) { - com::sun::star::uno::Reference < com::sun::star::accessibility::XAccessible > xTempAcc = xAccessible; - if (!xTempAcc.is() && pAccessible) - pAccessible = NULL; - if (pAccessible) - for( size_t nIdx = aFieldArr.size(); nIdx > 0; --nIdx ) - pAccessible->RemoveField( nIdx - 1 ); + if (rPos.Y() < nThreshold) + break; - aFieldArr.clear(); + nThreshold += nFldH + ROW_FIELD_BTN_GAP; } + + if (nIndex >= mnColumnBtnCount) + nIndex = mnColumnBtnCount - 1; + + nIndex += maScroll.GetThumbPos(); + rnIndex = nIndex; + return IsValidIndex(rnIndex); } -void ScDPFieldWindow::SetFieldText( const String& rText, size_t nIndex ) +void ScDPRowFieldControl::Redraw() { - if( IsExistingIndex( nIndex ) ) + VirtualDevice aVirDev; + // #i97623# VirtualDevice is always LTR while other windows derive direction from parent + aVirDev.EnableRTL( IsRTLEnabled() ); + aVirDev.SetMapMode( MAP_PIXEL ); + + Point aPos0; + Size aWndSize = GetSizePixel(); + Font aFont = GetFont(); + aFont.SetTransparent(true); + aVirDev.SetFont(aFont); + aVirDev.SetOutputSizePixel(aWndSize); + + DrawBackground(aVirDev); + + FieldNames& rFields = GetFieldNames(); { - aFieldArr[ nIndex ] = FieldString( rText, true ); - Redraw(); + long nScrollOffset = maScroll.GetThumbPos(); + FieldNames::iterator itr = rFields.begin(), itrEnd = rFields.end(); + if (nScrollOffset) + ::std::advance(itr, nScrollOffset); - if (pAccessible) + for (size_t i = 0; itr != itrEnd; ++itr, ++i) { - com::sun::star::uno::Reference < com::sun::star::accessibility::XAccessible > xTempAcc = xAccessible; - if (xTempAcc.is()) - pAccessible->FieldNameChange(nIndex); - else - pAccessible = NULL; + Point aFldPt; + Size aFldSize; + if (!GetFieldBtnPosSize(i, aFldPt, aFldSize)) + break; + + size_t nField = i + nScrollOffset; + bool bFocus = HasFocus() && (nField == GetSelectedField()); + DrawField(aVirDev, Rectangle(aFldPt, aFldSize), *itr, bFocus); } } + + // Create a bitmap from the virtual device, and place that bitmap onto + // this control. + DrawBitmap(aPos0, aVirDev.GetBitmap(aPos0, aWndSize)); + + DrawPaintables(); + DrawInvertSelection(); + UpdateStyle(); } -const String& ScDPFieldWindow::GetFieldText( size_t nIndex ) const +void ScDPRowFieldControl::CalcSize() { - if( IsExistingIndex( nIndex ) ) - return aFieldArr[ nIndex ].first; - return EMPTY_STRING; + Size aWndSize = GetSizePixel(); + + long nTotal = aWndSize.Height() - OUTER_MARGIN_VER; + mnColumnBtnCount = nTotal / (GetFieldSize().Height() + ROW_FIELD_BTN_GAP); + + long nScrollSize = GetSettings().GetStyleSettings().GetScrollBarSize(); + + maScroll.SetSizePixel(Size(nScrollSize, aWndSize.Height() - OUTER_MARGIN_VER*2)); + maScroll.SetPosPixel(Point(aWndSize.Width() - nScrollSize - OUTER_MARGIN_HOR, OUTER_MARGIN_VER)); + maScroll.SetLineSize(1); + maScroll.SetVisibleSize(mnColumnBtnCount); + maScroll.SetPageSize(mnColumnBtnCount); + maScroll.SetRange(Range(0, mnColumnBtnCount)); + maScroll.DoScroll(0); + } -//------------------------------------------------------------------- +bool ScDPRowFieldControl::IsValidIndex(size_t /*nIndex*/) const +{ + // This method is here in case we decide to impose an arbitrary upper + // boundary on the number of fields. + return true; +} -bool ScDPFieldWindow::AddField( const String& rText, const Point& rPos, size_t& rnIndex ) +size_t ScDPRowFieldControl::CalcNewFieldIndex(SCsCOL /*nDX*/, SCsROW nDY) const { - if ( aFieldArr.size() == nFieldSize ) - return FALSE; + size_t nNewField = GetSelectedField(); + nNewField += nDY; + return IsExistingIndex(nNewField) ? nNewField : GetSelectedField(); +} - size_t nNewIndex = 0; - if( GetFieldIndex( rPos, nNewIndex ) ) - { - if( nNewIndex > aFieldArr.size() ) - nNewIndex = aFieldArr.size(); +size_t ScDPRowFieldControl::GetDisplayPosition(size_t nIndex) const +{ + size_t nLower = maScroll.GetThumbPos(); + size_t nUpper = nLower + mnColumnBtnCount; + if (nLower <= nIndex && nIndex <= nUpper) + return nIndex - nLower; - aFieldArr.insert( aFieldArr.begin() + nNewIndex, FieldString( rText, true ) ); - nFieldSelected = nNewIndex; - Redraw(); - rnIndex = nNewIndex; + return INVALID_INDEX; +} - if (pAccessible) - { - com::sun::star::uno::Reference < com::sun::star::accessibility::XAccessible > xTempAcc = xAccessible; - if (xTempAcc.is()) - pAccessible->AddField(nNewIndex); - else - pAccessible = NULL; - } +//------------------------------------------------------------------- - return true; - } +String ScDPRowFieldControl::GetDescription() const +{ + return ScResId(STR_ACC_DATAPILOT_ROW_DESCR); +} - return false; +ScDPFieldType ScDPRowFieldControl::GetFieldType() const +{ + return TYPE_ROW; } -void ScDPFieldWindow::GetExistingIndex( const Point& rPos, size_t& rnIndex ) +void ScDPRowFieldControl::ScrollToEnd() { - if( !aFieldArr.empty() && (eType != TYPE_SELECT) && GetFieldIndex( rPos, rnIndex ) ) + maScroll.DoScroll(maScroll.GetRangeMax()); +} + +void ScDPRowFieldControl::ScrollToShowSelection() +{ + size_t nLower = maScroll.GetThumbPos(); + size_t nUpper = nLower + mnColumnBtnCount - 1; + size_t nSel = GetSelectedField(); + if (nSel < nLower) { - if( rnIndex >= aFieldArr.size() ) - rnIndex = aFieldArr.size() - 1; + // scroll up + maScroll.DoScroll(nSel); + } + else if (nUpper < nSel) + { + // scroll down + size_t nD = nSel - nUpper; + maScroll.DoScroll(nLower + nD); } - else - rnIndex = 0; } -String ScDPFieldWindow::GetDescription() const -{ - String sDescription; - switch( eType ) - { - case TYPE_COL: - sDescription = ScResId(STR_ACC_DATAPILOT_COL_DESCR); - break; - case TYPE_ROW: - sDescription = ScResId(STR_ACC_DATAPILOT_ROW_DESCR); - break; - case TYPE_DATA: - sDescription = ScResId(STR_ACC_DATAPILOT_DATA_DESCR); - break; - case TYPE_SELECT: - sDescription = ScResId(STR_ACC_DATAPILOT_SEL_DESCR); - break; - default: - { - // added to avoid warnings - } +void ScDPRowFieldControl::ResetScrollBar() +{ + long nOldMax = maScroll.GetRangeMax(); + long nNewMax = std::max<long>(mnColumnBtnCount, GetFieldCount()); + + if (nOldMax != nNewMax) + { + maScroll.SetRangeMax(nNewMax); + maScroll.Show(GetFieldCount() > mnColumnBtnCount); } - return sDescription; } -::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > ScDPFieldWindow::CreateAccessible() +void ScDPRowFieldControl::HandleWheelScroll(long nNotch) { - pAccessible = - new ScAccessibleDataPilotControl(GetAccessibleParentWindow()->GetAccessible(), this); + maScroll.DoScroll(maScroll.GetThumbPos() - nNotch); +} - com::sun::star::uno::Reference < ::com::sun::star::accessibility::XAccessible > xReturn = pAccessible; +bool ScDPRowFieldControl::GetFieldBtnPosSize(size_t nPos, Point& rPos, Size& rSize) +{ + if (nPos >= mnColumnBtnCount) + return false; - pAccessible->Init(); - xAccessible = xReturn; + size_t nOffset = maScroll.GetThumbPos(); + if (nPos + nOffset >= GetFieldCount()) + return false; - return xReturn; + rSize = GetFieldSize(); + rPos = Point(OUTER_MARGIN_HOR, OUTER_MARGIN_VER); + rPos.Y() += nPos * (rSize.Height() + ROW_FIELD_BTN_GAP); + return true; +} + +void ScDPRowFieldControl::HandleScroll() +{ + Redraw(); +} + +IMPL_LINK(ScDPRowFieldControl, ScrollHdl, ScrollBar*, EMPTYARG) +{ + HandleScroll(); + return 0; +} + +IMPL_LINK(ScDPRowFieldControl, EndScrollHdl, ScrollBar*, EMPTYARG) +{ + HandleScroll(); + return 0; +} + +//============================================================================= + +ScDPSelectFieldControl::ScDPSelectFieldControl( + ScDPLayoutDlg* pDialog, const ResId& rResId, FixedText* pCaption) : + ScDPHorFieldControl(pDialog, rResId, pCaption) +{ + SetName(String(ScResId(STR_SELECT))); } -//=================================================================== +ScDPSelectFieldControl::~ScDPSelectFieldControl() +{ +} + +ScDPFieldType ScDPSelectFieldControl::GetFieldType() const +{ + return TYPE_SELECT; +} + +String ScDPSelectFieldControl::GetDescription() const +{ + return ScResId(STR_ACC_DATAPILOT_SEL_DESCR); +} + +//============================================================================= + +ScDPDataFieldControl::ScDPDataFieldControl( + ScDPLayoutDlg* pDialog, const ResId& rResId, FixedText* pCaption) : + ScDPHorFieldControl(pDialog, rResId, pCaption) +{ +} + +ScDPDataFieldControl::~ScDPDataFieldControl() +{ +} + +ScDPFieldType ScDPDataFieldControl::GetFieldType() const +{ + return TYPE_DATA; +} + +Size ScDPDataFieldControl::GetFieldSize() const +{ + Size aWndSize = GetSizePixel(); + long nFieldObjWidth = aWndSize.Width() / 2.0 - OUTER_MARGIN_HOR - DATA_FIELD_BTN_GAP/2; + Size aFieldSize(nFieldObjWidth, FIELD_BTN_HEIGHT); + return aFieldSize; +} + +String ScDPDataFieldControl::GetDescription() const +{ + return ScResId(STR_ACC_DATAPILOT_DATA_DESCR); +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/dbgui/filtdlg.cxx b/sc/source/ui/dbgui/filtdlg.cxx index b95535f91717..7383513a06bf 100644 --- a/sc/source/ui/dbgui/filtdlg.cxx +++ b/sc/source/ui/dbgui/filtdlg.cxx @@ -138,7 +138,7 @@ ScFilterDlg::ScFilterDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent, //---------------------------------------------------------------------------- -__EXPORT ScFilterDlg::~ScFilterDlg() +ScFilterDlg::~ScFilterDlg() { for (USHORT i=0; i<=MAXCOL; i++) delete pEntryLists[i]; @@ -154,7 +154,7 @@ __EXPORT ScFilterDlg::~ScFilterDlg() //---------------------------------------------------------------------------- -void __EXPORT ScFilterDlg::Init( const SfxItemSet& rArgSet ) +void ScFilterDlg::Init( const SfxItemSet& rArgSet ) { const ScQueryItem& rQueryItem = (const ScQueryItem&) rArgSet.Get( nWhichQuery ); @@ -341,7 +341,7 @@ void __EXPORT ScFilterDlg::Init( const SfxItemSet& rArgSet ) //---------------------------------------------------------------------------- -BOOL __EXPORT ScFilterDlg::Close() +BOOL ScFilterDlg::Close() { if (pViewData) pViewData->GetDocShell()->CancelAutoDBRange(); diff --git a/sc/source/ui/dbgui/imoptdlg.hrc b/sc/source/ui/dbgui/imoptdlg.hrc index 5fd9256e8009..6fab4c6db907 100644 --- a/sc/source/ui/dbgui/imoptdlg.hrc +++ b/sc/source/ui/dbgui/imoptdlg.hrc @@ -26,8 +26,6 @@ ************************************************************************/ #include "sc.hrc" -//#define RID_SCDLG_IMPORTOPT 2256 - #define BTN_OK 1 #define BTN_CANCEL 2 #define BTN_HELP 3 @@ -41,4 +39,3 @@ #define FL_FIELDOPT 11 #define CB_FIXEDWIDTH 12 #define CB_SAVESHOWN 13 - diff --git a/sc/source/ui/dbgui/imoptdlg.src b/sc/source/ui/dbgui/imoptdlg.src index 914f2d1fb027..b63d83210c00 100644 --- a/sc/source/ui/dbgui/imoptdlg.src +++ b/sc/source/ui/dbgui/imoptdlg.src @@ -25,7 +25,6 @@ * ************************************************************************/ - #include "imoptdlg.hrc" ModalDialog RID_SCDLG_IMPORTOPT @@ -121,21 +120,3 @@ ModalDialog RID_SCDLG_IMPORTOPT Size = MAP_APPFONT ( 50 , 14 ) ; }; }; - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/dbgui/makefile.mk b/sc/source/ui/dbgui/makefile.mk index ab632bf1b1e7..33b8cdbfca7a 100644 --- a/sc/source/ui/dbgui/makefile.mk +++ b/sc/source/ui/dbgui/makefile.mk @@ -39,45 +39,37 @@ LIBTARGET=no # --- Files -------------------------------------------------------- SLOFILES = \ - $(SLO)$/sortdlg.obj \ - $(SLO)$/tpsort.obj \ - $(SLO)$/filtdlg.obj \ - $(SLO)$/sfiltdlg.obj \ - $(SLO)$/foptmgr.obj \ - $(SLO)$/pfiltdlg.obj \ - $(SLO)$/dbnamdlg.obj \ - $(SLO)$/expftext.obj \ - $(SLO)$/textimportoptions.obj \ - $(SLO)$/subtdlg.obj \ - $(SLO)$/tpsubt.obj \ - $(SLO)$/fieldwnd.obj \ - $(SLO)$/pvlaydlg.obj \ - $(SLO)$/pvfundlg.obj \ - $(SLO)$/dpgroupdlg.obj \ - $(SLO)$/dapitype.obj \ - $(SLO)$/dapidata.obj \ + $(EXCEPTIONSFILES) + +EXCEPTIONSFILES= \ + $(SLO)$/asciiopt.obj \ $(SLO)$/consdlg.obj \ - $(SLO)$/scendlg.obj \ - $(SLO)$/imoptdlg.obj \ - $(SLO)$/validate.obj \ - $(SLO)$/csvsplits.obj \ $(SLO)$/csvcontrol.obj \ - $(SLO)$/csvruler.obj \ $(SLO)$/csvgrid.obj \ + $(SLO)$/csvruler.obj \ + $(SLO)$/csvsplits.obj \ $(SLO)$/csvtablebox.obj \ - $(SLO)$/asciiopt.obj \ - $(SLO)$/scuiasciiopt.obj \ - $(SLO)$/scuiimoptdlg.obj - -EXCEPTIONSFILES= \ - $(SLO)$/csvgrid.obj \ - $(SLO)$/csvruler.obj \ - $(SLO)$/csvsplits.obj \ - $(SLO)$/csvtablebox.obj \ - $(SLO)$/fieldwnd.obj \ + $(SLO)$/dapidata.obj \ + $(SLO)$/dapitype.obj \ + $(SLO)$/dbnamdlg.obj \ + $(SLO)$/dpgroupdlg.obj \ + $(SLO)$/expftext.obj \ + $(SLO)$/fieldwnd.obj \ + $(SLO)$/filtdlg.obj \ + $(SLO)$/foptmgr.obj \ + $(SLO)$/imoptdlg.obj \ + $(SLO)$/pfiltdlg.obj \ $(SLO)$/pvfundlg.obj \ $(SLO)$/pvlaydlg.obj \ - $(SLO)$/dapidata.obj \ + $(SLO)$/scendlg.obj \ + $(SLO)$/scuiasciiopt.obj \ + $(SLO)$/scuiimoptdlg.obj \ + $(SLO)$/sfiltdlg.obj \ + $(SLO)$/sortdlg.obj \ + $(SLO)$/subtdlg.obj \ + $(SLO)$/textimportoptions.obj \ + $(SLO)$/tpsort.obj \ + $(SLO)$/tpsubt.obj \ $(SLO)$/validate.obj SRS1NAME=$(TARGET) diff --git a/sc/source/ui/dbgui/outline.src b/sc/source/ui/dbgui/outline.src index cd59bf3b099d..f1a895ddea23 100644 --- a/sc/source/ui/dbgui/outline.src +++ b/sc/source/ui/dbgui/outline.src @@ -27,7 +27,6 @@ #include "sc.hrc" - // Imageliste hier, damit sie nicht in ui.src beim Zusammenbauen der // "echten" Imagelisten stoert @@ -41,11 +40,3 @@ ImageList RID_OUTLINEBITMAPS MaskColor = STD_MASKCOLOR; OUTLINE_ID_LIST }; - -ImageList RID_OUTLINEBITMAPS_H -{ - Prefix = "ouh"; - MaskColor = SC_HC_MASKCOLOR; - OUTLINE_ID_LIST -}; - diff --git a/sc/source/ui/dbgui/pfiltdlg.cxx b/sc/source/ui/dbgui/pfiltdlg.cxx index dfbf7e8989fa..55ce7b9499b7 100644 --- a/sc/source/ui/dbgui/pfiltdlg.cxx +++ b/sc/source/ui/dbgui/pfiltdlg.cxx @@ -115,7 +115,7 @@ ScPivotFilterDlg::ScPivotFilterDlg( Window* pParent, //------------------------------------------------------------------------ -__EXPORT ScPivotFilterDlg::~ScPivotFilterDlg() +ScPivotFilterDlg::~ScPivotFilterDlg() { for (USHORT i=0; i<=MAXCOL; i++) delete pEntryLists[i]; @@ -126,7 +126,7 @@ __EXPORT ScPivotFilterDlg::~ScPivotFilterDlg() //------------------------------------------------------------------------ -void __EXPORT ScPivotFilterDlg::Init( const SfxItemSet& rArgSet ) +void ScPivotFilterDlg::Init( const SfxItemSet& rArgSet ) { const ScQueryItem& rQueryItem = (const ScQueryItem&) rArgSet.Get( nWhichQuery ); diff --git a/sc/source/ui/dbgui/pivot.hrc b/sc/source/ui/dbgui/pivot.hrc index 1a97d4c75b52..883be5e7f4c8 100644 --- a/sc/source/ui/dbgui/pivot.hrc +++ b/sc/source/ui/dbgui/pivot.hrc @@ -38,9 +38,6 @@ #define WND_ROW 12 #define WND_DATA 13 #define WND_SELECT 14 -#define WND_FIELD 15 -#define WND_FIELD_SPACE 16 -#define WND_HSCROLL 17 #define WND_PAGE 18 #define FT_COL 31 #define FT_ROW 32 @@ -78,4 +75,3 @@ #define PIVOTSTR_DEV2 9 #define PIVOTSTR_VAR 10 #define PIVOTSTR_VAR2 11 - diff --git a/sc/source/ui/dbgui/pivot.src b/sc/source/ui/dbgui/pivot.src index 359c8a92d8e5..514a37153ab0 100644 --- a/sc/source/ui/dbgui/pivot.src +++ b/sc/source/ui/dbgui/pivot.src @@ -31,7 +31,7 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT { OutputSize = TRUE ; HelpId = SID_OPENDLG_PIVOTTABLE ; - Size = MAP_APPFONT ( 336 , 190 ) ; + Size = MAP_APPFONT ( 350 , 216 ) ; Hide = TRUE ; SVLook = TRUE ; Moveable = TRUE ; @@ -46,8 +46,9 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT }; Control WND_PAGE { - Pos = MAP_APPFONT ( 6 , 14 ) ; - Size = MAP_APPFONT ( 182 , 24 ) ; + /* Size is calculated in the dialog code. */ + Pos = MAP_APPFONT ( 20 , 14 ) ; + Size = MAP_APPFONT ( 1 , 1 ) ; TabStop = TRUE ; }; FixedText FT_COL @@ -58,8 +59,9 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT }; Control WND_COL { - Pos = MAP_APPFONT ( 44 , 40 ) ; - Size = MAP_APPFONT ( 144 , 24 ) ; + /* Size is calculated in the dialog code. */ + Pos = MAP_APPFONT ( 56 , 56 ) ; + Size = MAP_APPFONT ( 1 , 1 ) ; TabStop = TRUE ; }; FixedText FT_ROW @@ -70,42 +72,38 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT }; Control WND_ROW { - Pos = MAP_APPFONT ( 6 , 66 ) ; - Size = MAP_APPFONT ( 36 , 96 ) ; + /* Size is calculated in the dialog code. */ + Pos = MAP_APPFONT ( 6 , 98 ) ; + Size = MAP_APPFONT ( 1 , 1 ) ; TabStop = TRUE ; }; FixedText FT_DATA { - Pos = MAP_APPFONT ( 231, 176 ) ; + Pos = MAP_APPFONT ( 227, 176 ) ; Size = MAP_APPFONT ( 37 , 8 ) ; Text [ en-US ] = "Data Fields" ; }; Control WND_DATA { - Pos = MAP_APPFONT ( 44 , 66 ) ; - Size = MAP_APPFONT ( 144 , 96 ) ; + /* Size is calculated in the dialog code. */ + Pos = MAP_APPFONT ( 56 , 98 ) ; + Size = MAP_APPFONT ( 1 , 1 ) ; TabStop = TRUE ; }; Control WND_SELECT { - Pos = MAP_APPFONT ( 194 , 14 ) ; - Size = MAP_APPFONT ( 70 , 126 ) ; + /* Size is calculated in the dialog code. */ + Pos = MAP_APPFONT ( 210 , 14 ) ; + Size = MAP_APPFONT ( 1 , 1 ) ; TabStop = TRUE ; }; String STR_SELECT { Text [ en-US ] = "Selection area"; }; - ScrollBar WND_HSCROLL - { - Pos = MAP_APPFONT ( 194 , 144 ) ; - Size = MAP_APPFONT ( 70 , 8 ) ; - HScroll = TRUE ; - TabStop = FALSE ; - }; FixedText FT_INFO { - Pos = MAP_APPFONT ( 6 , 168 ) ; + Pos = MAP_APPFONT ( 6 , 200 ) ; Size = MAP_APPFONT ( 182 , 16 ) ; WordBreak = TRUE ; Text [ en-US ] = "Drag the fields from the right into the desired position." ; @@ -113,64 +111,53 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT FixedLine FL_LAYOUT { Pos = MAP_APPFONT ( 6 , 3 ) ; - Size = MAP_APPFONT ( 268 , 8 ) ; + Size = MAP_APPFONT ( 282 , 8 ) ; Text [ en-US ] = "Layout"; }; OKButton BTN_OK { - Pos = MAP_APPFONT ( 280 , 6 ) ; + Pos = MAP_APPFONT ( 294 , 6 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; DefButton = TRUE ; }; CancelButton BTN_CANCEL { - Pos = MAP_APPFONT ( 280 , 23 ) ; + Pos = MAP_APPFONT ( 294 , 23 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; }; HelpButton BTN_HELP { - Pos = MAP_APPFONT ( 280 , 43 ) ; + Pos = MAP_APPFONT ( 294 , 43 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; }; PushButton BTN_REMOVE { - Pos = MAP_APPFONT ( 280 , 63 ) ; + Pos = MAP_APPFONT ( 294 , 63 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; Text [ en-US ] = "Remove"; }; PushButton BTN_OPTIONS { - Pos = MAP_APPFONT ( 280 , 80 ) ; + Pos = MAP_APPFONT ( 294 , 80 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; Text [ en-US ] = "Options..."; }; MoreButton BTN_MORE { - Pos = MAP_APPFONT ( 280 , 170 ) ; + Pos = MAP_APPFONT ( 294 , 190 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; MapUnit = MAP_APPFONT ; Delta = 90 ; }; - Window WND_FIELD - { - Border = TRUE ; - Pos = MAP_APPFONT ( 0 , 0 ) ; - Size = MAP_APPFONT ( 36 , 12 ) ; - }; - Window WND_FIELD_SPACE - { - Pos = MAP_APPFONT ( 0 , 0 ) ; - Size = MAP_APPFONT ( 2 , 2 ) ; - }; FixedLine FL_OUTPUT { - Pos = MAP_APPFONT ( 6 , 190 ) ; + Pos = MAP_APPFONT ( 6 , 216 ) ; Size = MAP_APPFONT ( 268 , 8 ) ; Text [ en-US ] = "Result" ; Hide = TRUE ; @@ -178,7 +165,7 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT FixedText FT_INAREA { - Pos = MAP_APPFONT ( 12 , 203 ) ; + Pos = MAP_APPFONT ( 12 , 229 ) ; Size = MAP_APPFONT ( 59 , 8 ) ; Hide = TRUE ; Text [ en-US ] = "Selection from" ; @@ -186,14 +173,14 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT Edit ED_INAREA { Border = TRUE ; - Pos = MAP_APPFONT ( 73 , 201 ) ; + Pos = MAP_APPFONT ( 73 , 227 ) ; Size = MAP_APPFONT ( 100 , 12 ) ; TabStop = TRUE ; Hide = TRUE ; }; ImageButton RB_INAREA { - Pos = MAP_APPFONT ( 177 , 200 ) ; + Pos = MAP_APPFONT ( 177 , 226 ) ; Size = MAP_APPFONT ( 13 , 15 ) ; TabStop = TRUE ; Hide = TRUE ; @@ -202,7 +189,7 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT FixedText FT_OUTAREA { - Pos = MAP_APPFONT ( 12 , 221 ) ; + Pos = MAP_APPFONT ( 12 , 247 ) ; Size = MAP_APPFONT ( 59 , 8 ) ; Hide = TRUE ; Text [ en-US ] = "Results to" ; @@ -210,7 +197,7 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT ListBox LB_OUTAREA { Border = TRUE ; - Pos = MAP_APPFONT ( 73 , 219 ) ; + Pos = MAP_APPFONT ( 73 , 245 ) ; Size = MAP_APPFONT ( 75 , 90 ) ; TabStop = TRUE ; DropDown = TRUE ; @@ -219,14 +206,14 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT Edit ED_OUTAREA { Border = TRUE ; - Pos = MAP_APPFONT ( 152 , 219 ) ; + Pos = MAP_APPFONT ( 152 , 245 ) ; Size = MAP_APPFONT ( 100 , 12 ) ; TabStop = TRUE ; Hide = TRUE ; }; ImageButton RB_OUTAREA { - Pos = MAP_APPFONT ( 256 , 218 ) ; + Pos = MAP_APPFONT ( 256 , 244 ) ; Size = MAP_APPFONT ( 13 , 15 ) ; TabStop = TRUE ; Hide = TRUE ; @@ -234,7 +221,7 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT }; CheckBox BTN_IGNEMPTYROWS { - Pos = MAP_APPFONT ( 12 , 237 ) ; + Pos = MAP_APPFONT ( 12 , 263 ) ; Size = MAP_APPFONT ( 124 , 10 ) ; TabStop = TRUE ; Hide = TRUE ; @@ -242,7 +229,7 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT }; CheckBox BTN_DETECTCAT { - Pos = MAP_APPFONT ( 142 , 237 ) ; + Pos = MAP_APPFONT ( 142 , 263 ) ; Size = MAP_APPFONT ( 124 , 10 ) ; TabStop = TRUE ; Hide = TRUE ; @@ -250,7 +237,7 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT }; CheckBox BTN_TOTALCOL { - Pos = MAP_APPFONT ( 12 , 251 ) ; + Pos = MAP_APPFONT ( 12 , 277 ) ; Size = MAP_APPFONT ( 124 , 10 ) ; TabStop = TRUE ; Hide = TRUE ; @@ -258,7 +245,7 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT }; CheckBox BTN_TOTALROW { - Pos = MAP_APPFONT ( 142 , 251 ) ; + Pos = MAP_APPFONT ( 142 , 277 ) ; Size = MAP_APPFONT ( 124 , 10 ) ; TabStop = TRUE ; Hide = TRUE ; @@ -266,7 +253,7 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT }; CheckBox BTN_FILTER { - Pos = MAP_APPFONT ( 12 , 265 ) ; + Pos = MAP_APPFONT ( 12 , 291 ) ; Size = MAP_APPFONT ( 124 , 10 ) ; TabStop = TRUE ; Hide = TRUE ; @@ -274,7 +261,7 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT }; CheckBox BTN_DRILLDOWN { - Pos = MAP_APPFONT ( 142 , 265 ) ; + Pos = MAP_APPFONT ( 142 , 291 ) ; Size = MAP_APPFONT ( 124 , 10 ) ; TabStop = TRUE ; Hide = TRUE ; diff --git a/sc/source/ui/dbgui/pvfundlg.hrc b/sc/source/ui/dbgui/pvfundlg.hrc index c9b6f562a9e1..fdff335fd247 100644 --- a/sc/source/ui/dbgui/pvfundlg.hrc +++ b/sc/source/ui/dbgui/pvfundlg.hrc @@ -27,9 +27,6 @@ #include "sc.hrc" -// RID_SCDLG_DPDATAFIELD - DataPilot Data Field Function -// RID_SCDLG_PIVOTSUBT - DataPilot Page/Row/Column Field Subtotals - #define BTN_OK 1 #define BTN_CANCEL 2 #define BTN_HELP 3 @@ -80,4 +77,3 @@ #define NF_SHOW 1 #define CT_HIDE 1 - diff --git a/sc/source/ui/dbgui/pvglob.hxx b/sc/source/ui/dbgui/pvglob.hxx deleted file mode 100644 index 2ad61405aae8..000000000000 --- a/sc/source/ui/dbgui/pvglob.hxx +++ /dev/null @@ -1,45 +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. - * - ************************************************************************/ - -#ifndef SC_PVGLOB_HXX -#define SC_PVGLOB_HXX - -//------------------------------------------------------------------- - -class PivotGlobal -{ -public: - static long nObjHeight; - static long nObjWidth; - static long nSelSpace; -}; - - -#endif // SC_PVGLOB_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/dbgui/pvlaydlg.cxx b/sc/source/ui/dbgui/pvlaydlg.cxx index 3b26d1c836f6..088891dcde22 100644 --- a/sc/source/ui/dbgui/pvlaydlg.cxx +++ b/sc/source/ui/dbgui/pvlaydlg.cxx @@ -29,12 +29,11 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sc.hxx" - - //---------------------------------------------------------------------------- #include "pvlaydlg.hxx" #include "dbdocfun.hxx" +#include "dpuiglobal.hxx" #include <sfx2/dispatch.hxx> #include <vcl/msgbox.hxx> @@ -49,7 +48,6 @@ #include "tabvwsh.hxx" #include "reffact.hxx" #include "scresid.hxx" -#include "pvglob.hxx" #include "globstr.hrc" #include "pivot.hrc" #include "dpobject.hxx" @@ -59,9 +57,11 @@ #include "sc.hrc" #include "scabstdlg.hxx" + using namespace com::sun::star; using ::rtl::OUString; using ::std::vector; +using ::std::for_each; //---------------------------------------------------------------------------- @@ -69,22 +69,10 @@ using ::std::vector; #define STD_FORMAT SCA_VALID | SCA_TAB_3D \ | SCA_COL_ABSOLUTE | SCA_ROW_ABSOLUTE | SCA_TAB_ABSOLUTE -long PivotGlobal::nObjHeight = 0; // initialized with resource data -long PivotGlobal::nObjWidth = 0; -long PivotGlobal::nSelSpace = 0; - - //============================================================================ namespace { -void lcl_FillToPivotField( PivotField& rPivotField, const ScDPFuncData& rFuncData ) -{ - rPivotField.nCol = rFuncData.mnCol; - rPivotField.nFuncMask = rFuncData.mnFuncMask; - rPivotField.maFieldRef = rFuncData.maFieldRef; -} - PointerStyle lclGetPointerForField( ScDPFieldType eType ) { switch( eType ) @@ -109,15 +97,14 @@ ScDPLayoutDlg::ScDPLayoutDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pPar : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_PIVOT_LAYOUT ), aFlLayout ( this, ScResId( FL_LAYOUT ) ), aFtPage ( this, ScResId( FT_PAGE ) ), - aWndPage ( this, ScResId( WND_PAGE ), TYPE_PAGE, &aFtPage ), + aWndPage ( this, ScResId( WND_PAGE ), &aFtPage ), aFtCol ( this, ScResId( FT_COL ) ), - aWndCol ( this, ScResId( WND_COL ), TYPE_COL, &aFtCol ), + aWndCol ( this, ScResId( WND_COL ), &aFtCol ), aFtRow ( this, ScResId( FT_ROW ) ), - aWndRow ( this, ScResId( WND_ROW ), TYPE_ROW, &aFtRow ), + aWndRow ( this, ScResId( WND_ROW ), &aFtRow ), aFtData ( this, ScResId( FT_DATA ) ), - aWndData ( this, ScResId( WND_DATA ), TYPE_DATA, &aFtData ), - aWndSelect ( this, ScResId( WND_SELECT ), TYPE_SELECT, String(ScResId(STR_SELECT)) ), - aSlider ( this, ScResId( WND_HSCROLL ) ), + aWndData ( this, ScResId( WND_DATA ), &aFtData ), + aWndSelect ( this, ScResId( WND_SELECT ), NULL ), aFtInfo ( this, ScResId( FT_INFO ) ), aFlAreas ( this, ScResId( FL_OUTPUT ) ), @@ -159,7 +146,8 @@ ScDPLayoutDlg::ScDPLayoutDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pPar GetViewData() ), pDoc ( ((ScTabViewShell*)SfxViewShell::Current())-> GetViewData()->GetDocument() ), - bRefInputMode ( FALSE ) + bRefInputMode (false), + mbValidSrcRange (false) { xDlgDPObject->SetAlive( TRUE ); // needed to get structure information xDlgDPObject->FillOldParam( thePivotData, FALSE ); @@ -169,7 +157,6 @@ ScDPLayoutDlg::ScDPLayoutDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pPar FreeResource(); } - //---------------------------------------------------------------------------- ScDPLayoutDlg::~ScDPLayoutDlg() @@ -181,26 +168,9 @@ ScDPLayoutDlg::~ScDPLayoutDlg() delete (String*)aLbOutPos.GetEntryData( i ); } - //---------------------------------------------------------------------------- -ScDPFieldWindow& ScDPLayoutDlg::GetFieldWindow( ScDPFieldType eType ) -{ - switch( eType ) - { - case TYPE_PAGE: return aWndPage; - case TYPE_ROW: return aWndRow; - case TYPE_COL: return aWndCol; - case TYPE_DATA: return aWndData; - default: - { - // added to avoid warnings - } - } - return aWndSelect; -} - -void __EXPORT ScDPLayoutDlg::Init(bool bNewOutput) +void ScDPLayoutDlg::Init(bool bNewOutput) { DBG_ASSERT( pViewData && pDoc, "Ctor-Initialisierung fehlgeschlagen!" ); @@ -208,8 +178,8 @@ void __EXPORT ScDPLayoutDlg::Init(bool bNewOutput) aBtnRemove.SetClickHdl( LINK( this, ScDPLayoutDlg, ClickHdl ) ); aBtnOptions.SetClickHdl( LINK( this, ScDPLayoutDlg, ClickHdl ) ); - aFuncNameArr.reserve( FUNC_COUNT ); - for ( USHORT i = 0; i < FUNC_COUNT; ++i ) + aFuncNameArr.reserve( PIVOT_MAXFUNC ); + for ( USHORT i = 0; i < PIVOT_MAXFUNC; ++i ) aFuncNameArr.push_back( String( ScResId( i + 1 ) ) ); aBtnMore.AddWindow( &aFlAreas ); @@ -228,21 +198,8 @@ void __EXPORT ScDPLayoutDlg::Init(bool bNewOutput) aBtnMore.AddWindow( &aBtnDrillDown ); aBtnMore.SetClickHdl( LINK( this, ScDPLayoutDlg, MoreClickHdl ) ); - { - Size aFieldSize( Window( this, ScResId( WND_FIELD ) ).GetSizePixel() ); - OHEIGHT = aFieldSize.Height(); - OWIDTH = aFieldSize.Width(); - } - SSPACE = Window( this, ScResId( WND_FIELD_SPACE ) ).GetSizePixel().Width(); - CalcWndSizes(); - aSelectArr.resize( MAX_LABELS ); - aPageArr.resize( MAX_PAGEFIELDS ); - aColArr.resize( MAX_FIELDS ); - aRowArr.resize( MAX_FIELDS ); - aDataArr.resize( MAX_FIELDS ); - ScRange inRange; String inString; if (xDlgDPObject->GetSheetDesc()) @@ -351,17 +308,11 @@ void __EXPORT ScDPLayoutDlg::Init(bool bNewOutput) aWndSelect.SetHelpId( HID_SC_DPLAY_SELECT ); InitFocus(); - -// SetDispatcherLock( TRUE ); // Modal-Modus einschalten - - //@BugID 54702 Enablen/Disablen nur noch in Basisklasse - //SFX_APPWINDOW->Disable(FALSE); //! allgemeine Methode im ScAnyRefDlg } - //---------------------------------------------------------------------------- -BOOL __EXPORT ScDPLayoutDlg::Close() +BOOL ScDPLayoutDlg::Close() { return DoClose( ScPivotLayoutWrapper::GetChildWindowId() ); } @@ -394,104 +345,66 @@ void ScDPLayoutDlg::InitWndSelect( const vector<ScDPLabelDataRef>& rLabels ) size_t nLabelCount = rLabels.size(); if (nLabelCount > MAX_LABELS) nLabelCount = MAX_LABELS; - size_t nLast = (nLabelCount > PAGE_SIZE) ? (PAGE_SIZE - 1) : (nLabelCount - 1); aLabelDataArr.clear(); aLabelDataArr.reserve( nLabelCount ); for ( size_t i=0; i < nLabelCount; i++ ) { aLabelDataArr.push_back(*rLabels[i]); - - if ( i <= nLast ) - { - aWndSelect.AddField(aLabelDataArr[i].getDisplayName(), i); - aSelectArr[i].reset( new ScDPFuncData( aLabelDataArr[i].mnCol, aLabelDataArr[i].mnFuncMask ) ); - } + aWndSelect.AddField(aLabelDataArr[i].getDisplayName(), i); + ScDPFuncDataRef p(new ScDPFuncData(aLabelDataArr[i].mnCol, aLabelDataArr[i].mnFuncMask)); + aSelectArr.push_back(p); } + aWndSelect.ResetScrollBar(); } - //---------------------------------------------------------------------------- -void ScDPLayoutDlg::InitWnd( PivotField* pArr, long nCount, ScDPFieldType eType ) +void ScDPLayoutDlg::InitFieldWindow( const vector<PivotField>& rFields, ScDPFieldType eType ) { - if ( pArr && (eType != TYPE_SELECT) ) - { - ScDPFuncDataVec* pInitArr = NULL; - ScDPFieldWindow* pInitWnd = NULL; - BOOL bDataArr = FALSE; - - switch ( eType ) - { - case TYPE_PAGE: - pInitArr = &aPageArr; - pInitWnd = &aWndPage; - break; + ScDPFuncDataVec* pInitArr = GetFieldDataArray(eType); + ScDPFieldControlBase* pInitWnd = GetFieldWindow(eType); - case TYPE_COL: - pInitArr = &aColArr; - pInitWnd = &aWndCol; - break; + if (!pInitArr || !pInitWnd) + return; - case TYPE_ROW: - pInitArr = &aRowArr; - pInitWnd = &aWndRow; - break; + vector<PivotField>::const_iterator itr = rFields.begin(), itrEnd = rFields.end(); + for (; itr != itrEnd; ++itr) + { + SCCOL nCol = itr->nCol; + USHORT nMask = itr->nFuncMask; + if (nCol == PIVOT_DATA_FIELD) + continue; - case TYPE_DATA: - pInitArr = &aDataArr; - pInitWnd = &aWndData; - bDataArr = TRUE; - break; - default: - break; - } + size_t nFieldIndex = pInitArr->size(); + ScDPFuncDataRef p(new ScDPFuncData(nCol, nMask, itr->maFieldRef)); + pInitArr->push_back(p); - if ( pInitArr && pInitWnd ) + if (eType == TYPE_DATA) { - long j=0; - for ( long i=0; (i<nCount); i++ ) + // data field - we need to concatenate function name with the field name. + ScDPLabelData* pData = GetLabelData(nCol); + DBG_ASSERT( pData, "ScDPLabelData not found" ); + if (pData) { - SCCOL nCol = pArr[i].nCol; - USHORT nMask = pArr[i].nFuncMask; - - if ( nCol != PIVOT_DATA_FIELD ) + OUString aStr = pData->maLayoutName; + if (!aStr.getLength()) { - (*pInitArr)[j].reset( new ScDPFuncData( nCol, nMask, pArr[i].maFieldRef ) ); - - if ( !bDataArr ) - { - pInitWnd->AddField( GetLabelString( nCol ), j ); - } - else - { - ScDPLabelData* pData = GetLabelData( nCol ); - DBG_ASSERT( pData, "ScDPLabelData not found" ); - if (pData) - { - OUString aStr = pData->maLayoutName; - if (!aStr.getLength()) - { - USHORT nInitMask = (*pInitArr)[j]->mnFuncMask; - aStr = GetFuncString(nInitMask, pData->mbIsValue); - aStr += pData->maName; - } - - pInitWnd->AddField( aStr, j ); - - pData->mnFuncMask = nMask; - } - } - ++j; + USHORT nInitMask = pInitArr->back()->mnFuncMask; + aStr = GetFuncString(nInitMask, pData->mbIsValue); + aStr += pData->maName; } + + pInitWnd->AddField(aStr, nFieldIndex); + pData->mnFuncMask = nMask; } -// Do not redraw here -> first the FixedText has to get its mnemonic char -// pInitWnd->Redraw(); } + else + pInitWnd->AddField(GetLabelString(nCol), nFieldIndex); } + pInitWnd->ResetScrollBar(); } - //---------------------------------------------------------------------------- void ScDPLayoutDlg::InitFocus() @@ -508,24 +421,10 @@ void ScDPLayoutDlg::InitFocus() void ScDPLayoutDlg::InitFields() { InitWndSelect(thePivotData.maLabelArray); - InitWnd( thePivotData.aPageArr, static_cast<long>(thePivotData.nPageCount), TYPE_PAGE ); - InitWnd( thePivotData.aColArr, static_cast<long>(thePivotData.nColCount), TYPE_COL ); - InitWnd( thePivotData.aRowArr, static_cast<long>(thePivotData.nRowCount), TYPE_ROW ); - InitWnd( thePivotData.aDataArr, static_cast<long>(thePivotData.nDataCount), TYPE_DATA ); - - size_t nLabels = thePivotData.maLabelArray.size(); - aSlider.SetPageSize( PAGE_SIZE ); - aSlider.SetVisibleSize( PAGE_SIZE ); - aSlider.SetLineSize( LINE_SIZE ); - aSlider.SetRange( Range( 0, static_cast<long>(((nLabels+LINE_SIZE-1)/LINE_SIZE)*LINE_SIZE) ) ); - - if ( nLabels > PAGE_SIZE ) - { - aSlider.SetEndScrollHdl( LINK( this, ScDPLayoutDlg, ScrollHdl ) ); - aSlider.Show(); - } - else - aSlider.Hide(); + InitFieldWindow(thePivotData.maPageFields, TYPE_PAGE); + InitFieldWindow(thePivotData.maColFields, TYPE_COL); + InitFieldWindow(thePivotData.maRowFields, TYPE_ROW); + InitFieldWindow(thePivotData.maDataFields, TYPE_DATA); } //---------------------------------------------------------------------------- @@ -533,60 +432,21 @@ void ScDPLayoutDlg::InitFields() void ScDPLayoutDlg::AddField( size_t nFromIndex, ScDPFieldType eToType, const Point& rAtPos ) { ScDPFuncData fData( *(aSelectArr[nFromIndex]) ); - size_t nAt = 0; - ScDPFieldWindow* toWnd = NULL; - ScDPFieldWindow* rmWnd1 = NULL; - ScDPFieldWindow* rmWnd2 = NULL; - ScDPFuncDataVec* toArr = NULL; + size_t nAt = 0; + ScDPFieldControlBase* toWnd = GetFieldWindow(eToType); + ScDPFieldControlBase* rmWnd1 = NULL; + ScDPFieldControlBase* rmWnd2 = NULL; + GetOtherFieldWindows(eToType, rmWnd1, rmWnd2); + + ScDPFuncDataVec* toArr = GetFieldDataArray(eToType); ScDPFuncDataVec* rmArr1 = NULL; ScDPFuncDataVec* rmArr2 = NULL; - BOOL bDataArr = FALSE; + GetOtherDataArrays(eToType, rmArr1, rmArr2); - switch ( eToType ) - { - case TYPE_PAGE: - toWnd = &aWndPage; - rmWnd1 = &aWndRow; - rmWnd2 = &aWndCol; - toArr = &aPageArr; - rmArr1 = &aRowArr; - rmArr2 = &aColArr; - break; - - case TYPE_COL: - toWnd = &aWndCol; - rmWnd1 = &aWndPage; - rmWnd2 = &aWndRow; - toArr = &aColArr; - rmArr1 = &aPageArr; - rmArr2 = &aRowArr; - break; - - case TYPE_ROW: - toWnd = &aWndRow; - rmWnd1 = &aWndPage; - rmWnd2 = &aWndCol; - toArr = &aRowArr; - rmArr1 = &aPageArr; - rmArr2 = &aColArr; - break; - - case TYPE_DATA: - toWnd = &aWndData; - toArr = &aDataArr; - bDataArr = TRUE; - break; - - default: - { - // added to avoid warnings - } - } + bool bDataArr = eToType == TYPE_DATA; bool bAllowed = IsOrientationAllowed( fData.mnCol, eToType ); - if ( bAllowed - && (toArr->back().get() == NULL) - && (!Contains( toArr, fData.mnCol, nAt )) ) + if ( bAllowed && (!Contains( toArr, fData.mnCol, nAt )) ) { // ggF. in anderem Fenster entfernen if ( rmArr1 ) @@ -643,107 +503,111 @@ void ScDPLayoutDlg::AddField( size_t nFromIndex, ScDPFieldType eToType, const Po } } - -//---------------------------------------------------------------------------- - -void ScDPLayoutDlg::MoveField( ScDPFieldType eFromType, size_t nFromIndex, ScDPFieldType eToType, const Point& rAtPos ) +void ScDPLayoutDlg::AppendField(size_t nFromIndex, ScDPFieldType eToType) { - if ( eFromType == TYPE_SELECT ) - AddField( nFromIndex, eToType, rAtPos ); - else if ( eFromType != eToType ) - { - ScDPFieldWindow* fromWnd = NULL; - ScDPFieldWindow* toWnd = NULL; - ScDPFieldWindow* rmWnd1 = NULL; - ScDPFieldWindow* rmWnd2 = NULL; - ScDPFuncDataVec* fromArr = NULL; - ScDPFuncDataVec* toArr = NULL; - ScDPFuncDataVec* rmArr1 = NULL; - ScDPFuncDataVec* rmArr2 = NULL; - size_t nAt = 0; - BOOL bDataArr = FALSE; + ScDPFuncData aFuncData = *aSelectArr[nFromIndex]; - switch ( eFromType ) - { - case TYPE_PAGE: - fromWnd = &aWndPage; - fromArr = &aPageArr; - break; - - case TYPE_COL: - fromWnd = &aWndCol; - fromArr = &aColArr; - break; + size_t nAt = 0; + ScDPFieldControlBase* toWnd = GetFieldWindow(eToType); + ScDPFieldControlBase* rmWnd1 = NULL; + ScDPFieldControlBase* rmWnd2 = NULL; + GetOtherFieldWindows(eToType, rmWnd1, rmWnd2); - case TYPE_ROW: - fromWnd = &aWndRow; - fromArr = &aRowArr; - break; + ScDPFuncDataVec* toArr = GetFieldDataArray(eToType); + ScDPFuncDataVec* rmArr1 = NULL; + ScDPFuncDataVec* rmArr2 = NULL; + GetOtherDataArrays(eToType, rmArr1, rmArr2); - case TYPE_DATA: - fromWnd = &aWndData; - fromArr = &aDataArr; - break; + bool bDataArr = eToType == TYPE_DATA; - default: + if ( (!Contains( toArr, aFuncData.mnCol, nAt )) ) + { + // ggF. in anderem Fenster entfernen + if ( rmArr1 ) + { + if ( Contains( rmArr1, aFuncData.mnCol, nAt ) ) { - // added to avoid warnings + rmWnd1->DelField( nAt ); + Remove( rmArr1, nAt ); } } - - switch ( eToType ) + if ( rmArr2 ) { - case TYPE_PAGE: - toWnd = &aWndPage; - toArr = &aPageArr; - rmWnd1 = &aWndCol; - rmWnd2 = &aWndRow; - rmArr1 = &aColArr; - rmArr2 = &aRowArr; - break; - - case TYPE_COL: - toWnd = &aWndCol; - toArr = &aColArr; - rmWnd1 = &aWndPage; - rmWnd2 = &aWndRow; - rmArr1 = &aPageArr; - rmArr2 = &aRowArr; - break; + if ( Contains( rmArr2, aFuncData.mnCol, nAt ) ) + { + rmWnd2->DelField( nAt ); + Remove( rmArr2, nAt ); + } + } - case TYPE_ROW: - toWnd = &aWndRow; - toArr = &aRowArr; - rmWnd1 = &aWndPage; - rmWnd2 = &aWndCol; - rmArr1 = &aPageArr; - rmArr2 = &aColArr; - break; + ScDPLabelData& rData = aLabelDataArr[nFromIndex+nOffset]; + size_t nAddedAt = 0; - case TYPE_DATA: - toWnd = &aWndData; - toArr = &aDataArr; - bDataArr = TRUE; - break; + if ( !bDataArr ) + { + if ( toWnd->AppendField(rData.getDisplayName(), nAddedAt) ) + { + Insert( toArr, aFuncData, nAddedAt ); + toWnd->GrabFocus(); + } + } + else + { + ScDPLabelData* p = GetLabelData(aFuncData.mnCol); + OUString aStr = p->maLayoutName; + USHORT nMask = aFuncData.mnFuncMask; + if (!aStr.getLength()) + { + aStr = GetFuncString(nMask); + aStr += p->maName; + } - default: + if ( toWnd->AppendField(aStr, nAddedAt) ) { - // added to avoid warnings + aFuncData.mnFuncMask = nMask; + Insert( toArr, aFuncData, nAddedAt ); + toWnd->GrabFocus(); } } + } +} + +//---------------------------------------------------------------------------- + +void ScDPLayoutDlg::MoveField( ScDPFieldType eFromType, size_t nFromIndex, ScDPFieldType eToType, const Point& rAtPos ) +{ + if ( eFromType == TYPE_SELECT ) + AddField( nFromIndex, eToType, rAtPos ); + else if ( eFromType != eToType ) + { + ScDPFieldControlBase* fromWnd = GetFieldWindow(eFromType); + ScDPFieldControlBase* toWnd = GetFieldWindow(eToType); + + ScDPFieldControlBase* rmWnd1 = NULL; + ScDPFieldControlBase* rmWnd2 = NULL; + GetOtherFieldWindows(eToType, rmWnd1, rmWnd2); + + ScDPFuncDataVec* fromArr = GetFieldDataArray(eFromType); + ScDPFuncDataVec* toArr = GetFieldDataArray(eToType); + + ScDPFuncDataVec* rmArr1 = NULL; + ScDPFuncDataVec* rmArr2 = NULL; + GetOtherDataArrays(eToType, rmArr1, rmArr2); + + bool bDataArr = eToType == TYPE_DATA; if ( fromArr && toArr && fromWnd && toWnd ) { ScDPFuncData fData( *((*fromArr)[nFromIndex]) ); - bool bAllowed = IsOrientationAllowed( fData.mnCol, eToType ); + + size_t nAt = 0; if ( bAllowed && Contains( fromArr, fData.mnCol, nAt ) ) { fromWnd->DelField( nAt ); Remove( fromArr, nAt ); - if ( (toArr->back().get() == NULL) - && (!Contains( toArr, fData.mnCol, nAt )) ) + if (!Contains( toArr, fData.mnCol, nAt )) { size_t nAddedAt = 0; if ( !bDataArr ) @@ -800,47 +664,156 @@ void ScDPLayoutDlg::MoveField( ScDPFieldType eFromType, size_t nFromIndex, ScDPF } else // -> eFromType == eToType { - ScDPFieldWindow* theWnd = NULL; - ScDPFuncDataVec* theArr = NULL; + ScDPFieldControlBase* theWnd = GetFieldWindow(eFromType); + ScDPFuncDataVec* theArr = GetFieldDataArray(eFromType); size_t nAt = 0; - size_t nToIndex = 0; Point aToPos; - BOOL bDataArr = FALSE; + BOOL bDataArr = eFromType == TYPE_DATA; - switch ( eFromType ) + ScDPFuncData fData( *((*theArr)[nFromIndex]) ); + + if ( Contains( theArr, fData.mnCol, nAt ) ) { - case TYPE_PAGE: - theWnd = &aWndPage; - theArr = &aPageArr; - break; + size_t nToIndex = 0; + aToPos = DlgPos2WndPos( rAtPos, *theWnd ); + theWnd->GetExistingIndex( aToPos, nToIndex ); - case TYPE_COL: - theWnd = &aWndCol; - theArr = &aColArr; - break; + if ( nToIndex != nAt ) + { + size_t nAddedAt = 0; - case TYPE_ROW: - theWnd = &aWndRow; - theArr = &aRowArr; - break; + theWnd->DelField( nAt ); + Remove( theArr, nAt ); - case TYPE_DATA: - theWnd = &aWndData; - theArr = &aDataArr; - bDataArr = TRUE; - break; + if ( !bDataArr ) + { + if ( theWnd->AddField( GetLabelString( fData.mnCol ), + aToPos, + nAddedAt ) ) + { + Insert( theArr, fData, nAddedAt ); + } + } + else + { + ScDPLabelData* p = GetLabelData(fData.mnCol); + OUString aStr = p->maLayoutName; + USHORT nMask = fData.mnFuncMask; + if (!aStr.getLength()) + { + aStr = GetFuncString(nMask); + aStr += p->maName; + } - default: + if ( theWnd->AddField( aStr, + DlgPos2WndPos( rAtPos, *theWnd ), + nAddedAt ) ) + { + fData.mnFuncMask = nMask; + Insert( theArr, fData, nAddedAt ); + } + } + } + } + } +} + +void ScDPLayoutDlg::MoveFieldToEnd( ScDPFieldType eFromType, size_t nFromIndex, ScDPFieldType eToType ) +{ + if ( eFromType == TYPE_SELECT ) + AppendField( nFromIndex, eToType ); + else if ( eFromType != eToType ) + { + ScDPFieldControlBase* fromWnd = GetFieldWindow(eFromType); + ScDPFieldControlBase* toWnd = GetFieldWindow(eToType); + + ScDPFieldControlBase* rmWnd1 = NULL; + ScDPFieldControlBase* rmWnd2 = NULL; + GetOtherFieldWindows(eToType, rmWnd1, rmWnd2); + + ScDPFuncDataVec* fromArr = GetFieldDataArray(eFromType); + ScDPFuncDataVec* toArr = GetFieldDataArray(eToType); + + ScDPFuncDataVec* rmArr1 = NULL; + ScDPFuncDataVec* rmArr2 = NULL; + GetOtherDataArrays(eToType, rmArr1, rmArr2); + + bool bDataArr = eToType == TYPE_DATA; + + if ( fromArr && toArr && fromWnd && toWnd ) + { + ScDPFuncData fData( *((*fromArr)[nFromIndex]) ); + + size_t nAt = 0; + if ( Contains( fromArr, fData.mnCol, nAt ) ) { - // added to avoid warnings + fromWnd->DelField( nAt ); + Remove( fromArr, nAt ); + + if (!Contains( toArr, fData.mnCol, nAt )) + { + size_t nAddedAt = 0; + if ( !bDataArr ) + { + // ggF. in anderem Fenster entfernen + if ( rmArr1 ) + { + if ( Contains( rmArr1, fData.mnCol, nAt ) ) + { + rmWnd1->DelField( nAt ); + Remove( rmArr1, nAt ); + } + } + if ( rmArr2 ) + { + if ( Contains( rmArr2, fData.mnCol, nAt ) ) + { + rmWnd2->DelField( nAt ); + Remove( rmArr2, nAt ); + } + } + + if ( toWnd->AppendField( GetLabelString( fData.mnCol ), nAddedAt ) ) + { + Insert( toArr, fData, nAddedAt ); + toWnd->GrabFocus(); + } + } + else + { + ScDPLabelData* p = GetLabelData(fData.mnCol); + OUString aStr = p->maLayoutName; + USHORT nMask = fData.mnFuncMask; + if (!aStr.getLength()) + { + aStr = GetFuncString(nMask); + aStr += p->maName; + } + + if ( toWnd->AppendField(aStr, nAddedAt) ) + { + fData.mnFuncMask = nMask; + Insert( toArr, fData, nAddedAt ); + toWnd->GrabFocus(); + } + } + } } } + } + else // -> eFromType == eToType + { + ScDPFieldControlBase* theWnd = GetFieldWindow(eFromType); + ScDPFuncDataVec* theArr = GetFieldDataArray(eFromType); + size_t nAt = 0; + Point aToPos; + BOOL bDataArr = eFromType == TYPE_DATA; ScDPFuncData fData( *((*theArr)[nFromIndex]) ); if ( Contains( theArr, fData.mnCol, nAt ) ) { - aToPos = DlgPos2WndPos( rAtPos, *theWnd ); + size_t nToIndex = 0; theWnd->GetExistingIndex( aToPos, nToIndex ); if ( nToIndex != nAt ) @@ -852,9 +825,7 @@ void ScDPLayoutDlg::MoveField( ScDPFieldType eFromType, size_t nFromIndex, ScDPF if ( !bDataArr ) { - if ( theWnd->AddField( GetLabelString( fData.mnCol ), - aToPos, - nAddedAt ) ) + if ( theWnd->AppendField(GetLabelString( fData.mnCol ), nAddedAt) ) { Insert( theArr, fData, nAddedAt ); } @@ -870,9 +841,7 @@ void ScDPLayoutDlg::MoveField( ScDPFieldType eFromType, size_t nFromIndex, ScDPF aStr += p->maName; } - if ( theWnd->AddField( aStr, - DlgPos2WndPos( rAtPos, *theWnd ), - nAddedAt ) ) + if ( theWnd->AppendField(aStr, nAddedAt) ) { fData.mnFuncMask = nMask; Insert( theArr, fData, nAddedAt ); @@ -887,25 +856,17 @@ void ScDPLayoutDlg::MoveField( ScDPFieldType eFromType, size_t nFromIndex, ScDPF void ScDPLayoutDlg::RemoveField( ScDPFieldType eFromType, size_t nIndex ) { - ScDPFuncDataVec* pArr = NULL; - switch( eFromType ) - { - case TYPE_PAGE: pArr = &aPageArr; break; - case TYPE_COL: pArr = &aColArr; break; - case TYPE_ROW: pArr = &aRowArr; break; - case TYPE_DATA: pArr = &aDataArr; break; - default: - { - // added to avoid warnings - } - } + ScDPFuncDataVec* pArr = GetFieldDataArray(eFromType); if( pArr ) { - ScDPFieldWindow& rWnd = GetFieldWindow( eFromType ); - rWnd.DelField( nIndex ); - Remove( pArr, nIndex ); - if( rWnd.IsEmpty() ) InitFocus(); + ScDPFieldControlBase* pWnd = GetFieldWindow( eFromType ); + if (pWnd) + { + pWnd->DelField( nIndex ); + Remove( pArr, nIndex ); + if( pWnd->IsEmpty() ) InitFocus(); + } } } @@ -919,44 +880,42 @@ void ScDPLayoutDlg::NotifyMouseButtonUp( const Point& rAt ) ScDPFieldType eDnDToType = TYPE_SELECT; Point aPos = ScreenToOutputPixel( rAt ); - BOOL bDel = FALSE; + bool bDel = false; if ( aRectPage.IsInside( aPos ) ) { eDnDToType = TYPE_PAGE; - bDel = FALSE; } else if ( aRectCol.IsInside( aPos ) ) { eDnDToType = TYPE_COL; - bDel = FALSE; } else if ( aRectRow.IsInside( aPos ) ) { eDnDToType = TYPE_ROW; - bDel = FALSE; } else if ( aRectData.IsInside( aPos ) ) { eDnDToType = TYPE_DATA; - bDel = FALSE; } else if ( aRectSelect.IsInside( aPos ) ) { eDnDToType = TYPE_SELECT; - bDel = TRUE; } else - bDel = TRUE; + bDel = true; - if ( bDel ) - RemoveField( eDnDFromType, nDnDFromIndex ); + if (bDel) + { + // We don't remove any buttons from the select field. + if (eDnDFromType != TYPE_SELECT) + RemoveField( eDnDFromType, nDnDFromIndex ); + } else MoveField( eDnDFromType, nDnDFromIndex, eDnDToType, aPos ); } } - //---------------------------------------------------------------------------- PointerStyle ScDPLayoutDlg::NotifyMouseMove( const Point& rAt ) @@ -1006,7 +965,6 @@ PointerStyle ScDPLayoutDlg::NotifyMouseMove( const Point& rAt ) return ePtr; } - //---------------------------------------------------------------------------- PointerStyle ScDPLayoutDlg::NotifyMouseButtonDown( ScDPFieldType eType, size_t nFieldIndex ) @@ -1017,23 +975,11 @@ PointerStyle ScDPLayoutDlg::NotifyMouseButtonDown( ScDPFieldType eType, size_t n return lclGetPointerForField( eType ); } - //---------------------------------------------------------------------------- void ScDPLayoutDlg::NotifyDoubleClick( ScDPFieldType eType, size_t nFieldIndex ) { - ScDPFuncDataVec* pArr = NULL; - switch ( eType ) - { - case TYPE_PAGE: pArr = &aPageArr; break; - case TYPE_COL: pArr = &aColArr; break; - case TYPE_ROW: pArr = &aRowArr; break; - case TYPE_DATA: pArr = &aDataArr; break; - default: - { - // added to avoid warnings - } - } + ScDPFuncDataVec* pArr = GetFieldDataArray(eType); if ( pArr ) { @@ -1140,7 +1086,8 @@ void ScDPLayoutDlg::NotifyFieldFocus( ScDPFieldType eType, BOOL bGotFocus ) // #128113# The TestTool may set the focus into an empty field. // Then the Remove/Options buttons must be disabled. - if ( bEnable && bGotFocus && GetFieldWindow( eType ).IsEmpty() ) + ScDPFieldControlBase* pWnd = GetFieldWindow(eType); + if ( bEnable && bGotFocus && pWnd && pWnd->IsEmpty() ) bEnable = FALSE; aBtnRemove.Enable( bEnable ); @@ -1151,16 +1098,18 @@ void ScDPLayoutDlg::NotifyFieldFocus( ScDPFieldType eType, BOOL bGotFocus ) //---------------------------------------------------------------------------- -void ScDPLayoutDlg::NotifyMoveField( ScDPFieldType eToType ) +void ScDPLayoutDlg::NotifyMoveFieldToEnd( ScDPFieldType eToType ) { - ScDPFieldWindow& rWnd = GetFieldWindow( eLastActiveType ); - if( (eToType != TYPE_SELECT) && !rWnd.IsEmpty() ) + ScDPFieldControlBase* pWnd = GetFieldWindow(eLastActiveType); + ScDPFieldControlBase* pToWnd = GetFieldWindow(eToType); + if (pWnd && pToWnd && (eToType != TYPE_SELECT) && !pWnd->IsEmpty()) { - MoveField( eLastActiveType, rWnd.GetSelectedField(), eToType, GetFieldWindow( eToType ).GetLastPosition() ); - if( rWnd.IsEmpty() ) + MoveFieldToEnd(eLastActiveType, pWnd->GetSelectedField(), eToType); + + if( pWnd->IsEmpty() ) NotifyFieldFocus( eToType, TRUE ); else - rWnd.GrabFocus(); + pWnd->GrabFocus(); if( eLastActiveType == TYPE_SELECT ) aWndSelect.SelectNext(); } @@ -1176,25 +1125,6 @@ void ScDPLayoutDlg::NotifyRemoveField( ScDPFieldType eType, size_t nFieldIndex ) RemoveField( eType, nFieldIndex ); } -//---------------------------------------------------------------------------- - -BOOL ScDPLayoutDlg::NotifyMoveSlider( USHORT nKeyCode ) -{ - long nOldPos = aSlider.GetThumbPos(); - switch( nKeyCode ) - { - case KEY_HOME: aSlider.DoScroll( 0 ); break; - case KEY_END: aSlider.DoScroll( aSlider.GetRangeMax() ); break; - case KEY_UP: - case KEY_LEFT: aSlider.DoScrollAction( SCROLL_LINEUP ); break; - case KEY_DOWN: - case KEY_RIGHT: aSlider.DoScrollAction( SCROLL_LINEDOWN ); break; - } - return nOldPos != aSlider.GetThumbPos(); -} - -//---------------------------------------------------------------------------- - void ScDPLayoutDlg::Deactivate() { /* #107616# If the dialog has been deactivated (click into document), the LoseFocus @@ -1208,24 +1138,22 @@ void ScDPLayoutDlg::Deactivate() BOOL ScDPLayoutDlg::Contains( ScDPFuncDataVec* pArr, SCsCOL nCol, size_t& nAt ) { - if ( !pArr ) + if (!pArr || pArr->empty()) return FALSE; - BOOL bFound = FALSE; - size_t i = 0; - - while ( (i<pArr->size()) && ((*pArr)[i].get() != NULL) && !bFound ) + ScDPFuncDataVec::const_iterator itr, itrBeg = pArr->begin(), itrEnd = pArr->end(); + for (itr = itrBeg; itr != itrEnd; ++itr) { - bFound = ((*pArr)[i]->mnCol == nCol); - if ( bFound ) - nAt = i; - i++; + if ((*itr)->mnCol == nCol) + { + // found! + nAt = ::std::distance(itrBeg, itr); + return true; + } } - - return bFound; + return false; } - //---------------------------------------------------------------------------- void ScDPLayoutDlg::Remove( ScDPFuncDataVec* pArr, size_t nAt ) @@ -1234,32 +1162,22 @@ void ScDPLayoutDlg::Remove( ScDPFuncDataVec* pArr, size_t nAt ) return; pArr->erase( pArr->begin() + nAt ); - pArr->push_back( ScDPFuncDataRef() ); } - //---------------------------------------------------------------------------- void ScDPLayoutDlg::Insert( ScDPFuncDataVec* pArr, const ScDPFuncData& rFData, size_t nAt ) { - if ( !pArr || (nAt>=pArr->size()) ) + if (!pArr) return; - if ( (*pArr)[nAt].get() == NULL ) - { - (*pArr)[nAt].reset( new ScDPFuncData( rFData ) ); - } + ScDPFuncDataRef p (new ScDPFuncData(rFData)); + if (nAt >= pArr->size()) + pArr->push_back(p); else - { - if ( pArr->back().get() == NULL ) // mind. ein Slot frei? - { - pArr->insert( pArr->begin() + nAt, ScDPFuncDataRef( new ScDPFuncData( rFData ) ) ); - pArr->erase( pArr->end() - 1 ); - } - } + pArr->insert(pArr->begin() + nAt, p); } - //---------------------------------------------------------------------------- ScDPLabelData* ScDPLayoutDlg::GetLabelData( SCsCOL nCol, size_t* pnPos ) @@ -1276,7 +1194,6 @@ ScDPLabelData* ScDPLayoutDlg::GetLabelData( SCsCOL nCol, size_t* pnPos ) return pData; } - //---------------------------------------------------------------------------- String ScDPLayoutDlg::GetLabelString( SCsCOL nCol ) @@ -1351,7 +1268,6 @@ String ScDPLayoutDlg::GetFuncString( USHORT& rFuncMask, BOOL bIsValue ) return aStr; } - //---------------------------------------------------------------------------- Point ScDPLayoutDlg::DlgPos2WndPos( const Point& rPt, Window& rWnd ) @@ -1363,78 +1279,100 @@ Point ScDPLayoutDlg::DlgPos2WndPos( const Point& rPt, Window& rWnd ) return aWndPt; } - //---------------------------------------------------------------------------- void ScDPLayoutDlg::CalcWndSizes() { // row/column/data area sizes - aWndPage.SetSizePixel( Size( MAX_PAGEFIELDS * OWIDTH / 2, 2 * OHEIGHT ) ); - aWndRow.SetSizePixel( Size( OWIDTH, MAX_FIELDS * OHEIGHT ) ); - aWndCol.SetSizePixel( Size( MAX_FIELDS * OWIDTH / 2, 2 * OHEIGHT ) ); - aWndData.SetSizePixel( Size( MAX_FIELDS * OWIDTH / 2, MAX_FIELDS * OHEIGHT ) ); + long nFldW = FIELD_BTN_WIDTH; + long nFldH = FIELD_BTN_HEIGHT; + aWndData.SetSizePixel(Size(338, 185)); + aWndPage.SetSizePixel( + Size(aWndData.GetSizePixel().Width() + 85, + aWndCol.GetPosPixel().Y() - aWndPage.GetPosPixel().Y() - FIELD_AREA_GAP)); + aWndRow.SetSizePixel( + Size(aWndData.GetPosPixel().X()-aWndRow.GetPosPixel().X() - FIELD_AREA_GAP, + aWndData.GetSizePixel().Height())); + aWndCol.SetSizePixel( + Size(aWndData.GetPosPixel().X() - aWndCol.GetPosPixel().X() + aWndData.GetSizePixel().Width(), + aWndData.GetPosPixel().Y() - aWndCol.GetPosPixel().Y() - FIELD_AREA_GAP)); // #i29203# align right border of page window with data window long nDataPosX = aWndData.GetPosPixel().X() + aWndData.GetSizePixel().Width(); - aWndPage.SetPosPixel( Point( nDataPosX - aWndPage.GetSizePixel().Width(), aWndPage.GetPosPixel().Y() ) ); + aWndPage.SetPosPixel( + Point(nDataPosX - aWndPage.GetSizePixel().Width(), + aWndPage.GetPosPixel().Y())); // selection area - aWndSelect.SetSizePixel( Size( - 2 * OWIDTH + SSPACE, LINE_SIZE * OHEIGHT + (LINE_SIZE - 1) * SSPACE ) ); - - // scroll bar - Point aSliderPos( aWndSelect.GetPosPixel() ); - Size aSliderSize( aWndSelect.GetSizePixel() ); - aSliderPos.Y() += aSliderSize.Height() + SSPACE; - aSliderSize.Height() = GetSettings().GetStyleSettings().GetScrollBarSize(); - aSlider.SetPosSizePixel( aSliderPos, aSliderSize ); + long nLineSize = 10; // number of fields per column. + long nH = OUTER_MARGIN_VER + nLineSize* nFldH + nLineSize * ROW_FIELD_BTN_GAP; + nH += ROW_FIELD_BTN_GAP; + nH += GetSettings().GetStyleSettings().GetScrollBarSize() + OUTER_MARGIN_VER; + aWndSelect.SetSizePixel( + Size(2 * nFldW + ROW_FIELD_BTN_GAP + 10, nH)); aRectPage = Rectangle( aWndPage.GetPosPixel(), aWndPage.GetSizePixel() ); aRectRow = Rectangle( aWndRow.GetPosPixel(), aWndRow.GetSizePixel() ); aRectCol = Rectangle( aWndCol.GetPosPixel(), aWndCol.GetSizePixel() ); aRectData = Rectangle( aWndData.GetPosPixel(), aWndData.GetSizePixel() ); aRectSelect = Rectangle( aWndSelect.GetPosPixel(), aWndSelect.GetSizePixel() ); -} + aWndPage.CalcSize(); + aWndRow.CalcSize(); + aWndCol.CalcSize(); + aWndData.CalcSize(); + aWndSelect.CalcSize(); +} -//---------------------------------------------------------------------------- +namespace { -BOOL ScDPLayoutDlg::GetPivotArrays( PivotField* pPageArr, - PivotField* pColArr, - PivotField* pRowArr, - PivotField* pDataArr, - USHORT& rPageCount, - USHORT& rColCount, - USHORT& rRowCount, - USHORT& rDataCount ) +class PivotFieldInserter : public ::std::unary_function<void, boost::shared_ptr<ScDPFuncData> > { - BOOL bFit = TRUE; - USHORT i=0; + vector<PivotField>& mrFields; +public: + explicit PivotFieldInserter(vector<PivotField>& r, size_t nSize) : mrFields(r) + { + mrFields.reserve(nSize); + } - for ( i=0; (i<aDataArr.size()) && (aDataArr[i].get() != NULL ); i++ ) - lcl_FillToPivotField( pDataArr[i], *aDataArr[i] ); - rDataCount = i; + PivotFieldInserter(const PivotFieldInserter& r) : mrFields(r.mrFields) {} - for ( i=0; (i<aPageArr.size()) && (aPageArr[i].get() != NULL ); i++ ) - lcl_FillToPivotField( pPageArr[i], *aPageArr[i] ); - rPageCount = i; + void operator() (const ::boost::shared_ptr<ScDPFuncData>& p) + { + PivotField aField; + aField.nCol = p->mnCol; + aField.nFuncMask = p->mnFuncMask; + aField.maFieldRef = p->maFieldRef; + mrFields.push_back(aField); + } +}; - for ( i=0; (i<aColArr.size()) && (aColArr[i].get() != NULL ); i++ ) - lcl_FillToPivotField( pColArr[i], *aColArr[i] ); - rColCount = i; +} - for ( i=0; (i<aRowArr.size()) && (aRowArr[i].get() != NULL ); i++ ) - lcl_FillToPivotField( pRowArr[i], *aRowArr[i] ); - rRowCount = i; +bool ScDPLayoutDlg::GetPivotArrays( + vector<PivotField>& rPageFields, vector<PivotField>& rColFields, + vector<PivotField>& rRowFields, vector<PivotField>& rDataFields ) +{ + vector<PivotField> aPageFields; + for_each(aPageArr.begin(), aPageArr.end(), PivotFieldInserter(aPageFields, aPageArr.size())); - if ( rRowCount < aRowArr.size() ) - pRowArr[rRowCount++].nCol = PIVOT_DATA_FIELD; - else if ( rColCount < aColArr.size() ) - pColArr[rColCount++].nCol = PIVOT_DATA_FIELD; - else - bFit = FALSE; // kein Platz fuer Datenfeld + vector<PivotField> aColFields; + for_each(aColArr.begin(), aColArr.end(), PivotFieldInserter(aColFields, aColArr.size())); + + // default data pilot table always has an extra row field as a data layout field. + vector<PivotField> aRowFields; + for_each(aRowArr.begin(), aRowArr.end(), PivotFieldInserter(aRowFields, aRowArr.size()+1)); + aRowFields.push_back(PivotField(PIVOT_DATA_FIELD, 0)); - return bFit; + vector<PivotField> aDataFields; + for_each(aDataArr.begin(), aDataArr.end(), PivotFieldInserter(aDataFields, aDataArr.size())); + + rPageFields.swap(aPageFields); + rColFields.swap(aColFields); + rRowFields.swap(aRowFields); + rDataFields.swap(aDataFields); + + return true; } void ScDPLayoutDlg::UpdateSrcRange() @@ -1469,20 +1407,100 @@ void ScDPLayoutDlg::UpdateSrcRange() aWndCol.ClearFields(); aWndPage.ClearFields(); - for (size_t i = 0; i < MAX_LABELS; ++i) - aSelectArr[i].reset(); + aSelectArr.clear(); + aRowArr.clear(); + aColArr.clear(); + aDataArr.clear(); + aPageArr.clear(); + + InitFields(); +} + +ScDPFieldControlBase* ScDPLayoutDlg::GetFieldWindow(ScDPFieldType eType) +{ + switch (eType) + { + case TYPE_PAGE: + return &aWndPage; + case TYPE_COL: + return &aWndCol; + case TYPE_ROW: + return &aWndRow; + case TYPE_DATA: + return &aWndData; + case TYPE_SELECT: + return &aWndSelect; + default: + ; + } + return NULL; +} - for (size_t i = 0; i < MAX_FIELDS; ++i) +void ScDPLayoutDlg::GetOtherFieldWindows(ScDPFieldType eType, ScDPFieldControlBase*& rpWnd1, ScDPFieldControlBase*& rpWnd2) +{ + rpWnd1 = NULL; + rpWnd2 = NULL; + switch (eType) { - aRowArr[i].reset(); - aColArr[i].reset(); - aDataArr[i].reset(); + case TYPE_PAGE: + rpWnd1 = &aWndRow; + rpWnd2 = &aWndCol; + break; + case TYPE_COL: + rpWnd1 = &aWndPage; + rpWnd2 = &aWndRow; + break; + case TYPE_ROW: + rpWnd1 = &aWndPage; + rpWnd2 = &aWndCol; + break; + default: + ; } +} - for (size_t i = 0; i < MAX_PAGEFIELDS; ++i) - aPageArr[i].reset(); +ScDPLayoutDlg::ScDPFuncDataVec* ScDPLayoutDlg::GetFieldDataArray(ScDPFieldType eType) +{ + switch (eType) + { + case TYPE_PAGE: + return &aPageArr; + case TYPE_COL: + return &aColArr; + case TYPE_ROW: + return &aRowArr; + case TYPE_DATA: + return &aDataArr; + case TYPE_SELECT: + return &aSelectArr; + default: + ; + } + return NULL; +} - InitFields(); +void ScDPLayoutDlg::GetOtherDataArrays( + ScDPFieldType eType, ScDPFuncDataVec*& rpArr1, ScDPFuncDataVec*& rpArr2) +{ + rpArr1 = NULL; + rpArr2 = NULL; + switch (eType) + { + case TYPE_PAGE: + rpArr1 = &aRowArr; + rpArr2 = &aColArr; + break; + case TYPE_COL: + rpArr1 = &aPageArr; + rpArr2 = &aRowArr; + break; + case TYPE_ROW: + rpArr1 = &aPageArr; + rpArr2 = &aColArr; + break; + default: + ; + } } //---------------------------------------------------------------------------- @@ -1509,7 +1527,6 @@ void ScDPLayoutDlg::SetReference( const ScRange& rRef, ScDocument* pDocP ) } } - //---------------------------------------------------------------------------- void ScDPLayoutDlg::SetActive() @@ -1538,17 +1555,19 @@ void ScDPLayoutDlg::SetActive() IMPL_LINK( ScDPLayoutDlg, ClickHdl, PushButton *, pBtn ) { + ScDPFieldControlBase* pWnd = GetFieldWindow( eLastActiveType ); + if (!pWnd) + return 0; + if( pBtn == &aBtnRemove ) { - ScDPFieldWindow& rWnd = GetFieldWindow( eLastActiveType ); - RemoveField( eLastActiveType, rWnd.GetSelectedField() ); - if( !rWnd.IsEmpty() ) rWnd.GrabFocus(); + RemoveField( eLastActiveType, pWnd->GetSelectedField() ); + if( !pWnd->IsEmpty() ) pWnd->GrabFocus(); } else if( pBtn == &aBtnOptions ) { - ScDPFieldWindow& rWnd = GetFieldWindow( eLastActiveType ); - NotifyDoubleClick( eLastActiveType, rWnd.GetSelectedField() ); - rWnd.GrabFocus(); + NotifyDoubleClick( eLastActiveType, pWnd->GetSelectedField() ); + pWnd->GrabFocus(); } return 0; } @@ -1562,169 +1581,158 @@ IMPL_LINK( ScDPLayoutDlg, OkHdl, OKButton *, EMPTYARG ) BOOL bToNewTable = (aLbOutPos.GetSelectEntryPos() == 1); USHORT nResult = !bToNewTable ? aAdrDest.Parse( aOutPosStr, pDoc, pDoc->GetAddressConvention() ) : 0; - if ( bToNewTable - || ( (aOutPosStr.Len() > 0) && (SCA_VALID == (nResult & SCA_VALID)) ) ) + if (!bToNewTable && (aOutPosStr.Len() == 0 || (nResult & SCA_VALID) != SCA_VALID)) { - //@BugID 54702 Enablen/Disablen nur noch in Basisklasse - //SFX_APPWINDOW->Enable(); + // Invalid reference. Bail out. + if ( !aBtnMore.GetState() ) + aBtnMore.SetState(true); - ScPivotParam theOutParam; - PivotPageFieldArr aPageFieldArr; - PivotFieldArr aColFieldArr; - PivotFieldArr aRowFieldArr; - PivotFieldArr aDataFieldArr; - USHORT nPageCount; - USHORT nColCount; - USHORT nRowCount; - USHORT nDataCount; - - BOOL bFit = GetPivotArrays( aPageFieldArr, aColFieldArr, aRowFieldArr, aDataFieldArr, - nPageCount, nColCount, nRowCount, nDataCount ); - if ( bFit ) - { - ScDPSaveData* pOldSaveData = xDlgDPObject->GetSaveData(); - - ScRange aOutRange( aAdrDest ); // bToNewTable is passed separately - - ScDPSaveData aSaveData; - aSaveData.SetIgnoreEmptyRows( aBtnIgnEmptyRows.IsChecked() ); - aSaveData.SetRepeatIfEmpty( aBtnDetectCat.IsChecked() ); - aSaveData.SetColumnGrand( aBtnTotalCol.IsChecked() ); - aSaveData.SetRowGrand( aBtnTotalRow.IsChecked() ); - aSaveData.SetFilterButton( aBtnFilter.IsChecked() ); - aSaveData.SetDrillDown( aBtnDrillDown.IsChecked() ); - - uno::Reference<sheet::XDimensionsSupplier> xSource = xDlgDPObject->GetSource(); - - ScDPObject::ConvertOrientation( aSaveData, aPageFieldArr, nPageCount, - sheet::DataPilotFieldOrientation_PAGE, NULL, 0, 0, xSource, FALSE ); - ScDPObject::ConvertOrientation( aSaveData, aColFieldArr, nColCount, - sheet::DataPilotFieldOrientation_COLUMN, NULL, 0, 0, xSource, FALSE ); - ScDPObject::ConvertOrientation( aSaveData, aRowFieldArr, nRowCount, - sheet::DataPilotFieldOrientation_ROW, NULL, 0, 0, xSource, FALSE ); - ScDPObject::ConvertOrientation( aSaveData, aDataFieldArr, nDataCount, - sheet::DataPilotFieldOrientation_DATA, NULL, 0, 0, xSource, FALSE, - aColFieldArr, nColCount, aRowFieldArr, nRowCount, aPageFieldArr, nPageCount ); - - for( ScDPLabelDataVec::const_iterator aIt = aLabelDataArr.begin(), aEnd = aLabelDataArr.end(); aIt != aEnd; ++aIt ) - { - if( ScDPSaveDimension* pDim = aSaveData.GetExistingDimensionByName( aIt->maName ) ) - { - pDim->SetUsedHierarchy( aIt->mnUsedHier ); - pDim->SetShowEmpty( aIt->mbShowAll ); - pDim->SetSortInfo( &aIt->maSortInfo ); - pDim->SetLayoutInfo( &aIt->maLayoutInfo ); - pDim->SetAutoShowInfo( &aIt->maShowInfo ); - ScDPSaveDimension* pOldDim = NULL; - if (pOldSaveData) - { - // Transfer the existing layout names to new dimension instance. - pOldDim = pOldSaveData->GetExistingDimensionByName(aIt->maName); - if (pOldDim) - { - const OUString* pLayoutName = pOldDim->GetLayoutName(); - if (pLayoutName) - pDim->SetLayoutName(*pLayoutName); + ErrorBox(this, WinBits(WB_OK | WB_DEF_OK), ScGlobal::GetRscString(STR_INVALID_TABREF)).Execute(); + aEdOutPos.GrabFocus(); + return 0; + } - const OUString* pSubtotalName = pOldDim->GetSubtotalName(); - if (pSubtotalName) - pDim->SetSubtotalName(*pSubtotalName); - } - } + ScPivotParam theOutParam; + vector<PivotField> aPageFields; + vector<PivotField> aColFields; + vector<PivotField> aRowFields; + vector<PivotField> aDataFields; - bool bManualSort = ( aIt->maSortInfo.Mode == sheet::DataPilotFieldSortMode::MANUAL ); + // Convert an array of function data into an array of pivot field data. + bool bFit = GetPivotArrays(aPageFields, aColFields, aRowFields, aDataFields); - // visibility of members - for (vector<ScDPLabelData::Member>::const_iterator itr = aIt->maMembers.begin(), itrEnd = aIt->maMembers.end(); - itr != itrEnd; ++itr) - { - ScDPSaveMember* pMember = pDim->GetMemberByName(itr->maName); + if (!bFit) + { + // General data pilot table error. Bail out. + ErrorBox(this, WinBits(WB_OK | WB_DEF_OK), ScGlobal::GetRscString(STR_PIVOT_ERROR)).Execute(); + return 0; + } - // #i40054# create/access members only if flags are not default - // (or in manual sorting mode - to keep the order) - if (bManualSort || !itr->mbVisible || !itr->mbShowDetails) - { - pMember->SetIsVisible(itr->mbVisible); - pMember->SetShowDetails(itr->mbShowDetails); - } - if (pOldDim) - { - // Transfer the existing layout name. - ScDPSaveMember* pOldMember = pOldDim->GetMemberByName(itr->maName); - if (pOldMember) - { - const OUString* pLayoutName = pOldMember->GetLayoutName(); - if (pLayoutName) - pMember->SetLayoutName(*pLayoutName); - } - } - } - } - } - ScDPSaveDimension* pDim = aSaveData.GetDataLayoutDimension(); - if (pDim && pOldSaveData) + ScDPSaveData* pOldSaveData = xDlgDPObject->GetSaveData(); + + ScRange aOutRange( aAdrDest ); // bToNewTable is passed separately + + ScDPSaveData aSaveData; + aSaveData.SetIgnoreEmptyRows( aBtnIgnEmptyRows.IsChecked() ); + aSaveData.SetRepeatIfEmpty( aBtnDetectCat.IsChecked() ); + aSaveData.SetColumnGrand( aBtnTotalCol.IsChecked() ); + aSaveData.SetRowGrand( aBtnTotalRow.IsChecked() ); + aSaveData.SetFilterButton( aBtnFilter.IsChecked() ); + aSaveData.SetDrillDown( aBtnDrillDown.IsChecked() ); + + uno::Reference<sheet::XDimensionsSupplier> xSource = xDlgDPObject->GetSource(); + + ScDPObject::ConvertOrientation( + aSaveData, aPageFields, sheet::DataPilotFieldOrientation_PAGE, xSource ); + ScDPObject::ConvertOrientation( + aSaveData, aColFields, sheet::DataPilotFieldOrientation_COLUMN, xSource ); + ScDPObject::ConvertOrientation( + aSaveData, aRowFields, sheet::DataPilotFieldOrientation_ROW, xSource ); + ScDPObject::ConvertOrientation( + aSaveData, aDataFields, sheet::DataPilotFieldOrientation_DATA, xSource, + &aColFields, &aRowFields, &aPageFields ); + + for( ScDPLabelDataVec::const_iterator aIt = aLabelDataArr.begin(), aEnd = aLabelDataArr.end(); aIt != aEnd; ++aIt ) + { + if( ScDPSaveDimension* pDim = aSaveData.GetExistingDimensionByName( aIt->maName ) ) + { + pDim->SetUsedHierarchy( aIt->mnUsedHier ); + pDim->SetShowEmpty( aIt->mbShowAll ); + pDim->SetSortInfo( &aIt->maSortInfo ); + pDim->SetLayoutInfo( &aIt->maLayoutInfo ); + pDim->SetAutoShowInfo( &aIt->maShowInfo ); + ScDPSaveDimension* pOldDim = NULL; + if (pOldSaveData) { - ScDPSaveDimension* pOldDim = pOldSaveData->GetDataLayoutDimension(); + // Transfer the existing layout names to new dimension instance. + pOldDim = pOldSaveData->GetExistingDimensionByName(aIt->maName); if (pOldDim) { const OUString* pLayoutName = pOldDim->GetLayoutName(); if (pLayoutName) pDim->SetLayoutName(*pLayoutName); + + const OUString* pSubtotalName = pOldDim->GetSubtotalName(); + if (pSubtotalName) + pDim->SetSubtotalName(*pSubtotalName); } } - USHORT nWhichPivot = SC_MOD()->GetPool().GetWhich( SID_PIVOT_TABLE ); - ScPivotItem aOutItem( nWhichPivot, &aSaveData, &aOutRange, bToNewTable ); - - bRefInputMode = FALSE; // to allow deselecting when switching sheets - - SetDispatcherLock( FALSE ); - SwitchToDocument(); + bool bManualSort = ( aIt->maSortInfo.Mode == sheet::DataPilotFieldSortMode::MANUAL ); - // #95513# don't hide the dialog before executing the slot, instead it is used as - // parent for message boxes in ScTabViewShell::GetDialogParent - - const SfxPoolItem* pRet = GetBindings().GetDispatcher()->Execute( - SID_PIVOT_TABLE, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD, &aOutItem, 0L, 0L ); - - bool bSuccess = true; - if (pRet) + // visibility of members + for (vector<ScDPLabelData::Member>::const_iterator itr = aIt->maMembers.begin(), itrEnd = aIt->maMembers.end(); + itr != itrEnd; ++itr) { - const SfxBoolItem* pItem = dynamic_cast<const SfxBoolItem*>(pRet); - if (pItem) - bSuccess = pItem->GetValue(); - } - if (bSuccess) - // Table successfully inserted. - Close(); - else - { - // Table insertion failed. Keep the dialog open. - bRefInputMode = true; - SetDispatcherLock(true); + ScDPSaveMember* pMember = pDim->GetMemberByName(itr->maName); + + // #i40054# create/access members only if flags are not default + // (or in manual sorting mode - to keep the order) + if (bManualSort || !itr->mbVisible || !itr->mbShowDetails) + { + pMember->SetIsVisible(itr->mbVisible); + pMember->SetShowDetails(itr->mbShowDetails); + } + if (pOldDim) + { + // Transfer the existing layout name. + ScDPSaveMember* pOldMember = pOldDim->GetMemberByName(itr->maName); + if (pOldMember) + { + const OUString* pLayoutName = pOldMember->GetLayoutName(); + if (pLayoutName) + pMember->SetLayoutName(*pLayoutName); + } + } } } - else + } + ScDPSaveDimension* pDim = aSaveData.GetDataLayoutDimension(); + if (pDim && pOldSaveData) + { + ScDPSaveDimension* pOldDim = pOldSaveData->GetDataLayoutDimension(); + if (pOldDim) { - ErrorBox( this, WinBits( WB_OK | WB_DEF_OK ), - ScGlobal::GetRscString( STR_PIVOT_ERROR ) - ).Execute(); + const OUString* pLayoutName = pOldDim->GetLayoutName(); + if (pLayoutName) + pDim->SetLayoutName(*pLayoutName); } } + + USHORT nWhichPivot = SC_MOD()->GetPool().GetWhich( SID_PIVOT_TABLE ); + ScPivotItem aOutItem( nWhichPivot, &aSaveData, &aOutRange, bToNewTable ); + + bRefInputMode = FALSE; // to allow deselecting when switching sheets + + SetDispatcherLock( FALSE ); + SwitchToDocument(); + + // #95513# don't hide the dialog before executing the slot, instead it is used as + // parent for message boxes in ScTabViewShell::GetDialogParent + + const SfxPoolItem* pRet = GetBindings().GetDispatcher()->Execute( + SID_PIVOT_TABLE, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD, &aOutItem, 0L, 0L ); + + bool bSuccess = true; + if (pRet) + { + const SfxBoolItem* pItem = dynamic_cast<const SfxBoolItem*>(pRet); + if (pItem) + bSuccess = pItem->GetValue(); + } + if (bSuccess) + // Table successfully inserted. + Close(); else { - if ( !aBtnMore.GetState() ) - aBtnMore.SetState( TRUE ); - - ErrorBox( this, WinBits( WB_OK | WB_DEF_OK ), - ScGlobal::GetRscString( STR_INVALID_TABREF ) - ).Execute(); - aEdOutPos.GrabFocus(); + // Table insertion failed. Keep the dialog open. + bRefInputMode = true; + SetDispatcherLock(true); } + return 0; } - //---------------------------------------------------------------------------- IMPL_LINK( ScDPLayoutDlg, CancelHdl, CancelButton *, EMPTYARG ) @@ -1733,7 +1741,6 @@ IMPL_LINK( ScDPLayoutDlg, CancelHdl, CancelButton *, EMPTYARG ) return 0; } - //---------------------------------------------------------------------------- IMPL_LINK( ScDPLayoutDlg, MoreClickHdl, MoreButton *, EMPTYARG ) @@ -1765,7 +1772,6 @@ IMPL_LINK( ScDPLayoutDlg, MoreClickHdl, MoreButton *, EMPTYARG ) return 0; } - //---------------------------------------------------------------------------- IMPL_LINK( ScDPLayoutDlg, EdModifyHdl, Edit *, EMPTYARG ) @@ -1794,14 +1800,12 @@ IMPL_LINK( ScDPLayoutDlg, EdModifyHdl, Edit *, EMPTYARG ) return 0; } - IMPL_LINK( ScDPLayoutDlg, EdInModifyHdl, Edit *, EMPTYARG ) { UpdateSrcRange(); return 0; } - //---------------------------------------------------------------------------- IMPL_LINK( ScDPLayoutDlg, SelAreaHdl, ListBox *, EMPTYARG ) @@ -1828,35 +1832,6 @@ IMPL_LINK( ScDPLayoutDlg, SelAreaHdl, ListBox *, EMPTYARG ) return 0; } - -//---------------------------------------------------------------------------- - -IMPL_LINK( ScDPLayoutDlg, ScrollHdl, ScrollBar *, EMPTYARG ) -{ - long nNewOffset = aSlider.GetThumbPos(); - long nOffsetDiff = nNewOffset - nOffset; - nOffset = nNewOffset; - - size_t nFields = std::min< size_t >( aLabelDataArr.size() - nOffset, PAGE_SIZE ); - - aWndSelect.ClearFields(); - - size_t i=0; - for ( i=0; i<nFields; i++ ) - { - const ScDPLabelData& rData = aLabelDataArr[nOffset+i]; - aWndSelect.AddField(rData.getDisplayName(), i); - aSelectArr[i].reset( new ScDPFuncData( rData.mnCol, rData.mnFuncMask ) ); - } - for ( ; i<aSelectArr.size(); i++ ) - aSelectArr[i].reset(); - - aWndSelect.ModifySelectionOffset( nOffsetDiff ); // adjusts selection & redraws - return 0; -} - -//---------------------------------------------------------------------------- - IMPL_LINK( ScDPLayoutDlg, GetFocusHdl, Control*, pCtrl ) { pEditActive = NULL; diff --git a/sc/source/ui/dbgui/scendlg.cxx b/sc/source/ui/dbgui/scendlg.cxx index 916bb0db8a34..4f0207fd948d 100644 --- a/sc/source/ui/dbgui/scendlg.cxx +++ b/sc/source/ui/dbgui/scendlg.cxx @@ -147,7 +147,7 @@ ScNewScenarioDlg::ScNewScenarioDlg( Window* pParent, const String& rName, BOOL b //------------------------------------------------------------------------ -__EXPORT ScNewScenarioDlg::~ScNewScenarioDlg() +ScNewScenarioDlg::~ScNewScenarioDlg() { } diff --git a/sc/source/ui/dbgui/scendlg.hrc b/sc/source/ui/dbgui/scendlg.hrc index 83818773bf5a..8fbf9a2d5b54 100644 --- a/sc/source/ui/dbgui/scendlg.hrc +++ b/sc/source/ui/dbgui/scendlg.hrc @@ -25,7 +25,7 @@ * ************************************************************************/ #include "sc.hrc" -//#define RID_SCDLG_NEWSCENARIO 256 + #define BTN_OK 1 #define BTN_CANCEL 2 #define BTN_HELP 3 diff --git a/sc/source/ui/dbgui/scendlg.src b/sc/source/ui/dbgui/scendlg.src index 40cfeb01b8ff..eb8e18532531 100644 --- a/sc/source/ui/dbgui/scendlg.src +++ b/sc/source/ui/dbgui/scendlg.src @@ -155,41 +155,3 @@ ModalDialog RID_SCDLG_NEWSCENARIO Text [ en-US ] = "Settings"; }; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/dbgui/scuiasciiopt.cxx b/sc/source/ui/dbgui/scuiasciiopt.cxx index 67817a140af2..acb6d73c4a85 100644 --- a/sc/source/ui/dbgui/scuiasciiopt.cxx +++ b/sc/source/ui/dbgui/scuiasciiopt.cxx @@ -127,17 +127,17 @@ static void load_Separators( OUString &sFieldSeparators, OUString &sTextSeparato const Any *pProperties; Sequence<OUString> aNames(9); OUString* pNames = aNames.getArray(); - ScLinkConfigItem aItem( OUString::createFromAscii( SEP_PATH ) ); - - pNames[0] = OUString::createFromAscii( MERGE_DELIMITERS ); - pNames[1] = OUString::createFromAscii( SEPARATORS ); - pNames[2] = OUString::createFromAscii( TEXT_SEPARATORS ); - pNames[3] = OUString::createFromAscii( FIXED_WIDTH ); - pNames[4] = OUString::createFromAscii( FROM_ROW ); - pNames[5] = OUString::createFromAscii( CHAR_SET ); - pNames[6] = OUString::createFromAscii( QUOTED_AS_TEXT ); - pNames[7] = OUString::createFromAscii( DETECT_SPECIAL_NUM ); - pNames[8] = OUString::createFromAscii( LANGUAGE ); + ScLinkConfigItem aItem( OUString(RTL_CONSTASCII_USTRINGPARAM( SEP_PATH )) ); + + pNames[0] = OUString(RTL_CONSTASCII_USTRINGPARAM( MERGE_DELIMITERS )); + pNames[1] = OUString(RTL_CONSTASCII_USTRINGPARAM( SEPARATORS )); + pNames[2] = OUString(RTL_CONSTASCII_USTRINGPARAM( TEXT_SEPARATORS )); + pNames[3] = OUString(RTL_CONSTASCII_USTRINGPARAM( FIXED_WIDTH )); + pNames[4] = OUString(RTL_CONSTASCII_USTRINGPARAM( FROM_ROW )); + pNames[5] = OUString(RTL_CONSTASCII_USTRINGPARAM( CHAR_SET )); + pNames[6] = OUString(RTL_CONSTASCII_USTRINGPARAM( QUOTED_AS_TEXT )); + pNames[7] = OUString(RTL_CONSTASCII_USTRINGPARAM( DETECT_SPECIAL_NUM )); + pNames[8] = OUString(RTL_CONSTASCII_USTRINGPARAM( LANGUAGE )); aValues = aItem.GetProperties( aNames ); pProperties = aValues.getConstArray(); if( pProperties[1].hasValue() ) @@ -178,17 +178,17 @@ static void save_Separators( Any *pProperties; Sequence<OUString> aNames(9); OUString* pNames = aNames.getArray(); - ScLinkConfigItem aItem( OUString::createFromAscii( SEP_PATH ) ); - - pNames[0] = OUString::createFromAscii( MERGE_DELIMITERS ); - pNames[1] = OUString::createFromAscii( SEPARATORS ); - pNames[2] = OUString::createFromAscii( TEXT_SEPARATORS ); - pNames[3] = OUString::createFromAscii( FIXED_WIDTH ); - pNames[4] = OUString::createFromAscii( FROM_ROW ); - pNames[5] = OUString::createFromAscii( CHAR_SET ); - pNames[6] = OUString::createFromAscii( QUOTED_AS_TEXT ); - pNames[7] = OUString::createFromAscii( DETECT_SPECIAL_NUM ); - pNames[8] = OUString::createFromAscii( LANGUAGE ); + ScLinkConfigItem aItem( OUString(RTL_CONSTASCII_USTRINGPARAM( SEP_PATH )) ); + + pNames[0] = OUString(RTL_CONSTASCII_USTRINGPARAM( MERGE_DELIMITERS )); + pNames[1] = OUString(RTL_CONSTASCII_USTRINGPARAM( SEPARATORS )); + pNames[2] = OUString(RTL_CONSTASCII_USTRINGPARAM( TEXT_SEPARATORS )); + pNames[3] = OUString(RTL_CONSTASCII_USTRINGPARAM( FIXED_WIDTH )); + pNames[4] = OUString(RTL_CONSTASCII_USTRINGPARAM( FROM_ROW )); + pNames[5] = OUString(RTL_CONSTASCII_USTRINGPARAM( CHAR_SET )); + pNames[6] = OUString(RTL_CONSTASCII_USTRINGPARAM( QUOTED_AS_TEXT )); + pNames[7] = OUString(RTL_CONSTASCII_USTRINGPARAM( DETECT_SPECIAL_NUM )); + pNames[8] = OUString(RTL_CONSTASCII_USTRINGPARAM( LANGUAGE )); aValues = aItem.GetProperties( aNames ); pProperties = aValues.getArray(); pProperties[1] <<= sFieldSeparators; @@ -274,9 +274,9 @@ ScImportAsciiDlg::ScImportAsciiDlg( Window* pParent,String aDatName, } SetText( aName ); - - OUString sFieldSeparators; - OUString sTextSeparators; + // Default options + OUString sFieldSeparators(RTL_CONSTASCII_USTRINGPARAM("\t")); + OUString sTextSeparators(mcTextSep); bool bMergeDelimiters = false; bool bFixedWidth = false; bool bQuotedFieldAsText = true; @@ -403,6 +403,7 @@ ScImportAsciiDlg::ScImportAsciiDlg( Window* pParent,String aDatName, aLbType.Disable(); // *** table box preview *** + maTableBox.Init(); maTableBox.SetUpdateTextHdl( LINK( this, ScImportAsciiDlg, UpdateTextHdl ) ); maTableBox.InitTypes( aLbType ); maTableBox.SetColTypeHdl( LINK( this, ScImportAsciiDlg, ColTypeHdl ) ); diff --git a/sc/source/ui/dbgui/scuiimoptdlg.cxx b/sc/source/ui/dbgui/scuiimoptdlg.cxx index 547983af83fe..a6ee4ce71cb8 100644 --- a/sc/source/ui/dbgui/scuiimoptdlg.cxx +++ b/sc/source/ui/dbgui/scuiimoptdlg.cxx @@ -69,10 +69,10 @@ private: USHORT ScDelimiterTable::GetCode( const String& rDel ) const { sal_Unicode nCode = 0; - xub_StrLen i = 0; if ( nCount >= 2 ) { + xub_StrLen i = 0; while ( i<nCount ) { if ( rDel == theDelTab.GetToken( i, cSep ) ) @@ -93,10 +93,10 @@ USHORT ScDelimiterTable::GetCode( const String& rDel ) const String ScDelimiterTable::GetDelimiter( sal_Unicode nCode ) const { String aStrDel; - xub_StrLen i = 0; if ( nCount >= 2 ) { + xub_StrLen i = 0; while ( i<nCount ) { if ( nCode == (sal_Unicode) theDelTab.GetToken( i+1, cSep ).ToInt32() ) @@ -242,7 +242,7 @@ ScImportOptionsDlg::ScImportOptionsDlg( //------------------------------------------------------------------------ -__EXPORT ScImportOptionsDlg::~ScImportOptionsDlg() +ScImportOptionsDlg::~ScImportOptionsDlg() { delete pFieldSepTab; delete pTextSepTab; diff --git a/sc/source/ui/dbgui/sfiltdlg.cxx b/sc/source/ui/dbgui/sfiltdlg.cxx index d66ff75d7530..1f455b52136f 100644 --- a/sc/source/ui/dbgui/sfiltdlg.cxx +++ b/sc/source/ui/dbgui/sfiltdlg.cxx @@ -109,7 +109,7 @@ ScSpecialFilterDlg::ScSpecialFilterDlg( SfxBindings* pB, SfxChildWindow* pCW, Wi //---------------------------------------------------------------------------- -__EXPORT ScSpecialFilterDlg::~ScSpecialFilterDlg() +ScSpecialFilterDlg::~ScSpecialFilterDlg() { USHORT nEntries = aLbFilterArea.GetEntryCount(); USHORT i; @@ -130,7 +130,7 @@ __EXPORT ScSpecialFilterDlg::~ScSpecialFilterDlg() //---------------------------------------------------------------------------- -void __EXPORT ScSpecialFilterDlg::Init( const SfxItemSet& rArgSet ) +void ScSpecialFilterDlg::Init( const SfxItemSet& rArgSet ) { const ScQueryItem& rQueryItem = (const ScQueryItem&) rArgSet.Get( nWhichQuery ); @@ -231,7 +231,7 @@ void __EXPORT ScSpecialFilterDlg::Init( const SfxItemSet& rArgSet ) //---------------------------------------------------------------------------- -BOOL __EXPORT ScSpecialFilterDlg::Close() +BOOL ScSpecialFilterDlg::Close() { if (pViewData) pViewData->GetDocShell()->CancelAutoDBRange(); diff --git a/sc/source/ui/dbgui/sortdlg.cxx b/sc/source/ui/dbgui/sortdlg.cxx index 0fbbe991e327..1651a7ab1dda 100644 --- a/sc/source/ui/dbgui/sortdlg.cxx +++ b/sc/source/ui/dbgui/sortdlg.cxx @@ -55,15 +55,15 @@ ScSortDlg::ScSortDlg( Window* pParent, AddTabPage( TP_FIELDS, ScTabPageSortFields::Create, 0 ); AddTabPage( TP_OPTIONS, ScTabPageSortOptions::Create, 0 ); #else - String fields = rtl::OUString::createFromAscii ("fields"); + String fields = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("fields")); AddTabPage( TP_FIELDS, fields, ScTabPageSortFields::Create, 0, FALSE, TAB_APPEND); - String options = rtl::OUString::createFromAscii ("options"); + String options = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("options")); AddTabPage( TP_OPTIONS, options, ScTabPageSortOptions::Create, 0, FALSE, TAB_APPEND); #endif FreeResource(); } -__EXPORT ScSortDlg::~ScSortDlg() +ScSortDlg::~ScSortDlg() { } diff --git a/sc/source/ui/dbgui/textimportoptions.src b/sc/source/ui/dbgui/textimportoptions.src index 69e2d69b3142..ad0a417c5519 100644 --- a/sc/source/ui/dbgui/textimportoptions.src +++ b/sc/source/ui/dbgui/textimportoptions.src @@ -107,4 +107,3 @@ ModalDialog RID_SCDLG_TEXT_IMPORT_OPTIONS Text [ en-US ] = "Detect special numbers (such as dates)." ; }; }; - diff --git a/sc/source/ui/dbgui/tpsort.cxx b/sc/source/ui/dbgui/tpsort.cxx index 7a54da38da03..547afd8517ba 100644 --- a/sc/source/ui/dbgui/tpsort.cxx +++ b/sc/source/ui/dbgui/tpsort.cxx @@ -81,7 +81,6 @@ static USHORT pSortRanges[] = * geloest. Wird eine Seite Aktiviert/Deaktiviert, so gleicht sie diese * Datenmember mit dem eigenen Zustand ab (->Activate()/Deactivate()). * - * 31.01.95: * Die Klasse SfxTabPage bietet mittlerweile ein Verfahren an: * * virtual BOOL HasExchangeSupport() const; -> return TRUE; @@ -138,7 +137,7 @@ ScTabPageSortFields::ScTabPageSortFields( Window* pParent, // ----------------------------------------------------------------------- -__EXPORT ScTabPageSortFields::~ScTabPageSortFields() +ScTabPageSortFields::~ScTabPageSortFields() { } @@ -180,14 +179,14 @@ void ScTabPageSortFields::Init() //------------------------------------------------------------------------ -USHORT* __EXPORT ScTabPageSortFields::GetRanges() +USHORT* ScTabPageSortFields::GetRanges() { return pSortRanges; } // ----------------------------------------------------------------------- -SfxTabPage* __EXPORT ScTabPageSortFields::Create( Window* pParent, +SfxTabPage* ScTabPageSortFields::Create( Window* pParent, const SfxItemSet& rArgSet ) { return ( new ScTabPageSortFields( pParent, rArgSet ) ); @@ -195,7 +194,7 @@ SfxTabPage* __EXPORT ScTabPageSortFields::Create( Window* pParent, // ----------------------------------------------------------------------- -void __EXPORT ScTabPageSortFields::Reset( const SfxItemSet& /* rArgSet */ ) +void ScTabPageSortFields::Reset( const SfxItemSet& /* rArgSet */ ) { bSortByRows = rSortData.bByRow; bHasHeader = rSortData.bHasHeader; @@ -263,7 +262,7 @@ void __EXPORT ScTabPageSortFields::Reset( const SfxItemSet& /* rArgSet */ ) // ----------------------------------------------------------------------- -BOOL __EXPORT ScTabPageSortFields::FillItemSet( SfxItemSet& rArgSet ) +BOOL ScTabPageSortFields::FillItemSet( SfxItemSet& rArgSet ) { ScSortParam theSortData = rSortData; if (pDlg) @@ -334,7 +333,7 @@ BOOL __EXPORT ScTabPageSortFields::FillItemSet( SfxItemSet& rArgSet ) // fuer Datenaustausch ohne Dialog-Umweg: (! noch zu tun !) // void ScTabPageSortFields::ActivatePage( const SfxItemSet& rSet ) -void __EXPORT ScTabPageSortFields::ActivatePage() +void ScTabPageSortFields::ActivatePage() { if ( pDlg ) { @@ -357,7 +356,7 @@ void __EXPORT ScTabPageSortFields::ActivatePage() // ----------------------------------------------------------------------- -int __EXPORT ScTabPageSortFields::DeactivatePage( SfxItemSet* pSetP ) +int ScTabPageSortFields::DeactivatePage( SfxItemSet* pSetP ) { if ( pDlg ) { @@ -577,8 +576,6 @@ ScTabPageSortOptions::ScTabPageSortOptions( Window* pParent, aLineDirection ( this, ScResId( FL_DIRECTION ) ), aBtnTopDown ( this, ScResId( BTN_TOP_DOWN ) ), aBtnLeftRight ( this, ScResId( BTN_LEFT_RIGHT ) ), -// aFtAreaLabel ( this, ScResId( FT_AREA_LABEL ) ), -// aFtArea ( this, ScResId( FT_AREA ) ), // #if ENABLE_LAYOUT_EXPERIMENTAL #undef this @@ -606,7 +603,7 @@ ScTabPageSortOptions::ScTabPageSortOptions( Window* pParent, // ----------------------------------------------------------------------- -__EXPORT ScTabPageSortOptions::~ScTabPageSortOptions() +ScTabPageSortOptions::~ScTabPageSortOptions() { USHORT nEntries = aLbOutPos.GetEntryCount(); @@ -700,10 +697,6 @@ void ScTabPageSortOptions::Init() theArea += theDbName; theArea += ')'; - //aFtArea.SetText( theArea ); - //theArea.Insert( aStrAreaLabel, 0 ); - //aFtAreaLabel.SetText( theArea ); - aBtnHeader.SetText( aStrColLabel ); } @@ -717,7 +710,7 @@ void ScTabPageSortOptions::Init() //------------------------------------------------------------------------ -USHORT* __EXPORT ScTabPageSortOptions::GetRanges() +USHORT* ScTabPageSortOptions::GetRanges() { return pSortRanges; } @@ -727,7 +720,7 @@ USHORT* __EXPORT ScTabPageSortOptions::GetRanges() #if ENABLE_LAYOUT_EXPERIMENTAL #undef SfxTabPage #endif /* ENABLE_LAYOUT_EXPERIMENTAL */ -SfxTabPage* __EXPORT ScTabPageSortOptions::Create( +SfxTabPage* ScTabPageSortOptions::Create( Window* pParent, const SfxItemSet& rArgSet ) { @@ -736,7 +729,7 @@ SfxTabPage* __EXPORT ScTabPageSortOptions::Create( // ----------------------------------------------------------------------- -void __EXPORT ScTabPageSortOptions::Reset( const SfxItemSet& /* rArgSet */ ) +void ScTabPageSortOptions::Reset( const SfxItemSet& /* rArgSet */ ) { if ( rSortData.bUserDef ) { @@ -806,7 +799,7 @@ void __EXPORT ScTabPageSortOptions::Reset( const SfxItemSet& /* rArgSet */ ) // ----------------------------------------------------------------------- -BOOL __EXPORT ScTabPageSortOptions::FillItemSet( SfxItemSet& rArgSet ) +BOOL ScTabPageSortOptions::FillItemSet( SfxItemSet& rArgSet ) { ScSortParam theSortData = rSortData; if (pDlg) @@ -856,7 +849,7 @@ BOOL __EXPORT ScTabPageSortOptions::FillItemSet( SfxItemSet& rArgSet ) // fuer Datenaustausch ohne Dialog-Umweg: (! noch zu tun !) // void ScTabPageSortOptions::ActivatePage( const SfxItemSet& rSet ) -void __EXPORT ScTabPageSortOptions::ActivatePage() +void ScTabPageSortOptions::ActivatePage() { if ( pDlg ) { @@ -879,7 +872,7 @@ void __EXPORT ScTabPageSortOptions::ActivatePage() // ----------------------------------------------------------------------- -int __EXPORT ScTabPageSortOptions::DeactivatePage( SfxItemSet* pSetP ) +int ScTabPageSortOptions::DeactivatePage( SfxItemSet* pSetP ) { BOOL bPosInputOk = TRUE; @@ -1015,7 +1008,7 @@ IMPL_LINK( ScTabPageSortOptions, SortDirHdl, RadioButton *, pBtn ) // ----------------------------------------------------------------------- -void __EXPORT ScTabPageSortOptions::EdOutPosModHdl( Edit* pEd ) +void ScTabPageSortOptions::EdOutPosModHdl( Edit* pEd ) { if ( pEd == &aEdOutPos ) { diff --git a/sc/source/ui/dbgui/tpsubt.cxx b/sc/source/ui/dbgui/tpsubt.cxx index b4d6519d3388..1893380071d9 100644 --- a/sc/source/ui/dbgui/tpsubt.cxx +++ b/sc/source/ui/dbgui/tpsubt.cxx @@ -93,7 +93,7 @@ ScTpSubTotalGroup::ScTpSubTotalGroup( Window* pParent, USHORT nResId, // ----------------------------------------------------------------------- -__EXPORT ScTpSubTotalGroup::~ScTpSubTotalGroup() +ScTpSubTotalGroup::~ScTpSubTotalGroup() { USHORT nCount = (USHORT)aLbColumns.GetEntryCount(); @@ -134,7 +134,7 @@ void ScTpSubTotalGroup::Init() //------------------------------------------------------------------------ -USHORT* __EXPORT ScTpSubTotalGroup::GetRanges() +USHORT* ScTpSubTotalGroup::GetRanges() { return pSubTotalsRanges; } @@ -439,19 +439,19 @@ IMPL_LINK( ScTpSubTotalGroup, CheckHdl, ListBox *, pLb ) //======================================================================== // Abgeleitete Gruppen-TabPages: -SfxTabPage* __EXPORT ScTpSubTotalGroup1::Create( Window* pParent, +SfxTabPage* ScTpSubTotalGroup1::Create( Window* pParent, const SfxItemSet& rArgSet ) { return ( new ScTpSubTotalGroup1( pParent, rArgSet ) ); } // ----------------------------------------------------------------------- -SfxTabPage* __EXPORT ScTpSubTotalGroup2::Create( Window* pParent, +SfxTabPage* ScTpSubTotalGroup2::Create( Window* pParent, const SfxItemSet& rArgSet ) { return ( new ScTpSubTotalGroup2( pParent, rArgSet ) ); } // ----------------------------------------------------------------------- -SfxTabPage* __EXPORT ScTpSubTotalGroup3::Create( Window* pParent, +SfxTabPage* ScTpSubTotalGroup3::Create( Window* pParent, const SfxItemSet& rArgSet ) { return ( new ScTpSubTotalGroup3( pParent, rArgSet ) ); } @@ -474,11 +474,11 @@ ScTpSubTotalGroup3::ScTpSubTotalGroup3( Window* pParent, const SfxItemSet& rArgS #define RESET(i) (ScTpSubTotalGroup::DoReset( (i), rArgSet )) -void __EXPORT ScTpSubTotalGroup1::Reset( const SfxItemSet& rArgSet ) { RESET(1); } +void ScTpSubTotalGroup1::Reset( const SfxItemSet& rArgSet ) { RESET(1); } -void __EXPORT ScTpSubTotalGroup2::Reset( const SfxItemSet& rArgSet ) { RESET(2); } +void ScTpSubTotalGroup2::Reset( const SfxItemSet& rArgSet ) { RESET(2); } -void __EXPORT ScTpSubTotalGroup3::Reset( const SfxItemSet& rArgSet ) { RESET(3); } +void ScTpSubTotalGroup3::Reset( const SfxItemSet& rArgSet ) { RESET(3); } #undef RESET @@ -486,11 +486,11 @@ void __EXPORT ScTpSubTotalGroup3::Reset( const SfxItemSet& rArgSet ) { RESET(3); #define FILLSET(i) (ScTpSubTotalGroup::DoFillItemSet( (i), rArgSet )) -BOOL __EXPORT ScTpSubTotalGroup1::FillItemSet( SfxItemSet& rArgSet ) { return FILLSET(1); } +BOOL ScTpSubTotalGroup1::FillItemSet( SfxItemSet& rArgSet ) { return FILLSET(1); } -BOOL __EXPORT ScTpSubTotalGroup2::FillItemSet( SfxItemSet& rArgSet ) { return FILLSET(2); } +BOOL ScTpSubTotalGroup2::FillItemSet( SfxItemSet& rArgSet ) { return FILLSET(2); } -BOOL __EXPORT ScTpSubTotalGroup3::FillItemSet( SfxItemSet& rArgSet ) { return FILLSET(3); } +BOOL ScTpSubTotalGroup3::FillItemSet( SfxItemSet& rArgSet ) { return FILLSET(3); } #undef FILL @@ -528,7 +528,7 @@ ScTpSubTotalOptions::ScTpSubTotalOptions( Window* pParent, // ----------------------------------------------------------------------- -__EXPORT ScTpSubTotalOptions::~ScTpSubTotalOptions() +ScTpSubTotalOptions::~ScTpSubTotalOptions() { } @@ -552,7 +552,7 @@ void ScTpSubTotalOptions::Init() // ----------------------------------------------------------------------- -SfxTabPage* __EXPORT ScTpSubTotalOptions::Create( Window* pParent, +SfxTabPage* ScTpSubTotalOptions::Create( Window* pParent, const SfxItemSet& rArgSet ) { return ( new ScTpSubTotalOptions( pParent, rArgSet ) ); @@ -560,7 +560,7 @@ SfxTabPage* __EXPORT ScTpSubTotalOptions::Create( Window* pParent // ----------------------------------------------------------------------- -void __EXPORT ScTpSubTotalOptions::Reset( const SfxItemSet& /* rArgSet */ ) +void ScTpSubTotalOptions::Reset( const SfxItemSet& /* rArgSet */ ) { aBtnPagebreak.Check ( rSubTotalData.bPagebreak ); aBtnCase.Check ( rSubTotalData.bCaseSens ); @@ -587,7 +587,7 @@ void __EXPORT ScTpSubTotalOptions::Reset( const SfxItemSet& /* rArgSet */ ) // ----------------------------------------------------------------------- -BOOL __EXPORT ScTpSubTotalOptions::FillItemSet( SfxItemSet& rArgSet ) +BOOL ScTpSubTotalOptions::FillItemSet( SfxItemSet& rArgSet ) { ScSubTotalParam theSubTotalData; // auslesen, wenn schon teilweise gefuellt SfxTabDialog* pDlg = GetTabDialog(); @@ -673,15 +673,15 @@ IMPL_LINK( ScTpSubTotalOptions, CheckHdl, CheckBox *, pBox ) return 0; } -__EXPORT ScTpSubTotalGroup1::~ScTpSubTotalGroup1() +ScTpSubTotalGroup1::~ScTpSubTotalGroup1() { } -__EXPORT ScTpSubTotalGroup2::~ScTpSubTotalGroup2() +ScTpSubTotalGroup2::~ScTpSubTotalGroup2() { } -__EXPORT ScTpSubTotalGroup3::~ScTpSubTotalGroup3() +ScTpSubTotalGroup3::~ScTpSubTotalGroup3() { } diff --git a/sc/source/ui/dbgui/validate.cxx b/sc/source/ui/dbgui/validate.cxx index 6eed9ab7fee0..13bb0728bb32 100644 --- a/sc/source/ui/dbgui/validate.cxx +++ b/sc/source/ui/dbgui/validate.cxx @@ -112,7 +112,7 @@ void ScTPValidationValue:: SetActiveHdl() } } -void ScTPValidationValue::RefInputStartPreHdl( ScRefEdit* pEdit, ScRefButton* pButton ) +void ScTPValidationValue::RefInputStartPreHdl( formula::RefEdit* pEdit, formula::RefButton* pButton ) { if ( ScValidationDlg *pValidationDlg = GetValidationDlg() ) { @@ -339,7 +339,7 @@ ScTPValidationValue::ScTPValidationValue( Window* pParent, const SfxItemSet& rAr FreeResource(); // list separator in formulas - String aListSep = ::GetScCompilerNativeSymbol( ocSep ); + String aListSep = ::ScCompiler::GetNativeSymbol( ocSep ); DBG_ASSERT( aListSep.Len() == 1, "ScTPValidationValue::ScTPValidationValue - list separator error" ); mcFmlaSep = aListSep.Len() ? aListSep.GetChar( 0 ) : ';'; m_btnRef.Hide(); // cell range picker @@ -570,7 +570,7 @@ void ScTPValidationValue::TidyListBoxes() if ( pWnd ) { - for ( std::list<Window*>::iterator i = alstOrder.begin(); i!=alstOrder.end(); i++ ) + for ( std::list<Window*>::iterator i = alstOrder.begin(); i!=alstOrder.end(); ++i ) { Window *pParent = (*i)->GetParent(); (*i)->SetParent( pWnd ); @@ -693,7 +693,7 @@ ScTPValidationHelp::ScTPValidationHelp( Window* pParent, // ----------------------------------------------------------------------- -__EXPORT ScTPValidationHelp::~ScTPValidationHelp() +ScTPValidationHelp::~ScTPValidationHelp() { } @@ -706,14 +706,14 @@ void ScTPValidationHelp::Init() //------------------------------------------------------------------------ -USHORT* __EXPORT ScTPValidationHelp::GetRanges() +USHORT* ScTPValidationHelp::GetRanges() { return pValueRanges; } // ----------------------------------------------------------------------- -SfxTabPage* __EXPORT ScTPValidationHelp::Create( Window* pParent, +SfxTabPage* ScTPValidationHelp::Create( Window* pParent, const SfxItemSet& rArgSet ) { return ( new ScTPValidationHelp( pParent, rArgSet ) ); @@ -721,7 +721,7 @@ SfxTabPage* __EXPORT ScTPValidationHelp::Create( Window* pParent, // ----------------------------------------------------------------------- -void __EXPORT ScTPValidationHelp::Reset( const SfxItemSet& rArgSet ) +void ScTPValidationHelp::Reset( const SfxItemSet& rArgSet ) { const SfxPoolItem* pItem; @@ -743,7 +743,7 @@ void __EXPORT ScTPValidationHelp::Reset( const SfxItemSet& rArgSet ) // ----------------------------------------------------------------------- -BOOL __EXPORT ScTPValidationHelp::FillItemSet( SfxItemSet& rArgSet ) +BOOL ScTPValidationHelp::FillItemSet( SfxItemSet& rArgSet ) { rArgSet.Put( SfxBoolItem( FID_VALID_SHOWHELP, aTsbHelp.GetState() == STATE_CHECK ) ); rArgSet.Put( SfxStringItem( FID_VALID_HELPTITLE, aEdtTitle.GetText() ) ); @@ -780,7 +780,7 @@ ScTPValidationError::ScTPValidationError( Window* pParent, // ----------------------------------------------------------------------- -__EXPORT ScTPValidationError::~ScTPValidationError() +ScTPValidationError::~ScTPValidationError() { } @@ -799,14 +799,14 @@ void ScTPValidationError::Init() //------------------------------------------------------------------------ -USHORT* __EXPORT ScTPValidationError::GetRanges() +USHORT* ScTPValidationError::GetRanges() { return pValueRanges; } // ----------------------------------------------------------------------- -SfxTabPage* __EXPORT ScTPValidationError::Create( Window* pParent, +SfxTabPage* ScTPValidationError::Create( Window* pParent, const SfxItemSet& rArgSet ) { return ( new ScTPValidationError( pParent, rArgSet ) ); @@ -814,7 +814,7 @@ SfxTabPage* __EXPORT ScTPValidationError::Create( Window* pParent, // ----------------------------------------------------------------------- -void __EXPORT ScTPValidationError::Reset( const SfxItemSet& rArgSet ) +void ScTPValidationError::Reset( const SfxItemSet& rArgSet ) { const SfxPoolItem* pItem; @@ -843,7 +843,7 @@ void __EXPORT ScTPValidationError::Reset( const SfxItemSet& rArgSet ) // ----------------------------------------------------------------------- -BOOL __EXPORT ScTPValidationError::FillItemSet( SfxItemSet& rArgSet ) +BOOL ScTPValidationError::FillItemSet( SfxItemSet& rArgSet ) { rArgSet.Put( SfxBoolItem( FID_VALID_SHOWERR, aTsbShow.GetState() == STATE_CHECK ) ); rArgSet.Put( SfxAllEnumItem( FID_VALID_ERRSTYLE, aLbAction.GetSelectEntryPos() ) ); @@ -970,7 +970,7 @@ void ScTPValidationValue::ScRefButtonEx::Click() if( ScTPValidationValue *pParent = dynamic_cast< ScTPValidationValue*>( GetParent() ) ) pParent->OnClick( this ); - ScRefButton::Click(); + formula::RefButton::Click(); } void ScTPValidationValue::OnClick( Button *pBtn ) diff --git a/sc/source/ui/dbgui/validate.src b/sc/source/ui/dbgui/validate.src index c861fbc200cb..0e1ea8403132 100644 --- a/sc/source/ui/dbgui/validate.src +++ b/sc/source/ui/dbgui/validate.src @@ -27,7 +27,6 @@ #include "validate.hrc" - TabDialog TAB_DLG_VALIDATION { OutputSize = TRUE ; @@ -62,9 +61,9 @@ TabDialog TAB_DLG_VALIDATION }; Text [ en-US ] = "Validity" ; }; -//<!--Added by PengYunQuan for Validity Cell Range Picker + #define OFFSET_X 30 -//-->Added by PengYunQuan for Validity Cell Range Picker + TabPage TP_VALIDATION_VALUES { Hide = TRUE ; @@ -74,19 +73,13 @@ TabPage TP_VALIDATION_VALUES FixedText FT_ALLOW { Pos = MAP_APPFONT ( 6 , 16 ) ; - //<!--Modified by PengYunQuan for Validity Cell Range Picker - //Size = MAP_APPFONT ( 70 , 8 ) ; Size = MAP_APPFONT ( 70 - OFFSET_X , 8 ) ; - //-->Modified by PengYunQuan for Validity Cell Range Picker Text [ en-US ] = "~Allow" ; }; ListBox LB_ALLOW { Border = TRUE ; - //<!--Modified by PengYunQuan for Validity Cell Range Picker - //Pos = MAP_APPFONT ( 80 , 14 ) ; Pos = MAP_APPFONT ( 80 - OFFSET_X , 14 ) ; - //-->Modified by PengYunQuan for Validity Cell Range Picker Size = MAP_APPFONT ( 90 , 80 ) ; TabStop = TRUE ; DropDown = TRUE ; @@ -105,19 +98,13 @@ TabPage TP_VALIDATION_VALUES FixedText FT_VALUE { Pos = MAP_APPFONT ( 6 , 58 ) ; - //<!--Modified by PengYunQuan for Validity Cell Range Picker - //Size = MAP_APPFONT ( 70 , 8 ) ; Size = MAP_APPFONT ( 70 - OFFSET_X , 8 ) ; - //-->Modified by PengYunQuan for Validity Cell Range Picker Text [ en-US ] = "~Data" ; }; ListBox LB_VALUE { Border = TRUE ; - //<!--Modified by PengYunQuan for Validity Cell Range Picker - //Pos = MAP_APPFONT ( 80 , 56 ) ; Pos = MAP_APPFONT ( 80 - OFFSET_X , 56 ) ; - //-->Modified by PengYunQuan for Validity Cell Range Picker Size = MAP_APPFONT ( 90 , 90 ) ; TabStop = TRUE ; DropDown = TRUE ; @@ -137,81 +124,54 @@ TabPage TP_VALIDATION_VALUES FixedText FT_MIN { Pos = MAP_APPFONT ( 6 , 76 ) ; - //<!--Modified by PengYunQuan for Validity Cell Range Picker - //Size = MAP_APPFONT ( 70 , 8 ) ; Size = MAP_APPFONT ( 70 - OFFSET_X , 8 ) ; - //-->Modified by PengYunQuan for Validity Cell Range Picker Text [ en-US ] = "~Minimum" ; }; Edit EDT_MIN { Border = TRUE ; - //<!--Modified by PengYunQuan for Validity Cell Range Picker - //Pos = MAP_APPFONT ( 80 , 74 ) ; - //Size = MAP_APPFONT ( 174 , 12 ) ; Pos = MAP_APPFONT ( 80 - OFFSET_X , 74 ) ; Size = MAP_APPFONT ( 90 , 12 ) ; - //-->Modified by PengYunQuan for Validity Cell Range Picker TabStop = TRUE ; }; MultiLineEdit EDT_LIST { Border = TRUE ; - //<!--Modified by PengYunQuan for Validity Cell Range Picker - //Pos = MAP_APPFONT ( 80 , 74 ) ; - //Size = MAP_APPFONT ( 174 , 105 ) ; Pos = MAP_APPFONT ( 80 - OFFSET_X , 74 ) ; Size = MAP_APPFONT ( 174 + OFFSET_X , 105 ) ; - //-->Modified by PengYunQuan for Validity Cell Range Picker VScroll = TRUE ; IgnoreTab = TRUE ; }; FixedText FT_MAX { Pos = MAP_APPFONT ( 6 , 92 ) ; - //<!--Modified by PengYunQuan for Validity Cell Range Picker - //Size = MAP_APPFONT ( 70 , 8 ) ; Size = MAP_APPFONT ( 70 - OFFSET_X , 8 ) ; - //-->Modified by PengYunQuan for Validity Cell Range Picker Text [ en-US ] = "Ma~ximum" ; }; Edit EDT_MAX { Border = TRUE ; - //<!--Modified by PengYunQuan for Validity Cell Range Picker - //Pos = MAP_APPFONT ( 80 , 90 ) ; - //Size = MAP_APPFONT ( 174 , 12 ) ; Pos = MAP_APPFONT ( 80 - OFFSET_X , 90 ) ; Size = MAP_APPFONT ( 90 , 12 ) ; - //-->Modified by PengYunQuan for Validity Cell Range Picker TabStop = TRUE ; }; CheckBox TSB_ALLOW_BLANKS { - //<!--Modified by PengYunQuan for Validity Cell Range Picker - //Pos = MAP_APPFONT ( 80 , 30 ) ; Pos = MAP_APPFONT ( 80 - OFFSET_X , 30 ) ; - //-->Modified by PengYunQuan for Validity Cell Range Picker Size = MAP_APPFONT ( 174 , 10 ) ; TabStop = TRUE ; Text [ en-US ] = "Allow ~blank cells" ; }; CheckBox CB_SHOWLIST { - //<!--Modified by PengYunQuan for Validity Cell Range Picker - //Pos = MAP_APPFONT ( 80 , 44 ) ; Pos = MAP_APPFONT ( 80 - OFFSET_X , 44 ) ; - //-->Modified by PengYunQuan for Validity Cell Range Picker Size = MAP_APPFONT ( 174 , 10 ) ; TabStop = TRUE ; Text [ en-US ] = "Show selection ~list" ; }; CheckBox CB_SORTLIST { - //<!--Modified by PengYunQuan for Validity Cell Range Picker - //Pos = MAP_APPFONT ( 90 , 58 ) ; Pos = MAP_APPFONT ( 90 - OFFSET_X , 58 ) ; - //-->Modified by PengYunQuan for Validity Cell Range Picker Size = MAP_APPFONT ( 164 , 10 ) ; TabStop = TRUE ; Text [ en-US ] = "Sor~t entries ascending" ; @@ -223,7 +183,6 @@ TabPage TP_VALIDATION_VALUES WordBreak = TRUE ; Text [ en-US ] = "A valid source can only consist of a contiguous selection of rows and columns, or a formula that results in an area or array."; }; - //<!--Added by PengYunQuan for Validity Cell Range Picker ImageButton RB_VALIDITY_REF { Pos = MAP_APPFONT ( 142 , 73 ) ; @@ -231,7 +190,6 @@ TabPage TP_VALIDATION_VALUES TabStop = TRUE ; QuickHelpText [ en-US ] = "Shrink" ; }; - //-->Added by PengYunQuan for Validity Cell Range Picker }; TabPage TP_VALIDATION_INPUTHELP @@ -360,48 +318,3 @@ TabPage TP_VALIDATION_ERROR }; Text [ en-US ] = "Error Alert" ; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/docshell/arealink.cxx b/sc/source/ui/docshell/arealink.cxx index 69a62985e02f..b4436040321f 100644 --- a/sc/source/ui/docshell/arealink.cxx +++ b/sc/source/ui/docshell/arealink.cxx @@ -96,13 +96,13 @@ ScAreaLink::ScAreaLink( SfxObjectShell* pShell, const String& rFile, SetRefreshControl( pImpl->m_pDocSh->GetDocument()->GetRefreshTimerControlAddress() ); } -__EXPORT ScAreaLink::~ScAreaLink() +ScAreaLink::~ScAreaLink() { StopRefreshTimer(); delete pImpl; } -void __EXPORT ScAreaLink::Edit(Window* pParent, const Link& /* rEndEditHdl */ ) +void ScAreaLink::Edit(Window* pParent, const Link& /* rEndEditHdl */ ) { // use own dialog instead of SvBaseLink::Edit... // DefModalDialogParent setzen, weil evtl. aus der DocShell beim ConvertFrom @@ -118,7 +118,7 @@ void __EXPORT ScAreaLink::Edit(Window* pParent, const Link& /* rEndEditHdl */ ) pDlg->StartExecuteModal( LINK( this, ScAreaLink, AreaEndEditHdl ) ); } -void __EXPORT ScAreaLink::DataChanged( const String&, +void ScAreaLink::DataChanged( const String&, const ::com::sun::star::uno::Any& ) { // bei bInCreate nichts tun, damit Update gerufen werden kann, um den Status im @@ -154,7 +154,7 @@ void __EXPORT ScAreaLink::DataChanged( const String&, } } -void __EXPORT ScAreaLink::Closed() +void ScAreaLink::Closed() { // Verknuepfung loeschen: Undo @@ -271,7 +271,6 @@ BOOL ScAreaLink::Refresh( const String& rNewFile, const String& rNewFilter, SfxMedium* pMed = new SfxMedium(aNewUrl, STREAM_STD_READ, FALSE, pFilter); ScDocShell* pSrcShell = new ScDocShell(SFX_CREATE_MODE_INTERNAL); -//REMOVE SvEmbeddedObjectRef aRef = pSrcShell; SfxObjectShellRef aRef = pSrcShell; pSrcShell->DoLoad(pMed); diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx index 4a5f68b3e658..1e4868eea978 100644 --- a/sc/source/ui/docshell/dbdocfun.cxx +++ b/sc/source/ui/docshell/dbdocfun.cxx @@ -1043,13 +1043,12 @@ BOOL ScDBDocFunc::DoSubTotals( SCTAB nTab, const ScSubTotalParam& rParam, ScOutlineTable* pUndoTab = NULL; ScRangeName* pUndoRange = NULL; ScDBCollection* pUndoDB = NULL; - SCTAB nTabCount = 0; // fuer Referenz-Undo if (bRecord) // alte Daten sichern { BOOL bOldFilter = bDo && rParam.bDoSort; - nTabCount = pDoc->GetTableCount(); + SCTAB nTabCount = pDoc->GetTableCount(); pUndoDoc = new ScDocument( SCDOCMODE_UNDO ); ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab ); if (pTable) @@ -1306,7 +1305,7 @@ BOOL ScDBDocFunc::DataPilotUpdate( ScDPObject* pOldObj, const ScDPObject* pNewOb if ( !pDestObj->GetName().Len() ) pDestObj->SetName( pDoc->GetDPCollection()->CreateNewName() ); - BOOL bOverflow = FALSE; + bool bOverflow = false; ScRange aNewOut = pDestObj->GetNewOutputRange( bOverflow ); //! test for overlap with other data pilot tables diff --git a/sc/source/ui/docshell/dbdocimp.cxx b/sc/source/ui/docshell/dbdocimp.cxx index 8400f1ad8b6f..5902b552634d 100644 --- a/sc/source/ui/docshell/dbdocimp.cxx +++ b/sc/source/ui/docshell/dbdocimp.cxx @@ -80,7 +80,6 @@ using namespace com::sun::star; #define SC_DBPROP_SELECTION "Selection" #define SC_DBPROP_CURSOR "Cursor" -// static void ScDBDocFunc::ShowInBeamer( const ScImportParam& rParam, SfxViewFrame* pFrame ) { // called after opening the database beamer @@ -92,7 +91,7 @@ void ScDBDocFunc::ShowInBeamer( const ScImportParam& rParam, SfxViewFrame* pFram uno::Reference<frame::XDispatchProvider> xDP(xFrame, uno::UNO_QUERY); uno::Reference<frame::XFrame> xBeamerFrame = xFrame->findFrame( - rtl::OUString::createFromAscii("_beamer"), + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_beamer")), frame::FrameSearchFlag::CHILDREN); if (xBeamerFrame.is()) { @@ -280,7 +279,6 @@ BOOL ScDBDocFunc::DoImport( SCTAB nTab, const ScImportParam& rParam, // progress bar // only text (title is still needed, for the cancel button) ScProgress aProgress( &rDocShell, ScGlobal::GetRscString(STR_UNDO_IMPORTDATA), 0 ); - USHORT nInserted = 0; uno::Reference<sdbc::XRowSet> xRowSet = uno::Reference<sdbc::XRowSet>( xResultSet, uno::UNO_QUERY ); @@ -290,7 +288,7 @@ BOOL ScDBDocFunc::DoImport( SCTAB nTab, const ScImportParam& rParam, bDispose = sal_True; xRowSet = uno::Reference<sdbc::XRowSet>( comphelper::getProcessServiceFactory()->createInstance( - rtl::OUString::createFromAscii( SC_SERVICE_ROWSET ) ), + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_SERVICE_ROWSET )) ), uno::UNO_QUERY); uno::Reference<beans::XPropertySet> xRowProp( xRowSet, uno::UNO_QUERY ); DBG_ASSERT( xRowProp.is(), "can't get RowSet" ); @@ -307,22 +305,22 @@ BOOL ScDBDocFunc::DoImport( SCTAB nTab, const ScImportParam& rParam, aAny <<= rtl::OUString( rParam.aDBName ); xRowProp->setPropertyValue( - rtl::OUString::createFromAscii(SC_DBPROP_DATASOURCENAME), aAny ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_DATASOURCENAME)), aAny ); aAny <<= rtl::OUString( rParam.aStatement ); xRowProp->setPropertyValue( - rtl::OUString::createFromAscii(SC_DBPROP_COMMAND), aAny ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_COMMAND)), aAny ); aAny <<= nType; xRowProp->setPropertyValue( - rtl::OUString::createFromAscii(SC_DBPROP_COMMANDTYPE), aAny ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_COMMANDTYPE)), aAny ); uno::Reference<sdb::XCompletedExecution> xExecute( xRowSet, uno::UNO_QUERY ); if ( xExecute.is() ) { uno::Reference<task::XInteractionHandler> xHandler( comphelper::getProcessServiceFactory()->createInstance( - rtl::OUString::createFromAscii( SC_SERVICE_INTHANDLER ) ), + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_SERVICE_INTHANDLER )) ), uno::UNO_QUERY); xExecute->executeWithCompletion( xHandler ); } @@ -380,6 +378,7 @@ BOOL ScDBDocFunc::DoImport( SCTAB nTab, const ScImportParam& rParam, BOOL bEnd = FALSE; if ( !bDoSelection ) xRowSet->beforeFirst(); + USHORT nInserted = 0; while ( !bEnd ) { // skip rows that are not selected diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx index 5a6d55e8f60f..7d040b269e9d 100644 --- a/sc/source/ui/docshell/docfunc.cxx +++ b/sc/source/ui/docshell/docfunc.cxx @@ -541,19 +541,20 @@ BOOL ScDocFunc::DetectiveRefresh( BOOL bAutomatic ) } static void lcl_collectAllPredOrSuccRanges( - const ScRangeList& rSrcRanges, vector<ScSharedTokenRef>& rRefTokens, ScDocShell& rDocShell, + const ScRangeList& rSrcRanges, vector<ScTokenRef>& rRefTokens, ScDocShell& rDocShell, bool bPred) { ScDocument* pDoc = rDocShell.GetDocument(); - vector<ScSharedTokenRef> aRefTokens; + vector<ScTokenRef> aRefTokens; ScRangeList aSrcRanges(rSrcRanges); - ScRange* p = aSrcRanges.First(); - if (!p) + if ( aSrcRanges.empty() ) return; + ScRange* p = aSrcRanges.front(); ScDetectiveFunc aDetFunc(pDoc, p->aStart.Tab()); ScRangeList aDestRanges; - for (; p; p = aSrcRanges.Next()) + for ( size_t i = 1, ListSize = aSrcRanges.size(); i < ListSize; ++i ) { + p = aSrcRanges[ i ]; if (bPred) { aDetFunc.GetAllPreds( @@ -568,12 +569,12 @@ static void lcl_collectAllPredOrSuccRanges( rRefTokens.swap(aRefTokens); } -void ScDocFunc::DetectiveCollectAllPreds(const ScRangeList& rSrcRanges, vector<ScSharedTokenRef>& rRefTokens) +void ScDocFunc::DetectiveCollectAllPreds(const ScRangeList& rSrcRanges, vector<ScTokenRef>& rRefTokens) { lcl_collectAllPredOrSuccRanges(rSrcRanges, rRefTokens, rDocShell, true); } -void ScDocFunc::DetectiveCollectAllSuccs(const ScRangeList& rSrcRanges, vector<ScSharedTokenRef>& rRefTokens) +void ScDocFunc::DetectiveCollectAllSuccs(const ScRangeList& rSrcRanges, vector<ScTokenRef>& rRefTokens) { lcl_collectAllPredOrSuccRanges(rSrcRanges, rRefTokens, rDocShell, false); } @@ -686,7 +687,6 @@ BOOL ScDocFunc::DeleteContents( const ScMarkData& rMark, USHORT nFlags, else { pDoc->DeleteSelection( nFlags, aMultiMark ); -// aMultiMark.MarkToSimple(); } // add undo action after drawing undo is complete (objects and note captions) @@ -700,10 +700,7 @@ BOOL ScDocFunc::DeleteContents( const ScMarkData& rMark, USHORT nFlags, else if (nExtFlags & SC_PF_LINES) lcl_PaintAbove( rDocShell, aExtendedRange ); // fuer Linien ueber dem Bereich -// rDocShell.UpdateOle(GetViewData()); //! an der View? aModificator.SetDocumentModified(); -//! CellContentChanged(); -//! ShowAllCursors(); return TRUE; } @@ -1332,14 +1329,8 @@ BOOL ScDocFunc::ApplyStyle( const ScMarkData& rMark, const String& rStyleName, } -// BOOL bPaintExt = pDoc->HasAttrib( aMultiRange, HASATTR_PAINTEXT ); -// pDoc->ApplySelectionPattern( rPattern, rMark ); - pDoc->ApplySelectionStyle( (ScStyleSheet&)*pStyleSheet, rMark ); -// if (!bPaintExt) -// bPaintExt = pDoc->HasAttrib( aMultiRange, HASATTR_PAINTEXT ); -// USHORT nExtFlags = bPaintExt ? SC_PF_LINES : 0; USHORT nExtFlags = 0; if (!AdjustRowHeight( aMultiRange )) rDocShell.PostPaint( aMultiRange, PAINT_GRID, nExtFlags ); @@ -1750,7 +1741,6 @@ BOOL ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark, rDocShell.PostPaint( nPaintStartX, nPaintStartY, i, nPaintEndX, nPaintEndY, i+nScenarioCount, nPaintFlags, nExtFlags ); } } - //aModificator.SetDocumentModified(); } else { @@ -2672,14 +2662,14 @@ void VBA_InsertModule( ScDocument& rDoc, SCTAB nTab, String& sModuleName, String sal_Int32 nNum = 0; String genModuleName; if ( sModuleName.Len() ) - sModuleName = sModuleName; + genModuleName = sModuleName; else { genModuleName = String::CreateFromAscii( "Sheet1" ); nNum = 1; } - while( xLib->hasByName( genModuleName ) ) - genModuleName = rtl::OUString::createFromAscii( "Sheet" ) + rtl::OUString::valueOf( ++nNum ); + while( xLib->hasByName( genModuleName ) ) + genModuleName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Sheet")) + rtl::OUString::valueOf( ++nNum ); uno::Any aSourceAny; rtl::OUString sTmpSource = sSource; @@ -2689,8 +2679,7 @@ void VBA_InsertModule( ScDocument& rDoc, SCTAB nTab, String& sModuleName, String uno::Reference< script::vba::XVBAModuleInfo > xVBAModuleInfo( xLib, uno::UNO_QUERY ); if ( xVBAModuleInfo.is() ) { - String sCodeName( genModuleName ); - rDoc.SetCodeName( nTab, sCodeName ); + rDoc.SetCodeName( nTab, genModuleName ); script::ModuleInfo sModuleInfo = lcl_InitModuleInfo( rDocSh, genModuleName ); xVBAModuleInfo->insertModuleInfo( genModuleName, sModuleInfo ); xLib->insertByName( genModuleName, aSourceAny ); @@ -3598,7 +3587,6 @@ BOOL ScDocFunc::ClearItems( const ScMarkData& rMark, const USHORT* pWhich, BOOL aMultiMark.MarkToMulti(); aMultiMark.GetMultiMarkArea( aMarkRange ); -// if (bRecord) if (bUndo) { SCTAB nStartTab = aMarkRange.aStart.Tab(); @@ -3639,7 +3627,6 @@ BOOL ScDocFunc::ChangeIndent( const ScMarkData& rMark, BOOL bIncrement, BOOL bAp ScRange aMarkRange; rMark.GetMultiMarkArea( aMarkRange ); -// if (bRecord) if (bUndo) { SCTAB nStartTab = aMarkRange.aStart.Tab(); @@ -3744,13 +3731,6 @@ BOOL ScDocFunc::AutoFormat( const ScRange& rRange, const ScMarkData* pTabMark, if (bSize) { -/* SCCOL nCols[2]; - nCols[0] = nStartCol; - nCols[1] = nEndCol; - SCROW nRows[2]; - nRows[0] = nStartRow; - nRows[1] = nEndRow; -*/ SCCOLROW nCols[2] = { nStartCol, nEndCol }; SCCOLROW nRows[2] = { nStartRow, nEndRow }; @@ -3827,7 +3807,7 @@ BOOL ScDocFunc::EnterMatrix( const ScRange& rRange, const ScMarkData* pTabMark, WaitObject aWait( rDocShell.GetActiveDialogParent() ); ScDocument* pUndoDoc = NULL; -// if (bRecord) // immer + if (bUndo) { //! auch bei Undo selektierte Tabellen beruecksichtigen @@ -3863,7 +3843,6 @@ BOOL ScDocFunc::EnterMatrix( const ScRange& rRange, const ScMarkData* pTabMark, pDoc->InsertMatrixFormula( nStartCol, nStartRow, nEndCol, nEndRow, aMark, rString, NULL, eGrammar); -// if (bRecord) // immer if (bUndo) { //! auch bei Undo selektierte Tabellen beruecksichtigen @@ -4045,7 +4024,6 @@ BOOL ScDocFunc::FillSimple( const ScRange& rRange, const ScMarkData* pTabMark, } rDocShell.PostPaintGridAll(); -// rDocShell.PostPaintDataChanged(); aModificator.SetDocumentModified(); bSuccess = TRUE; @@ -4154,7 +4132,6 @@ BOOL ScDocFunc::FillSeries( const ScRange& rRange, const ScMarkData* pTabMark, AdjustRowHeight(rRange); rDocShell.PostPaintGridAll(); -// rDocShell.PostPaintDataChanged(); aModificator.SetDocumentModified(); } @@ -4295,7 +4272,6 @@ BOOL ScDocFunc::FillAuto( ScRange& rRange, const ScMarkData* pTabMark, FillDir e } rDocShell.PostPaintGridAll(); -// rDocShell.PostPaintDataChanged(); aModificator.SetDocumentModified(); rRange = aDestArea; // Zielbereich zurueckgeben (zum Markieren) diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx index a777de7888e2..d6147bb6f108 100644 --- a/sc/source/ui/docshell/docsh.cxx +++ b/sc/source/ui/docshell/docsh.cxx @@ -137,7 +137,7 @@ #include <comphelper/processfactory.hxx> #include "uiitems.hxx" #include "cellsuno.hxx" - +#include "dpobject.hxx" #include <vector> #include <boost/shared_ptr.hpp> @@ -155,36 +155,33 @@ using ::std::vector; // Stream-Namen im Storage -const sal_Char __FAR_DATA ScDocShell::pStarCalcDoc[] = STRING_SCSTREAM; // "StarCalcDocument" -const sal_Char __FAR_DATA ScDocShell::pStyleName[] = "SfxStyleSheets"; +const sal_Char ScDocShell::pStarCalcDoc[] = STRING_SCSTREAM; // "StarCalcDocument" +const sal_Char ScDocShell::pStyleName[] = "SfxStyleSheets"; // Filter-Namen (wie in sclib.cxx) -static const sal_Char __FAR_DATA pFilterSc50[] = "StarCalc 5.0"; -//static const sal_Char __FAR_DATA pFilterSc50Temp[] = "StarCalc 5.0 Vorlage/Template"; -static const sal_Char __FAR_DATA pFilterSc40[] = "StarCalc 4.0"; -//static const sal_Char __FAR_DATA pFilterSc40Temp[] = "StarCalc 4.0 Vorlage/Template"; -static const sal_Char __FAR_DATA pFilterSc30[] = "StarCalc 3.0"; -//static const sal_Char __FAR_DATA pFilterSc30Temp[] = "StarCalc 3.0 Vorlage/Template"; -static const sal_Char __FAR_DATA pFilterSc10[] = "StarCalc 1.0"; -static const sal_Char __FAR_DATA pFilterXML[] = "StarOffice XML (Calc)"; -static const sal_Char __FAR_DATA pFilterAscii[] = "Text - txt - csv (StarCalc)"; -static const sal_Char __FAR_DATA pFilterLotus[] = "Lotus"; -static const sal_Char __FAR_DATA pFilterQPro6[] = "Quattro Pro 6.0"; -static const sal_Char __FAR_DATA pFilterExcel4[] = "MS Excel 4.0"; -static const sal_Char __FAR_DATA pFilterEx4Temp[] = "MS Excel 4.0 Vorlage/Template"; -static const sal_Char __FAR_DATA pFilterExcel5[] = "MS Excel 5.0/95"; -static const sal_Char __FAR_DATA pFilterEx5Temp[] = "MS Excel 5.0/95 Vorlage/Template"; -static const sal_Char __FAR_DATA pFilterExcel95[] = "MS Excel 95"; -static const sal_Char __FAR_DATA pFilterEx95Temp[] = "MS Excel 95 Vorlage/Template"; -static const sal_Char __FAR_DATA pFilterExcel97[] = "MS Excel 97"; -static const sal_Char __FAR_DATA pFilterEx97Temp[] = "MS Excel 97 Vorlage/Template"; -static const sal_Char __FAR_DATA pFilterDBase[] = "dBase"; -static const sal_Char __FAR_DATA pFilterDif[] = "DIF"; -static const sal_Char __FAR_DATA pFilterSylk[] = "SYLK"; -static const sal_Char __FAR_DATA pFilterHtml[] = "HTML (StarCalc)"; -static const sal_Char __FAR_DATA pFilterHtmlWebQ[] = "calc_HTML_WebQuery"; -static const sal_Char __FAR_DATA pFilterRtf[] = "Rich Text Format (StarCalc)"; +static const sal_Char pFilterSc50[] = "StarCalc 5.0"; +static const sal_Char pFilterSc40[] = "StarCalc 4.0"; +static const sal_Char pFilterSc30[] = "StarCalc 3.0"; +static const sal_Char pFilterSc10[] = "StarCalc 1.0"; +static const sal_Char pFilterXML[] = "StarOffice XML (Calc)"; +static const sal_Char pFilterAscii[] = "Text - txt - csv (StarCalc)"; +static const sal_Char pFilterLotus[] = "Lotus"; +static const sal_Char pFilterQPro6[] = "Quattro Pro 6.0"; +static const sal_Char pFilterExcel4[] = "MS Excel 4.0"; +static const sal_Char pFilterEx4Temp[] = "MS Excel 4.0 Vorlage/Template"; +static const sal_Char pFilterExcel5[] = "MS Excel 5.0/95"; +static const sal_Char pFilterEx5Temp[] = "MS Excel 5.0/95 Vorlage/Template"; +static const sal_Char pFilterExcel95[] = "MS Excel 95"; +static const sal_Char pFilterEx95Temp[] = "MS Excel 95 Vorlage/Template"; +static const sal_Char pFilterExcel97[] = "MS Excel 97"; +static const sal_Char pFilterEx97Temp[] = "MS Excel 97 Vorlage/Template"; +static const sal_Char pFilterDBase[] = "dBase"; +static const sal_Char pFilterDif[] = "DIF"; +static const sal_Char pFilterSylk[] = "SYLK"; +static const sal_Char pFilterHtml[] = "HTML (StarCalc)"; +static const sal_Char pFilterHtmlWebQ[] = "calc_HTML_WebQuery"; +static const sal_Char pFilterRtf[] = "Rich Text Format (StarCalc)"; //---------------------------------------------------------------------- @@ -204,7 +201,7 @@ TYPEINIT1( ScDocShell, SfxObjectShell ); // SfxInPlaceObject: kein Type-I //------------------------------------------------------------------ -void __EXPORT ScDocShell::FillClass( SvGlobalName* pClassName, +void ScDocShell::FillClass( SvGlobalName* pClassName, sal_uInt32* pFormat, String* /* pAppName */, String* pFullTypeName, @@ -378,8 +375,8 @@ void ScDocShell::AfterXMLLoading(sal_Bool bRet) ScDPCollection* pDPCollection = aDocument.GetDPCollection(); if ( pDPCollection ) { - USHORT nDPCount = pDPCollection->GetCount(); - for (USHORT nDP=0; nDP<nDPCount; nDP++) + size_t nDPCount = pDPCollection->GetCount(); + for (size_t nDP=0; nDP<nDPCount; ++nDP) { ScDPObject* pDPObj = (*pDPCollection)[nDP]; if ( !pDPObj->GetName().Len() ) @@ -484,7 +481,7 @@ BOOL ScDocShell::SaveXML( SfxMedium* pSaveMedium, const ::com::sun::star::uno::R return bRet; } -BOOL __EXPORT ScDocShell::Load( SfxMedium& rMedium ) +BOOL ScDocShell::Load( SfxMedium& rMedium ) { RTL_LOGFILE_CONTEXT_AUTHOR ( aLog, "sc", "nn93723", "ScDocShell::Load" ); LoadMediumGuard aLoadGuard(&aDocument); @@ -534,7 +531,7 @@ BOOL __EXPORT ScDocShell::Load( SfxMedium& rMedium ) return bRet; } -void __EXPORT ScDocShell::Notify( SfxBroadcaster&, const SfxHint& rHint ) +void ScDocShell::Notify( SfxBroadcaster&, const SfxHint& rHint ) { uno::Reference< script::vba::XVBAEventProcessor > xVbaEvents = aDocument.GetVbaEventProcessor(); if ( xVbaEvents.is() ) try @@ -725,7 +722,7 @@ void __EXPORT ScDocShell::Notify( SfxBroadcaster&, const SfxHint& rHint ) SfxFrame* pFrame = ( pViewFrame ? &pViewFrame->GetFrame() : NULL ); uno::Reference< frame::XController > xController = ( pFrame ? pFrame->GetController() : 0 ); uno::Reference< sheet::XSpreadsheetView > xSpreadsheetView( xController, uno::UNO_QUERY_THROW ); - aArgsForJob[0] = beans::NamedValue( ::rtl::OUString::createFromAscii( "SpreadsheetView" ), + aArgsForJob[0] = beans::NamedValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "SpreadsheetView" )), uno::makeAny( xSpreadsheetView ) ); xJob->execute( aArgsForJob ); } @@ -854,14 +851,14 @@ void __EXPORT ScDocShell::Notify( SfxBroadcaster&, const SfxHint& rHint ) uno::Reference< frame::XStorable > xStor( GetModel(), uno::UNO_QUERY_THROW ); // TODO/LATER: More entries from the MediaDescriptor might be interesting for the merge uno::Sequence< beans::PropertyValue > aValues(1); - aValues[0].Name = ::rtl::OUString::createFromAscii( "FilterName" ); + aValues[0].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "FilterName")); aValues[0].Value <<= ::rtl::OUString( GetMedium()->GetFilter()->GetFilterName() ); SFX_ITEMSET_ARG( GetMedium()->GetItemSet(), pPasswordItem, SfxStringItem, SID_PASSWORD, sal_False); if ( pPasswordItem && pPasswordItem->GetValue().Len() ) { aValues.realloc( 2 ); - aValues[1].Name = ::rtl::OUString::createFromAscii( "Password" ); + aValues[1].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Password") ); aValues[1].Value <<= ::rtl::OUString( pPasswordItem->GetValue() ); } @@ -967,7 +964,7 @@ void __EXPORT ScDocShell::Notify( SfxBroadcaster&, const SfxHint& rHint ) // Inhalte fuer Organizer laden -BOOL __EXPORT ScDocShell::LoadFrom( SfxMedium& rMedium ) +BOOL ScDocShell::LoadFrom( SfxMedium& rMedium ) { RTL_LOGFILE_CONTEXT_AUTHOR ( aLog, "sc", "nn93723", "ScDocShell::LoadFrom" ); LoadMediumGuard aLoadGuard(&aDocument); @@ -1022,7 +1019,7 @@ static void lcl_parseHtmlFilterOption(const OUString& rOption, LanguageType& rLa rDateConvert = static_cast<bool>(aTokens[1].toInt32()); } -BOOL __EXPORT ScDocShell::ConvertFrom( SfxMedium& rMedium ) +BOOL ScDocShell::ConvertFrom( SfxMedium& rMedium ) { RTL_LOGFILE_CONTEXT_AUTHOR ( aLog, "sc", "nn93723", "ScDocShell::ConvertFrom" ); @@ -1158,9 +1155,6 @@ BOOL __EXPORT ScDocShell::ConvertFrom( SfxMedium& rMedium ) } else bRet = TRUE; - - // #93255# update of row height done inside of Excel filter to speed up chart import -// bSetRowHeights = TRUE; // #75357# optimal row heights must be updated } else if (aFltName.EqualsAscii(pFilterAscii)) { @@ -1483,12 +1477,6 @@ BOOL __EXPORT ScDocShell::ConvertFrom( SfxMedium& rMedium ) nWidth + (USHORT)ScGlobal::nLastColWidthExtra ); } } -// if ( bSetRowHeights ) -// { -// // nExtra must be 0 -// aDocument.SetOptimalHeight( 0, nEndRow, nTab, 0, &aVirtDev, -// nPPTX, nPPTY, aZoom, aZoom, FALSE ); -// } } if (bSetRowHeights) @@ -1557,7 +1545,7 @@ ScDocShell::PrepareSaveGuard::~PrepareSaveGuard() } -BOOL __EXPORT ScDocShell::Save() +BOOL ScDocShell::Save() { RTL_LOGFILE_CONTEXT_AUTHOR ( aLog, "sc", "nn93723", "ScDocShell::Save" ); @@ -1573,11 +1561,10 @@ BOOL __EXPORT ScDocShell::Save() } -BOOL __EXPORT ScDocShell::SaveAs( SfxMedium& rMedium ) +BOOL ScDocShell::SaveAs( SfxMedium& rMedium ) { RTL_LOGFILE_CONTEXT_AUTHOR ( aLog, "sc", "nn93723", "ScDocShell::SaveAs" ); -#if ENABLE_SHEET_PROTECTION ScTabViewShell* pViewShell = GetBestViewShell(); bool bNeedsRehash = ScPassHashHelper::needsPassHashRegen(aDocument, PASSHASH_SHA1); if (bNeedsRehash) @@ -1590,7 +1577,6 @@ BOOL __EXPORT ScDocShell::SaveAs( SfxMedium& rMedium ) // password re-type cancelled. Don't save the document. return false; } -#endif ScRefreshTimerProtector( aDocument.GetRefreshTimerControlAddress() ); @@ -1605,15 +1591,8 @@ BOOL __EXPORT ScDocShell::SaveAs( SfxMedium& rMedium ) } -BOOL __EXPORT ScDocShell::IsInformationLost() +BOOL ScDocShell::IsInformationLost() { -/* - const SfxFilter *pFilt = GetMedium()->GetFilter(); - BOOL bRet = pFilt && pFilt->IsAlienFormat() && bNoInformLost; - if (bNoInformLost) // nur einmal!! - bNoInformLost = FALSE; - return bRet; -*/ //!!! bei Gelegenheit ein korrekte eigene Behandlung einbauen return SfxObjectShell::IsInformationLost(); @@ -1623,12 +1602,10 @@ BOOL __EXPORT ScDocShell::IsInformationLost() // Xcl-like column width measured in characters of standard font. xub_StrLen lcl_ScDocShell_GetColWidthInChars( USHORT nWidth ) { - // double fColScale = 1.0; - double f = nWidth; + double f = nWidth; f *= 1328.0 / 25.0; f += 90.0; f *= 1.0 / 23.0; - // f /= fColScale * 256.0; f /= 256.0; return xub_StrLen( f ); @@ -2057,7 +2034,7 @@ void ScDocShell::AsciiSave( SvStream& rStream, const ScImportOptions& rAsciiOpt rStream.SetNumberFormatInt( nOldNumberFormatInt ); } -BOOL __EXPORT ScDocShell::ConvertTo( SfxMedium &rMed ) +BOOL ScDocShell::ConvertTo( SfxMedium &rMed ) { RTL_LOGFILE_CONTEXT_AUTHOR ( aLog, "sc", "nn93723", "ScDocShell::ConvertTo" ); @@ -2076,19 +2053,6 @@ BOOL __EXPORT ScDocShell::ConvertTo( SfxMedium &rMed ) BOOL bRet = FALSE; String aFltName = rMed.GetFilter()->GetFilterName(); -/* - if (aFltName.EqualsAscii(pFilterLotus)) - { - SvStream* pStream = rMed.GetOutStream(); - if (pStream) - { - FltError eError = ScFormatFilter::Get().ScExportLotus123( *pStream, &aDocument, ExpWK1, - CHARSET_IBMPC_437 ); - bRet = eError == eERR_OK; - } - } - else -*/ if (aFltName.EqualsAscii(pFilterXML)) { //TODO/LATER: this shouldn't happen! @@ -2125,13 +2089,11 @@ BOOL __EXPORT ScDocShell::ConvertTo( SfxMedium &rMed ) } } -#if ENABLE_SHEET_PROTECTION if( bDoSave ) { bool bNeedRetypePassDlg = ScPassHashHelper::needsPassHashRegen( aDocument, PASSHASH_XL ); bDoSave = !bNeedRetypePassDlg || pViewShell->ExecuteRetypePassDlg( PASSHASH_XL ); } -#endif } if( bDoSave ) @@ -2215,12 +2177,8 @@ BOOL __EXPORT ScDocShell::ConvertTo( SfxMedium &rMed ) if ( eError != eERR_OK && (eError & ERRCODE_WARNING_MASK) ) { -//! if ( !rMed.GetError() ) -//! rMed.SetError( eError, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) ); eError = eERR_OK; } -//! else if ( aDocument.GetTableCount() > 1 && !rMed.GetError() ) -//! rMed.SetError( SCWARN_EXPORT_ASCII, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) ); INetURLObject aTmpFile( rMed.GetPhysicalName(), INET_PROT_FILE ); if ( bHasMemo ) @@ -2328,13 +2286,13 @@ BOOL __EXPORT ScDocShell::ConvertTo( SfxMedium &rMed ) } -BOOL __EXPORT ScDocShell::SaveCompleted( const uno::Reference < embed::XStorage >& xStor ) +BOOL ScDocShell::SaveCompleted( const uno::Reference < embed::XStorage >& xStor ) { return SfxObjectShell::SaveCompleted( xStor ); } -BOOL __EXPORT ScDocShell::DoSaveCompleted( SfxMedium * pNewStor ) +BOOL ScDocShell::DoSaveCompleted( SfxMedium * pNewStor ) { BOOL bRet = SfxObjectShell::DoSaveCompleted( pNewStor ); @@ -2383,7 +2341,7 @@ sal_Bool ScDocShell::QuerySlotExecutable( USHORT nSlotId ) } -USHORT __EXPORT ScDocShell::PrepareClose( BOOL bUI, BOOL bForBrowsing ) +USHORT ScDocShell::PrepareClose( BOOL bUI, BOOL bForBrowsing ) { if(SC_MOD()->GetCurRefDlgId()>0) { @@ -2450,7 +2408,7 @@ void ScDocShell::PrepareReload() } -String ScDocShell::GetOwnFilterName() // static +String ScDocShell::GetOwnFilterName() { return String::CreateFromAscii(pFilterSc50); } @@ -2460,32 +2418,32 @@ String ScDocShell::GetHtmlFilterName() return String::CreateFromAscii(pFilterHtml); } -String ScDocShell::GetWebQueryFilterName() // static +String ScDocShell::GetWebQueryFilterName() { return String::CreateFromAscii(pFilterHtmlWebQ); } -String ScDocShell::GetAsciiFilterName() // static +String ScDocShell::GetAsciiFilterName() { return String::CreateFromAscii(pFilterAscii); } -String ScDocShell::GetLotusFilterName() // static +String ScDocShell::GetLotusFilterName() { return String::CreateFromAscii(pFilterLotus); } -String ScDocShell::GetDBaseFilterName() // static +String ScDocShell::GetDBaseFilterName() { return String::CreateFromAscii(pFilterDBase); } -String ScDocShell::GetDifFilterName() // static +String ScDocShell::GetDifFilterName() { return String::CreateFromAscii(pFilterDif); } -BOOL ScDocShell::HasAutomaticTableName( const String& rFilter ) // static +BOOL ScDocShell::HasAutomaticTableName( const String& rFilter ) { // TRUE for those filters that keep the default table name // (which is language specific) @@ -2589,7 +2547,7 @@ ScDocShell::ScDocShell( const sal_uInt64 i_nSfxCreationFlags ) //------------------------------------------------------------------ -__EXPORT ScDocShell::~ScDocShell() +ScDocShell::~ScDocShell() { ResetDrawObjectShell(); // #55570# falls der Drawing-Layer noch versucht, darauf zuzugreifen @@ -2626,7 +2584,7 @@ __EXPORT ScDocShell::~ScDocShell() //------------------------------------------------------------------ -SfxUndoManager* __EXPORT ScDocShell::GetUndoManager() +SfxUndoManager* ScDocShell::GetUndoManager() { return aDocument.GetUndoManager(); } @@ -2753,7 +2711,7 @@ void ScDocShell::GetDocStat( ScDocStat& rDocStat ) } -SfxDocumentInfoDialog* __EXPORT ScDocShell::CreateDocumentInfoDialog( +SfxDocumentInfoDialog* ScDocShell::CreateDocumentInfoDialog( Window *pParent, const SfxItemSet &rSet ) { SfxDocumentInfoDialog* pDlg = new SfxDocumentInfoDialog( pParent, rSet ); @@ -2830,7 +2788,7 @@ void ScDocShell::ResetKeyBindings( ScOptionsUtil::KeyBindingType eType ) Reference<XModuleUIConfigurationManagerSupplier> xModuleCfgSupplier( xServiceManager->createInstance( - OUString::createFromAscii("com.sun.star.ui.ModuleUIConfigurationManagerSupplier")), UNO_QUERY); + OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ui.ModuleUIConfigurationManagerSupplier"))), UNO_QUERY); if (!xModuleCfgSupplier.is()) return; @@ -2838,7 +2796,7 @@ void ScDocShell::ResetKeyBindings( ScOptionsUtil::KeyBindingType eType ) // Grab the Calc configuration. Reference<XUIConfigurationManager> xConfigMgr = xModuleCfgSupplier->getUIConfigurationManager( - OUString::createFromAscii("com.sun.star.sheet.SpreadsheetDocument")); + OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sheet.SpreadsheetDocument"))); if (!xConfigMgr.is()) return; @@ -2885,15 +2843,15 @@ void ScDocShell::ResetKeyBindings( ScOptionsUtil::KeyBindingType eType ) switch (eType) { case ScOptionsUtil::KEY_DEFAULT: - xScAccel->setKeyEvent(aDelete, OUString::createFromAscii(".uno:ClearContents")); - xScAccel->setKeyEvent(aBackspace, OUString::createFromAscii(".uno:Delete")); - xScAccel->setKeyEvent(aCtrlD, OUString::createFromAscii(".uno:FillDown")); - xScAccel->setKeyEvent(aCtrlShiftD, OUString::createFromAscii(".uno:DataSelect")); + xScAccel->setKeyEvent(aDelete, OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:ClearContents"))); + xScAccel->setKeyEvent(aBackspace, OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:Delete"))); + xScAccel->setKeyEvent(aCtrlD, OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:FillDown"))); + xScAccel->setKeyEvent(aCtrlShiftD, OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:DataSelect"))); break; case ScOptionsUtil::KEY_OOO_LEGACY: - xScAccel->setKeyEvent(aDelete, OUString::createFromAscii(".uno:Delete")); - xScAccel->setKeyEvent(aBackspace, OUString::createFromAscii(".uno:ClearContents")); - xScAccel->setKeyEvent(aCtrlD, OUString::createFromAscii(".uno:DataSelect")); + xScAccel->setKeyEvent(aDelete, OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:Delete"))); + xScAccel->setKeyEvent(aBackspace, OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:ClearContents"))); + xScAccel->setKeyEvent(aCtrlD, OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:DataSelect"))); break; default: ; @@ -2971,7 +2929,6 @@ void ScDocShellModificator::SetDocumentModified() } } -//<!--Added by PengYunQuan for Validity Cell Range Picker sal_Bool ScDocShell::AcceptStateUpdate() const { if( SfxObjectShell::AcceptStateUpdate() ) @@ -2982,7 +2939,6 @@ sal_Bool ScDocShell::AcceptStateUpdate() const return sal_False; } -//-->Added by PengYunQuan for Validity Cell Range Picker bool ScDocShell::IsChangeRecording() const diff --git a/sc/source/ui/docshell/docsh2.cxx b/sc/source/ui/docshell/docsh2.cxx index ab567f7d23df..d4d581dc7783 100644 --- a/sc/source/ui/docshell/docsh2.cxx +++ b/sc/source/ui/docshell/docsh2.cxx @@ -57,11 +57,6 @@ #include <sfx2/app.hxx> // INCLUDE --------------------------------------------------------------- -/* -#include <svdrwetc.hxx> -#include <svdrwobx.hxx> -#include <sostor.hxx> -*/ #include "drwlayer.hxx" #include "stlpool.hxx" #include "docsh.hxx" @@ -73,7 +68,7 @@ using namespace com::sun::star; //------------------------------------------------------------------ -BOOL __EXPORT ScDocShell::InitNew( const uno::Reference < embed::XStorage >& xStor ) +BOOL ScDocShell::InitNew( const uno::Reference < embed::XStorage >& xStor ) { RTL_LOGFILE_CONTEXT_AUTHOR ( aLog, "sc", "nn93723", "ScDocShell::InitNew" ); @@ -103,27 +98,6 @@ BOOL __EXPORT ScDocShell::InitNew( const uno::Reference < embed::XStorage >& xSt InitItems(); CalcOutputFactor(); -#if 0 - uno::Any aGlobs; - uno::Sequence< uno::Any > aArgs(1); - aArgs[ 0 ] <<= GetModel(); - aGlobs <<= ::comphelper::getProcessServiceFactory()->createInstanceWithArguments( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ooo.vba.excel.Globals" ) ), aArgs ); - GetBasicManager()->SetGlobalUNOConstant( "VBAGlobals", aGlobs ); - // Fake ThisComponent being setup by Activate ( which is a view - // related thing ), - // a) if another document is opened then in theory ThisComponent - // will be reset as before, - // b) when this document is 'really' Activated then ThisComponent - // again will be set as before - // The only wrinkle seems if this document is loaded 'InVisible' - // but.. I don't see that this is possible from the vba API - // I could be wrong though - // There may be implications setting the current component - // too early :-/ so I will just manually set the Basic Variables - BasicManager* pAppMgr = SFX_APP()->GetBasicManager(); - if ( pAppMgr ) - pAppMgr->SetGlobalUNOConstant( "ThisExcelDoc", aArgs[ 0 ] ); -#endif return bRet; } @@ -147,13 +121,8 @@ void ScDocShell::InitItems() { // AllItemSet fuer Controller mit benoetigten Items fuellen: - // if ( pImpl->pFontList ) - // delete pImpl->pFontList; - // Druck-Optionen werden beim Drucken und evtl. in GetPrinter gesetzt - // pImpl->pFontList = new FontList( GetPrinter(), Application::GetDefaultDevice() ); - //PutItem( SvxFontListItem( pImpl->pFontList, SID_ATTR_CHAR_FONTLIST ) ); UpdateFontList(); ScDrawLayer* pDrawLayer = aDocument.GetDrawLayer(); @@ -170,7 +139,6 @@ void ScDocShell::InitItems() pDrawLayer->SetNotifyUndoActionHdl( LINK( pDocFunc, ScDocFunc, NotifyDrawUndo ) ); - //if (SfxObjectShell::HasSbxObject()) pDrawLayer->UpdateBasic(); // DocShell-Basic in DrawPages setzen } else @@ -200,7 +168,6 @@ void ScDocShell::InitItems() i18n::ForbiddenCharacters aForbidden; aAsian.GetStartEndChars( pLocales[i], aForbidden.beginLine, aForbidden.endLine ); LanguageType eLang = SvxLocaleToLanguage(pLocales[i]); - //pDoc->SetForbiddenCharacters( eLang, aForbidden ); xForbiddenTable->SetForbiddenCharacters( eLang, aForbidden ); } @@ -234,12 +201,12 @@ void ScDocShell::ResetDrawObjectShell() //------------------------------------------------------------------ -void __EXPORT ScDocShell::Activate() +void ScDocShell::Activate() { } -void __EXPORT ScDocShell::Deactivate() +void ScDocShell::Deactivate() { } @@ -258,7 +225,7 @@ ScDrawLayer* ScDocShell::MakeDrawLayer() InitItems(); // incl. Undo und Basic Broadcast( SfxSimpleHint( SC_HINT_DRWLAYER_NEW ) ); if (nDocumentLock) - pDrawLayer->setLock(TRUE); + pDrawLayer->setLock(true); } return pDrawLayer; } diff --git a/sc/source/ui/docshell/docsh3.cxx b/sc/source/ui/docshell/docsh3.cxx index 8e0719ad328b..133a5d889468 100644 --- a/sc/source/ui/docshell/docsh3.cxx +++ b/sc/source/ui/docshell/docsh3.cxx @@ -261,11 +261,10 @@ void ScDocShell::UnlockPaint_Impl(BOOL bDoc) if (xRangeList) { USHORT nParts = pPaint->GetParts(); - ULONG nCount = xRangeList->Count(); - for ( ULONG i=0; i<nCount; i++ ) + for ( size_t i = 0, nCount = xRangeList->size(); i < nCount; i++ ) { //! nExtFlags ??? - ScRange aRange = *xRangeList->GetObject(i); + ScRange aRange = *(*xRangeList)[i]; PostPaint( aRange.aStart.Col(), aRange.aStart.Row(), aRange.aStart.Tab(), aRange.aEnd.Col(), aRange.aEnd.Row(), aRange.aEnd.Tab(), nParts ); @@ -290,7 +289,7 @@ void ScDocShell::LockDocument_Impl(USHORT nNew) { ScDrawLayer* pDrawLayer = aDocument.GetDrawLayer(); if (pDrawLayer) - pDrawLayer->setLock(TRUE); + pDrawLayer->setLock(true); } nDocumentLock = nNew; } @@ -302,7 +301,7 @@ void ScDocShell::UnlockDocument_Impl(USHORT nNew) { ScDrawLayer* pDrawLayer = aDocument.GetDrawLayer(); if (pDrawLayer) - pDrawLayer->setLock(FALSE); + pDrawLayer->setLock(false); } } @@ -1221,7 +1220,7 @@ bool ScDocShell::MergeSharedDocument( ScDocShell* pSharedDocShell ) } #if DEBUG_CHANGETRACK - ::rtl::OUString aMessage = ::rtl::OUString::createFromAscii( "\nbefore merge:\n" ); + ::rtl::OUString aMessage(RTL_CONSTASCII_USTRINGPARAM( "\nbefore merge:\n" )); aMessage += pThisTrack->ToString(); ::rtl::OString aMsg = ::rtl::OUStringToOString( aMessage, RTL_TEXTENCODING_UTF8 ); OSL_ENSURE( false, aMsg.getStr() ); @@ -1398,7 +1397,7 @@ bool ScDocShell::MergeSharedDocument( ScDocShell* pSharedDocShell ) } #if DEBUG_CHANGETRACK - aMessage = ::rtl::OUString::createFromAscii( "\nafter merge:\n" ); + aMessage = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "\nafter merge:\n" )); aMessage += pThisTrack->ToString(); aMsg = ::rtl::OUStringToOString( aMessage, RTL_TEXTENCODING_UTF8 ); OSL_ENSURE( false, aMsg.getStr() ); diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx index 6abc194aa105..394a3b1c8d61 100644 --- a/sc/source/ui/docshell/docsh4.cxx +++ b/sc/source/ui/docshell/docsh4.cxx @@ -309,7 +309,6 @@ void ScDocShell::Execute( SfxRequest& rReq ) if (pReqArgs) { ScDocument* pDoc = GetDocument(); -// BOOL bUndo (pDoc->IsUndoEnabled()); const SfxPoolItem* pItem; String aChartName, aRangeName; @@ -346,10 +345,10 @@ void ScDocShell::Execute( SfxRequest& rReq ) { aRangeListRef = new ScRangeList; aRangeListRef->Parse( aRangeName, pDoc ); - if ( aRangeListRef->Count() ) + if ( !aRangeListRef->empty() ) { bMultiRange = TRUE; - aSingleRange = *aRangeListRef->GetObject(0); // fuer Header + aSingleRange = *aRangeListRef->front(); // fuer Header bValid = TRUE; } else @@ -459,7 +458,6 @@ void ScDocShell::Execute( SfxRequest& rReq ) if (pBindings) { pBindings->Invalidate( FID_AUTO_CALC ); -// pBindings->Invalidate( FID_RECALC ); // jetzt immer enabled } rReq.AppendItem( SfxBoolItem( FID_AUTO_CALC, bNewVal ) ); rReq.Done(); @@ -2094,7 +2092,6 @@ void ScDocShell::Print( SfxProgress& rProgress, PrintDialog* pPrintDialog, long nTabStart = 0; long nDisplayStart = 0; long nAttrPage = 1; - long nPrinted = 0; for ( SCTAB nTab=0; nTab<nTabCount; nTab++ ) { @@ -2115,7 +2112,7 @@ void ScDocShell::Print( SfxProgress& rProgress, PrintDialog* pPrintDialog, ScPrintFunc aPrintFunc( this, pPrinter, nTab, nAttrPage, nTotalPages, pMarkedRange, &aOptions ); aPrintFunc.SetDrawView( pDrawView ); - nPrinted += aPrintFunc.DoPrint( aPageRanges, nTabStart, nDisplayStart, TRUE, &rProgress, NULL ); + aPrintFunc.DoPrint( aPageRanges, nTabStart, nDisplayStart, TRUE, &rProgress, NULL ); nTabStart += aPageArr[nTab]; if ( aDocument.NeedPageResetAfterTab(nTab) ) @@ -2127,22 +2124,6 @@ void ScDocShell::Print( SfxProgress& rProgress, PrintDialog* pPrintDialog, delete pDrawView; } } - -#if 0 - if ( n+1 < nCollateCopies && - (pPrinter->GetDuplexMode() == DUPLEX_SHORTEDGE || pPrinter->GetDuplexMode() == DUPLEX_LONGEDGE) && - ( nPrinted % 2 ) == 1 ) - { - // #105584# when several collated copies are printed in duplex mode, and there is - // an odd number of pages, print an empty page between copies, so the first page of - // the second copy isn't printed on the back of the last page of the first copy. - // (same as in Writer ViewShell::Prt) - - // FIXME: needs to be adapted to XRenderable interface - pPrinter->StartPage(); - pPrinter->EndPage(); - } -#endif } } @@ -2223,10 +2204,6 @@ void ScDocShell::GetState( SfxItemSet &rSet ) // Wenn eine Formel editiert wird, muss FID_RECALC auf jeden Fall enabled sein. // Recalc fuer das Doc war mal wegen #29898# disabled, wenn AutoCalc an war, // ist jetzt wegen #41540# aber auch immer enabled. -// case FID_RECALC: -// if ( aDocument.GetAutoCalc() ) -// rSet.DisableItem( nWhich ); -// break; case SID_TABLES_COUNT: rSet.Put( SfxInt16Item( nWhich, aDocument.GetTableCount() ) ); @@ -2274,9 +2251,8 @@ void ScDocShell::GetSbxState( SfxItemSet &rSet ) pVisibleSh->GetState( rSet ); } -void __EXPORT ScDocShell::Draw( OutputDevice* pDev, const JobSetup & /* rSetup */, USHORT nAspect ) +void ScDocShell::Draw( OutputDevice* pDev, const JobSetup & /* rSetup */, USHORT nAspect ) { -// bIsOle = TRUE; // jetzt ueber den CreateMode SCTAB nVisTab = aDocument.GetVisibleTab(); if (!aDocument.HasTable(nVisTab)) @@ -2307,7 +2283,7 @@ void __EXPORT ScDocShell::Draw( OutputDevice* pDev, const JobSetup & /* rSetup * pDev->SetLayoutMode( nOldLayoutMode ); } -Rectangle __EXPORT ScDocShell::GetVisArea( USHORT nAspect ) const +Rectangle ScDocShell::GetVisArea( USHORT nAspect ) const { SfxObjectCreateMode eShellMode = GetCreateMode(); if ( eShellMode == SFX_CREATE_MODE_ORGANIZER ) @@ -2319,7 +2295,6 @@ Rectangle __EXPORT ScDocShell::GetVisArea( USHORT nAspect ) const if( nAspect == ASPECT_THUMBNAIL ) { -// Rectangle aArea( 0,0, 3175,3175 ); // 120x120 Pixel in 1:1 Rectangle aArea( 0,0, SC_PREVIEW_SIZE_X,SC_PREVIEW_SIZE_Y ); BOOL bNegativePage = aDocument.IsNegativePage( aDocument.GetVisibleTab() ); if ( bNegativePage ) @@ -2393,7 +2368,7 @@ void ScDocShell::GetPageOnFromPageStyleSet( const SfxItemSet* pStyleSet, rbFooter = ((const SfxBoolItem&)pSet->Get(ATTR_PAGE_ON)).GetValue(); } -long __EXPORT ScDocShell::DdeGetData( const String& rItem, +long ScDocShell::DdeGetData( const String& rItem, const String& rMimeType, ::com::sun::star::uno::Any & rValue ) { @@ -2442,7 +2417,7 @@ long __EXPORT ScDocShell::DdeGetData( const String& rItem, return 0; } -long __EXPORT ScDocShell::DdeSetData( const String& rItem, +long ScDocShell::DdeSetData( const String& rItem, const String& rMimeType, const ::com::sun::star::uno::Any & rValue ) { @@ -2481,7 +2456,7 @@ long __EXPORT ScDocShell::DdeSetData( const String& rItem, return 0; } -::sfx2::SvLinkSource* __EXPORT ScDocShell::DdeCreateLinkSource( const String& rItem ) +::sfx2::SvLinkSource* ScDocShell::DdeCreateLinkSource( const String& rItem ) { // only check for valid item string - range is parsed again in ScServerObject ctor @@ -2678,7 +2653,7 @@ uno::Reference< frame::XModel > ScDocShell::LoadSharedDocument() xFactory->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ) ) ), uno::UNO_QUERY_THROW ); uno::Sequence < beans::PropertyValue > aArgs( 1 ); - aArgs[0].Name = ::rtl::OUString::createFromAscii( "Hidden" ); + aArgs[0].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Hidden" )); aArgs[0].Value <<= sal_True; if ( GetMedium() ) @@ -2687,7 +2662,7 @@ uno::Reference< frame::XModel > ScDocShell::LoadSharedDocument() if ( pPasswordItem && pPasswordItem->GetValue().Len() ) { aArgs.realloc( 2 ); - aArgs[1].Name = ::rtl::OUString::createFromAscii( "Password" ); + aArgs[1].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Password" )); aArgs[1].Value <<= ::rtl::OUString( pPasswordItem->GetValue() ); } } diff --git a/sc/source/ui/docshell/docsh5.cxx b/sc/source/ui/docshell/docsh5.cxx index e852ca29a948..9ac045c8da70 100644 --- a/sc/source/ui/docshell/docsh5.cxx +++ b/sc/source/ui/docshell/docsh5.cxx @@ -43,6 +43,7 @@ #include <svl/smplhint.hxx> #include <com/sun/star/sdbc/XResultSet.hpp> +#include <com/sun/star/script/vba/XVBACompatibility.hpp> // INCLUDE --------------------------------------------------------------- @@ -68,9 +69,21 @@ #include <basic/sbstar.hxx> #include <basic/basmgr.hxx> +#include <memory> +#include <vector> + // defined in docfunc.cxx void VBA_InsertModule( ScDocument& rDoc, SCTAB nTab, String& sModuleName, String& sModuleSource ); +using com::sun::star::script::XLibraryContainer; +using com::sun::star::script::vba::XVBACompatibility; +using com::sun::star::container::XNameContainer; +using com::sun::star::uno::Reference; +using com::sun::star::uno::UNO_QUERY; + +using ::std::auto_ptr; +using ::std::vector; + // --------------------------------------------------------------------------- // @@ -247,15 +260,10 @@ ScDBData* ScDocShell::GetDBData( const ScRange& rMarked, ScGetDBMode eMode, ScGe nStartCol = nEndCol = nCol; nStartRow = nEndRow = nRow; nStartTab = nEndTab = nTab; -// bMark = FALSE; // nichts zu markieren } else { - if ( bSelected ) - { -// bMark = FALSE; - } - else + if ( !bSelected ) { // zusammenhaengender Bereich nStartCol = nCol; nStartRow = nRow; @@ -927,31 +935,30 @@ BOOL ScDocShell::MoveTable( SCTAB nSrcTab, SCTAB nDestTab, BOOL bCopy, BOOL bRec if (bRecord) { - SvShorts aSrcList; - SvShorts aDestList; - aSrcList.Insert(nSrcTab,0); - aDestList.Insert(nDestTab,0); + auto_ptr< vector<SCTAB> > pSrcList(new vector<SCTAB>(1, nSrcTab)); + auto_ptr< vector<SCTAB> > pDestList(new vector<SCTAB>(1, nDestTab)); GetUndoManager()->AddUndoAction( - new ScUndoCopyTab( this, aSrcList, aDestList ) ); + new ScUndoCopyTab(this, pSrcList.release(), pDestList.release())); } BOOL bVbaEnabled = aDocument.IsInVBAMode(); if ( bVbaEnabled ) { - StarBASIC* pStarBASIC = GetBasic(); String aLibName( RTL_CONSTASCII_USTRINGPARAM( "Standard" ) ); - if ( GetBasicManager()->GetName().Len() > 0 ) + Reference< XLibraryContainer > xLibContainer = GetBasicContainer(); + Reference< XVBACompatibility > xVBACompat( xLibContainer, UNO_QUERY ); + + if ( xVBACompat.is() ) { - aLibName = GetBasicManager()->GetName(); - pStarBASIC = GetBasicManager()->GetLib( aLibName ); + aLibName = xVBACompat->getProjectName(); } + SCTAB nTabToUse = nDestTab; if ( nDestTab == SC_TAB_APPEND ) nTabToUse = aDocument.GetMaxTableNumber() - 1; String sCodeName; String sSource; - com::sun::star::uno::Reference< com::sun::star::script::XLibraryContainer > xLibContainer = GetBasicContainer(); - com::sun::star::uno::Reference< com::sun::star::container::XNameContainer > xLib; + Reference< XNameContainer > xLib; if( xLibContainer.is() ) { com::sun::star::uno::Any aLibAny = xLibContainer->getByName( aLibName ); @@ -986,12 +993,10 @@ BOOL ScDocShell::MoveTable( SCTAB nSrcTab, SCTAB nDestTab, BOOL bCopy, BOOL bRec return FALSE; else if (bRecord) { - SvShorts aSrcList; - SvShorts aDestList; - aSrcList.Insert(nSrcTab,0); - aDestList.Insert(nDestTab,0); + auto_ptr< vector<SCTAB> > pSrcList(new vector<SCTAB>(1, nSrcTab)); + auto_ptr< vector<SCTAB> > pDestList(new vector<SCTAB>(1, nDestTab)); GetUndoManager()->AddUndoAction( - new ScUndoMoveTab( this, aSrcList, aDestList ) ); + new ScUndoMoveTab(this, pSrcList.release(), pDestList.release())); } Broadcast( ScTablesHint( SC_TAB_MOVED, nSrcTab, nDestTab ) ); @@ -1018,7 +1023,7 @@ IMPL_LINK( ScDocShell, RefreshDBDataHdl, ScRefreshTimer*, pRefreshTimer ) { ScRange aRange; pDBData->GetArea( aRange ); - ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet> xResultSet; + Reference< ::com::sun::star::sdbc::XResultSet> xResultSet; bContinue = aFunc.DoImport( aRange.aStart.Tab(), aImportParam, xResultSet, NULL, TRUE, FALSE ); //! Api-Flag as parameter // internal operations (sort, query, subtotal) only if no error if (bContinue) diff --git a/sc/source/ui/docshell/docsh6.cxx b/sc/source/ui/docshell/docsh6.cxx index 60f75c885a83..a7b38f78a6af 100644 --- a/sc/source/ui/docshell/docsh6.cxx +++ b/sc/source/ui/docshell/docsh6.cxx @@ -99,7 +99,7 @@ inline OUString C2U(const char* s) // Ole // -void __EXPORT ScDocShell::SetVisArea( const Rectangle & rVisArea ) +void ScDocShell::SetVisArea( const Rectangle & rVisArea ) { // with the SnapVisArea call in SetVisAreaOrSize, it's safe to always // use both the size and position of the VisArea @@ -254,7 +254,7 @@ void ScDocShell::UpdateOle( const ScViewData* pViewData, BOOL bSnapSize ) // Style-Krempel fuer Organizer etc. // -SfxStyleSheetBasePool* __EXPORT ScDocShell::GetStyleSheetPool() +SfxStyleSheetBasePool* ScDocShell::GetStyleSheetPool() { return (SfxStyleSheetBasePool*)aDocument.GetStyleSheetPool(); } @@ -292,7 +292,7 @@ void lcl_AdjustPool( SfxStyleSheetBasePool* pStylePool ) } } -void __EXPORT ScDocShell::LoadStyles( SfxObjectShell &rSource ) +void ScDocShell::LoadStyles( SfxObjectShell &rSource ) { aDocument.StylesToNames(); @@ -375,7 +375,7 @@ void ScDocShell::LoadStylesArgs( ScDocShell& rSource, BOOL bReplace, BOOL bCellS } -BOOL __EXPORT ScDocShell::Insert( SfxObjectShell &rSource, +BOOL ScDocShell::Insert( SfxObjectShell &rSource, USHORT nSourceIdx1, USHORT nSourceIdx2, USHORT nSourceIdx3, USHORT &nIdx1, USHORT &nIdx2, USHORT &nIdx3, USHORT &rIdxDeleted ) { diff --git a/sc/source/ui/docshell/docsh8.cxx b/sc/source/ui/docshell/docsh8.cxx index 1e94a7f3b2e4..3e63fae00963 100644 --- a/sc/source/ui/docshell/docsh8.cxx +++ b/sc/source/ui/docshell/docsh8.cxx @@ -98,7 +98,6 @@ using ::std::vector; #define SC_SERVICE_DRVMAN "com.sun.star.sdbc.DriverManager" //! move to a header file? -//#define SC_DBPROP_DATASOURCENAME "DataSourceName" #define SC_DBPROP_ACTIVECONNECTION "ActiveConnection" #define SC_DBPROP_COMMAND "Command" #define SC_DBPROP_COMMANDTYPE "CommandType" @@ -131,7 +130,7 @@ namespace if (!xFactory.is()) return SCERR_EXPORT_CONNECT; _rDrvMgr.set( xFactory->createInstance( - rtl::OUString::createFromAscii( SC_SERVICE_DRVMAN ) ), + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_SERVICE_DRVMAN )) ), uno::UNO_QUERY); DBG_ASSERT( _rDrvMgr.is(), "can't get DriverManager" ); if (!_rDrvMgr.is()) return SCERR_EXPORT_CONNECT; @@ -160,9 +159,9 @@ namespace } uno::Sequence<beans::PropertyValue> aProps(2); - aProps[0].Name = rtl::OUString::createFromAscii(SC_DBPROP_EXTENSION); + aProps[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_EXTENSION)); aProps[0].Value <<= rtl::OUString( aExtension ); - aProps[1].Name = rtl::OUString::createFromAscii(SC_DBPROP_CHARSET); + aProps[1].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_CHARSET)); aProps[1].Value <<= aCharSetStr; _rConnection = _rDrvMgr->getConnectionWithInfo( aConnUrl, aProps ); @@ -172,7 +171,6 @@ namespace // ----------------------------------------------------------------------- // MoveFile/KillFile/IsDocument: similar to SfxContentHelper -// static BOOL ScDocShell::MoveFile( const INetURLObject& rSourceObj, const INetURLObject& rDestObj ) { sal_Bool bMoveData = sal_True; @@ -192,7 +190,7 @@ BOOL ScDocShell::MoveFile( const INetURLObject& rSourceObj, const INetURLObject& ::ucbhelper::Content aDestPath( aDestPathObj.GetMainURL(INetURLObject::NO_DECODE), uno::Reference< ::com::sun::star::ucb::XCommandEnvironment > () ); uno::Reference< ::com::sun::star::ucb::XCommandInfo > xInfo = aDestPath.getCommands(); - rtl::OUString aTransferName = rtl::OUString::createFromAscii( "transfer" ); + rtl::OUString aTransferName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "transfer" )); if ( xInfo->hasCommandByName( aTransferName ) ) { aDestPath.executeCommand( aTransferName, uno::makeAny( @@ -217,7 +215,6 @@ BOOL ScDocShell::MoveFile( const INetURLObject& rSourceObj, const INetURLObject& } -// static BOOL ScDocShell::KillFile( const INetURLObject& rURL ) { sal_Bool bRet = sal_True; @@ -225,7 +222,7 @@ BOOL ScDocShell::KillFile( const INetURLObject& rURL ) { ::ucbhelper::Content aCnt( rURL.GetMainURL(INetURLObject::NO_DECODE), uno::Reference< ::com::sun::star::ucb::XCommandEnvironment > () ); - aCnt.executeCommand( rtl::OUString::createFromAscii( "delete" ), + aCnt.executeCommand( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "delete" )), comphelper::makeBoolAny( sal_True ) ); } catch( uno::Exception& ) @@ -237,7 +234,6 @@ BOOL ScDocShell::KillFile( const INetURLObject& rURL ) return bRet; } -// static BOOL ScDocShell::IsDocument( const INetURLObject& rURL ) { sal_Bool bRet = sal_False; @@ -333,7 +329,7 @@ ULONG ScDocShell::DBaseImport( const String& rFullFileName, CharSet eCharSet, ScProgress aProgress( this, ScGlobal::GetRscString( STR_LOAD_DOC ), nRowCount ); uno::Reference<lang::XMultiServiceFactory> xFactory = comphelper::getProcessServiceFactory(); uno::Reference<sdbc::XRowSet> xRowSet( xFactory->createInstance( - rtl::OUString::createFromAscii( SC_SERVICE_ROWSET ) ), + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_SERVICE_ROWSET )) ), uno::UNO_QUERY); ::utl::DisposableComponent aRowSetHelper(xRowSet); uno::Reference<beans::XPropertySet> xRowProp( xRowSet, uno::UNO_QUERY ); @@ -345,19 +341,19 @@ ULONG ScDocShell::DBaseImport( const String& rFullFileName, CharSet eCharSet, aAny <<= xConnection; xRowProp->setPropertyValue( - rtl::OUString::createFromAscii(SC_DBPROP_ACTIVECONNECTION), aAny ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_ACTIVECONNECTION)), aAny ); aAny <<= nType; xRowProp->setPropertyValue( - rtl::OUString::createFromAscii(SC_DBPROP_COMMANDTYPE), aAny ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_COMMANDTYPE)), aAny ); aAny <<= rtl::OUString( aTabName ); xRowProp->setPropertyValue( - rtl::OUString::createFromAscii(SC_DBPROP_COMMAND), aAny ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_COMMAND)), aAny ); aAny <<= sal_False; xRowProp->setPropertyValue( - rtl::OUString::createFromAscii(SC_DBPROP_PROPCHANGE_NOTIFY), aAny ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_PROPCHANGE_NOTIFY)), aAny ); xRowSet->execute(); @@ -877,7 +873,7 @@ ULONG ScDocShell::DBaseExport( const String& rFullFileName, CharSet eCharSet, BO if (!xTableDesc.is()) return SCERR_EXPORT_CONNECT; aAny <<= rtl::OUString( aTabName ); - xTableDesc->setPropertyValue( rtl::OUString::createFromAscii(SC_DBPROP_NAME), aAny ); + xTableDesc->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_NAME)), aAny ); // create columns @@ -910,31 +906,26 @@ ULONG ScDocShell::DBaseExport( const String& rFullFileName, CharSet eCharSet, BO if (!xColumnDesc.is()) return SCERR_EXPORT_CONNECT; aAny <<= pColNames[nCol]; - xColumnDesc->setPropertyValue( rtl::OUString::createFromAscii(SC_DBPROP_NAME), aAny ); + xColumnDesc->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_NAME)), aAny ); aAny <<= pColTypes[nCol]; - xColumnDesc->setPropertyValue( rtl::OUString::createFromAscii(SC_DBPROP_TYPE), aAny ); + xColumnDesc->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_TYPE)), aAny ); aAny <<= pColLengths[nCol]; - xColumnDesc->setPropertyValue( rtl::OUString::createFromAscii(SC_DBPROP_PRECISION), aAny ); + xColumnDesc->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_PRECISION)), aAny ); aAny <<= pColScales[nCol]; - xColumnDesc->setPropertyValue( rtl::OUString::createFromAscii(SC_DBPROP_SCALE), aAny ); + xColumnDesc->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_SCALE)), aAny ); xColumnsAppend->appendByDescriptor( xColumnDesc ); } xTablesAppend->appendByDescriptor( xTableDesc ); - // re-open connection -// xConnection = xDrvMan->getConnectionWithInfo( aConnUrl, aProps ); -// DBG_ASSERT( xConnection.is(), "can't get Connection" ); -// if (!xConnection.is()) return SCERR_EXPORT_CONNECT; - // get row set for writing uno::Reference<lang::XMultiServiceFactory> xFactory = comphelper::getProcessServiceFactory(); uno::Reference<sdbc::XRowSet> xRowSet( xFactory->createInstance( - rtl::OUString::createFromAscii( SC_SERVICE_ROWSET ) ), + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_SERVICE_ROWSET )) ), uno::UNO_QUERY); ::utl::DisposableComponent aRowSetHelper(xRowSet); uno::Reference<beans::XPropertySet> xRowProp( xRowSet, uno::UNO_QUERY ); @@ -943,15 +934,15 @@ ULONG ScDocShell::DBaseExport( const String& rFullFileName, CharSet eCharSet, BO aAny <<= xConnection; xRowProp->setPropertyValue( - rtl::OUString::createFromAscii(SC_DBPROP_ACTIVECONNECTION), aAny ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_ACTIVECONNECTION)), aAny ); aAny <<= (sal_Int32) sdb::CommandType::TABLE; xRowProp->setPropertyValue( - rtl::OUString::createFromAscii(SC_DBPROP_COMMANDTYPE), aAny ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_COMMANDTYPE)), aAny ); aAny <<= rtl::OUString( aTabName ); xRowProp->setPropertyValue( - rtl::OUString::createFromAscii(SC_DBPROP_COMMAND), aAny ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_DBPROP_COMMAND)), aAny ); xRowSet->execute(); diff --git a/sc/source/ui/docshell/externalrefmgr.cxx b/sc/source/ui/docshell/externalrefmgr.cxx index c0fc2fbfa215..741837b29db2 100644 --- a/sc/source/ui/docshell/externalrefmgr.cxx +++ b/sc/source/ui/docshell/externalrefmgr.cxx @@ -407,7 +407,7 @@ void ScExternalRefCache::Table::setCachedCell(SCCOL nCol, SCROW nRow) void ScExternalRefCache::Table::setCachedCellRange(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2) { ScRange aRange(nCol1, nRow1, 0, nCol2, nRow2, 0); - if (!maCachedRanges.Count()) + if ( maCachedRanges.empty() ) maCachedRanges.Append(aRange); else maCachedRanges.Join(aRange); @@ -585,11 +585,8 @@ ScExternalRefCache::TokenArrayRef ScExternalRefCache::getCellRangeData( } ScMatrixRef xMat = new ScMatrix( - static_cast<SCSIZE>(nDataCol2-nDataCol1+1), static_cast<SCSIZE>(nDataRow2-nDataRow1+1)); - -#if 0 - // TODO: Switch to this code block once we have support for sparsely-filled - // matrices in ScMatrix. + static_cast<SCSIZE>(nDataCol2-nDataCol1+1), + static_cast<SCSIZE>(nDataRow2-nDataRow1+1), ScMatrix::SPARSE_EMPTY); // Only fill non-empty cells, for better performance. vector<SCROW> aRows; @@ -621,46 +618,11 @@ ScExternalRefCache::TokenArrayRef ScExternalRefCache::getCellRangeData( } } } -#else - vector<SCROW> aRows; - pTab->getAllRows(aRows, nDataRow1, nDataRow2); - if (aRows.empty()) - // Cache is empty. - return TokenArrayRef(); - else - // Trim the column below the last non-empty row. - nDataRow2 = aRows.back(); - - // Empty all matrix elements first, and fill only non-empty elements. - for (SCROW nRow = nDataRow1; nRow <= nDataRow2; ++nRow) - { - for (SCCOL nCol = nDataCol1; nCol <= nDataCol2; ++nCol) - { - TokenRef pToken = pTab->getCell(nCol, nRow); - SCSIZE nC = nCol - nCol1, nR = nRow - nRow1; - if (!pToken) - return TokenArrayRef(); - - switch (pToken->GetType()) - { - case svDouble: - xMat->PutDouble(pToken->GetDouble(), nC, nR); - break; - case svString: - xMat->PutString(pToken->GetString(), nC, nR); - break; - default: - xMat->PutEmpty(nC, nR); - } - } - } -#endif if (!bFirstTab) pArray->AddOpCode(ocSep); - ScMatrix* pMat2 = xMat; - ScMatrixToken aToken(pMat2); + ScMatrixToken aToken(xMat); if (!pArray) pArray.reset(new ScTokenArray); pArray->AddToken(aToken); @@ -734,7 +696,7 @@ void ScExternalRefCache::setCellData(sal_uInt16 nFileId, const String& rTabName, } void ScExternalRefCache::setCellRangeData(sal_uInt16 nFileId, const ScRange& rRange, const vector<SingleRangeData>& rData, - TokenArrayRef pArray) + const TokenArrayRef& pArray) { using ::std::pair; if (rData.empty() || !isDocInitialized(nFileId)) @@ -1323,20 +1285,17 @@ static FormulaToken* lcl_convertToToken(ScBaseCell* pCell) static_cast<ScEditCell*>(pCell)->GetString(aStr); return new formula::FormulaStringToken(aStr); } - //break; case CELLTYPE_STRING: { String aStr; static_cast<ScStringCell*>(pCell)->GetString(aStr); return new formula::FormulaStringToken(aStr); } - //break; case CELLTYPE_VALUE: { double fVal = static_cast<ScValueCell*>(pCell)->GetValue(); return new formula::FormulaDoubleToken(fVal); } - //break; case CELLTYPE_FORMULA: { ScFormulaCell* pFCell = static_cast<ScFormulaCell*>(pCell); @@ -1355,7 +1314,6 @@ static FormulaToken* lcl_convertToToken(ScBaseCell* pCell) return new formula::FormulaStringToken(aStr); } } - //break; default: DBG_ERROR("attempted to convert an unknown cell type."); } @@ -1468,8 +1426,7 @@ static ScTokenArray* lcl_convertToTokenArray(const ScDocument* pSrcDoc, ScRange& if (!bFirstTab) pArray->AddOpCode(ocSep); - ScMatrix* pMat2 = xMat; - ScMatrixToken aToken(pMat2); + ScMatrixToken aToken(xMat); pArray->AddToken(aToken); itrCache->mpRangeData = xMat; @@ -1497,8 +1454,7 @@ static ScTokenArray* lcl_fillEmptyMatrix(const ScRange& rRange) for (SCSIZE j = 0; j < nR; ++j) xMat->PutEmpty(i, j); - ScMatrix* pMat2 = xMat; - ScMatrixToken aToken(pMat2); + ScMatrixToken aToken(xMat); auto_ptr<ScTokenArray> pArray(new ScTokenArray); pArray->AddToken(aToken); return pArray.release(); @@ -1683,8 +1639,18 @@ ScExternalRefCache::TokenRef ScExternalRefManager::getSingleRefToken( if (pTab) *pTab = nTab; - return getSingleRefTokenFromSrcDoc( - nFileId, pSrcDoc, ScAddress(rCell.Col(),rCell.Row(),nTab), pFmt); + ScExternalRefCache::TokenRef pToken = + getSingleRefTokenFromSrcDoc( + nFileId, pSrcDoc, ScAddress(rCell.Col(),rCell.Row(),nTab), pFmt); + + // Now, insert the token into cache table but don't cache empty cells. + if (pToken->GetType() != formula::svEmptyCell) + { + sal_uInt32 nFmtIndex = pFmt->mbIsSet ? pFmt->mnIndex : 0; + maRefCache.setCellData(nFileId, rTabName, rCell.Col(), rCell.Row(), pToken, nFmtIndex); + } + + return pToken; } // Check if the given table name and the cell position is cached. @@ -1740,11 +1706,55 @@ ScExternalRefCache::TokenRef ScExternalRefManager::getSingleRefToken( // Now, insert the token into cache table but don't cache empty cells. if (pToken->GetType() != formula::svEmptyCell) + { + nFmtIndex = pFmt->mbIsSet ? pFmt->mnIndex : 0; maRefCache.setCellData(nFileId, rTabName, rCell.Col(), rCell.Row(), pToken, nFmtIndex); + } return pToken; } +namespace { + +/** + * Put the data into our internal cache table. + * + * @param rRefCache cache table set. + * @param pArray single range data to be returned. + * @param nFileId external file ID + * @param rTabName name of the table where the data should be cached. + * @param rCacheData range data to be cached. + * @param rCacheRange original cache range, including the empty region if + * any. + * @param rDataRange reduced cache range that includes only the non-empty + * data area. + */ +void putRangeDataIntoCache( + ScExternalRefCache& rRefCache, ScExternalRefCache::TokenArrayRef& pArray, + sal_uInt16 nFileId, const String& rTabName, + const vector<ScExternalRefCache::SingleRangeData>& rCacheData, + const ScRange& rCacheRange, const ScRange& rDataRange) +{ + if (pArray) + // Cache these values. + rRefCache.setCellRangeData(nFileId, rDataRange, rCacheData, pArray); + else + { + // Array is empty. Fill it with an empty matrix of the required size. + pArray.reset(lcl_fillEmptyMatrix(rCacheRange)); + + // Make sure to set this range 'cached', to prevent unnecessarily + // accessing the src document time and time again. + ScExternalRefCache::TableTypeRef pCacheTab = + rRefCache.getCacheTable(nFileId, rTabName, true, NULL); + if (pCacheTab) + pCacheTab->setCachedCellRange( + rCacheRange.aStart.Col(), rCacheRange.aStart.Row(), rCacheRange.aEnd.Col(), rCacheRange.aEnd.Row()); + } +} + +} + ScExternalRefCache::TokenArrayRef ScExternalRefManager::getDoubleRefTokens( sal_uInt16 nFileId, const String& rTabName, const ScRange& rRange, const ScAddress* pCurPos) { @@ -1753,13 +1763,18 @@ ScExternalRefCache::TokenArrayRef ScExternalRefManager::getDoubleRefTokens( maybeLinkExternalFile(nFileId); - ScRange aRange(rRange); + ScRange aDataRange(rRange); const ScDocument* pSrcDoc = getInMemorySrcDocument(nFileId); if (pSrcDoc) { - // Document already loaded. + // Document already loaded in memory. vector<ScExternalRefCache::SingleRangeData> aCacheData; - return getDoubleRefTokensFromSrcDoc(pSrcDoc, rTabName, aRange, aCacheData); + ScExternalRefCache::TokenArrayRef pArray = + getDoubleRefTokensFromSrcDoc(pSrcDoc, rTabName, aDataRange, aCacheData); + + // Put the data into cache. + putRangeDataIntoCache(maRefCache, pArray, nFileId, rTabName, aCacheData, rRange, aDataRange); + return pArray; } // Check if the given table name and the cell position is cached. @@ -1779,25 +1794,10 @@ ScExternalRefCache::TokenArrayRef ScExternalRefManager::getDoubleRefTokens( } vector<ScExternalRefCache::SingleRangeData> aCacheData; - pArray = getDoubleRefTokensFromSrcDoc(pSrcDoc, rTabName, aRange, aCacheData); - - if (pArray) - // Cache these values. - maRefCache.setCellRangeData(nFileId, aRange, aCacheData, pArray); - else - { - // Array is empty. Fill it with an empty matrix of the required size. - pArray.reset(lcl_fillEmptyMatrix(rRange)); - - // Make sure to set this range 'cached', to prevent unnecessarily - // accessing the src document time and time again. - ScExternalRefCache::TableTypeRef pCacheTab = - maRefCache.getCacheTable(nFileId, rTabName, true, NULL); - if (pCacheTab) - pCacheTab->setCachedCellRange( - rRange.aStart.Col(), rRange.aStart.Row(), rRange.aEnd.Col(), rRange.aEnd.Row()); - } + pArray = getDoubleRefTokensFromSrcDoc(pSrcDoc, rTabName, aDataRange, aCacheData); + // Put the data into cache. + putRangeDataIntoCache(maRefCache, pArray, nFileId, rTabName, aCacheData, rRange, aDataRange); return pArray; } @@ -1813,7 +1813,14 @@ ScExternalRefCache::TokenArrayRef ScExternalRefManager::getRangeNameTokens(sal_u if (pSrcDoc) { // Document already loaded in memory. - return getRangeNameTokensFromSrcDoc(nFileId, pSrcDoc, aName); + ScExternalRefCache::TokenArrayRef pArray = + getRangeNameTokensFromSrcDoc(nFileId, pSrcDoc, aName); + + if (pArray) + // Cache this range name array. + maRefCache.setRangeNameTokens(nFileId, aName, pArray); + + return pArray; } ScExternalRefCache::TokenArrayRef pArray = maRefCache.getRangeNameTokens(nFileId, rName); @@ -2055,10 +2062,6 @@ const ScDocument* ScExternalRefManager::getSrcDocument(sal_uInt16 nFileId) { // document already loaded. - // TODO: Find out a way to access a document that's already open in - // memory and re-use that instance, instead of loading it from the - // disk again. - SfxObjectShell* p = itr->second.maShell; itr->second.maLastAccess = Time(); return static_cast<ScDocShell*>(p)->GetDocument(); @@ -2131,7 +2134,7 @@ SfxObjectShellRef ScExternalRefManager::loadSrcDocument(sal_uInt16 nFileId, Stri { // Generate a relative file path. INetURLObject aBaseURL(getOwnDocumentName()); - aBaseURL.insertName(OUString::createFromAscii("content.xml")); + aBaseURL.insertName(OUString(RTL_CONSTASCII_USTRINGPARAM("content.xml"))); String aStr = URIHelper::simpleNormalizedMakeRelative( aBaseURL.GetMainURL(INetURLObject::NO_DECODE), aFile); @@ -2235,7 +2238,7 @@ void ScExternalRefManager::SrcFileData::maybeCreateRealFileName(const String& rO // Formulate the absolute file path from the relative path. const String& rRelPath = maRelativeName; INetURLObject aBaseURL(rOwnDocName); - aBaseURL.insertName(OUString::createFromAscii("content.xml")); + aBaseURL.insertName(OUString(RTL_CONSTASCII_USTRINGPARAM("content.xml"))); bool bWasAbs = false; maRealFileName = aBaseURL.smartRel2Abs(rRelPath, bWasAbs).GetMainURL(INetURLObject::NO_DECODE); } diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx index 1e85d17bd741..839b3bb3d563 100644 --- a/sc/source/ui/docshell/impex.cxx +++ b/sc/source/ui/docshell/impex.cxx @@ -516,7 +516,6 @@ BOOL ScImportExport::ExportStream( SvStream& rStrm, const String& rBaseURL, ULON } -//static void ScImportExport::WriteUnicodeOrByteString( SvStream& rStrm, const String& rString, BOOL bZero ) { rtl_TextEncoding eEnc = rStrm.GetStreamCharSet(); @@ -547,7 +546,6 @@ void ScImportExport::WriteUnicodeOrByteString( SvStream& rStrm, const String& rS // This function could be replaced by endlub() -// static void ScImportExport::WriteUnicodeOrByteEndl( SvStream& rStrm ) { if ( rStrm.GetStreamCharSet() == RTL_TEXTENCODING_UNICODE ) @@ -1361,7 +1359,6 @@ BOOL ScImportExport::ExtText2Doc( SvStream& rStrm ) } -// static const sal_Unicode* ScImportExport::ScanNextFieldFromString( const sal_Unicode* p, String& rField, sal_Unicode cStr, const sal_Unicode* pSeps, bool bMergeSeps, bool& rbIsQuoted ) { @@ -1398,10 +1395,38 @@ const sal_Unicode* ScImportExport::ScanNextFieldFromString( const sal_Unicode* p return p; } - // - // - // +namespace { + +/** + * Check if a given string has any line break characters or separators. + * + * @param rStr string to inspect. + * @param cSep separator character. + */ +bool hasLineBreaksOrSeps( const String& rStr, sal_Unicode cSep ) +{ + const sal_Unicode* p = rStr.GetBuffer(); + for (xub_StrLen i = 0, n = rStr.Len(); i < n; ++i, ++p) + { + sal_Unicode c = *p; + if (c == cSep) + // separator found. + return true; + + switch (c) + { + case _LF: + case _CR: + // line break found. + return true; + default: + ; + } + } + return false; +} +} BOOL ScImportExport::Doc2Text( SvStream& rStrm ) { @@ -1428,7 +1453,7 @@ BOOL ScImportExport::Doc2Text( SvStream& rStrm ) { if (bFormulas) { - pDoc->GetFormula( nCol, nRow, aRange.aStart.Tab(), aCell, TRUE ); + pDoc->GetFormula( nCol, nRow, aRange.aStart.Tab(), aCell ); if( aCell.Search( cSep ) != STRING_NOTFOUND ) lcl_WriteString( rStrm, aCell, cStr, cStr ); else @@ -1482,7 +1507,7 @@ BOOL ScImportExport::Doc2Text( SvStream& rStrm ) if( mExportTextOptions.mcSeparatorConvertTo && cSep ) aCell.SearchAndReplaceAll( cSep, mExportTextOptions.mcSeparatorConvertTo ); - if( mExportTextOptions.mbAddQuotes && ( aCell.Search( cSep ) != STRING_NOTFOUND ) ) + if( mExportTextOptions.mbAddQuotes && hasLineBreaksOrSeps(aCell, cSep) ) lcl_WriteString( rStrm, aCell, cStr, cStr ); else lcl_WriteSimpleString( rStrm, aCell ); @@ -1491,7 +1516,6 @@ BOOL ScImportExport::Doc2Text( SvStream& rStrm ) if( nCol < nEndCol ) lcl_WriteSimpleString( rStrm, String(cSep) ); } -// if( nRow < nEndRow ) WriteUnicodeOrByteEndl( rStrm ); if( rStrm.GetError() != SVSTREAM_OK ) break; @@ -2007,7 +2031,19 @@ BOOL ScImportExport::HTML2Doc( SvStream& rStrm, const String& rBaseURL ) USHORT nFlags = IDF_ALL & ~IDF_STYLES; pDoc->DeleteAreaTab( aRange, nFlags ); - pImp->WriteToDocument(); + + if (pExtOptions) + { + // Pick up import options if available. + LanguageType eLang = pExtOptions->GetLanguage(); + SvNumberFormatter aNumFormatter(pDoc->GetServiceManager(), eLang); + bool bSpecialNumber = pExtOptions->IsDetectSpecialNumber(); + pImp->WriteToDocument(false, 1.0, &aNumFormatter, bSpecialNumber); + } + else + // Regular import, with no options. + pImp->WriteToDocument(); + EndPaste(); } delete pImp; @@ -2058,7 +2094,7 @@ ScFormatFilterPlugin &ScFormatFilter::Get() if ( aModule.loadRelative( &thisModule, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SVLIBRARY( "scfilt" ) ) ) ) ) { - oslGenericFunction fn = aModule.getFunctionSymbol( ::rtl::OUString::createFromAscii( "ScFilterCreate" ) ); + oslGenericFunction fn = aModule.getFunctionSymbol( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ScFilterCreate" )) ); if (fn != NULL) plugin = reinterpret_cast<FilterFn>(fn)(); } diff --git a/sc/source/ui/docshell/makefile.mk b/sc/source/ui/docshell/makefile.mk index 6776a0b7efdd..6736362d9565 100644 --- a/sc/source/ui/docshell/makefile.mk +++ b/sc/source/ui/docshell/makefile.mk @@ -66,43 +66,35 @@ CXXFILES = \ SLOFILES = \ - $(SLO)$/docsh.obj \ - $(SLO)$/docsh2.obj \ - $(SLO)$/docsh3.obj \ - $(SLO)$/docsh4.obj \ - $(SLO)$/docsh5.obj \ - $(SLO)$/docsh6.obj \ - $(SLO)$/docsh7.obj \ - $(SLO)$/docsh8.obj \ - $(SLO)$/externalrefmgr.obj \ - $(SLO)$/tablink.obj \ - $(SLO)$/arealink.obj \ - $(SLO)$/dbdocfun.obj \ - $(SLO)$/dbdocimp.obj \ - $(SLO)$/impex.obj \ - $(SLO)$/docfunc.obj \ - $(SLO)$/olinefun.obj \ - $(SLO)$/servobj.obj \ - $(SLO)$/tpstat.obj \ - $(SLO)$/autostyl.obj \ - $(SLO)$/pagedata.obj \ + $(EXCEPTIONSFILES) \ $(SLO)$/hiranges.obj \ - $(SLO)$/pntlock.obj \ - $(SLO)$/sizedev.obj \ - $(SLO)$/editable.obj \ - $(SLO)$/macromgr.obj + $(SLO)$/pagedata.obj \ + $(SLO)$/pntlock.obj EXCEPTIONSFILES= \ + $(SLO)$/arealink.obj \ + $(SLO)$/autostyl.obj \ + $(SLO)$/dbdocfun.obj \ + $(SLO)$/dbdocimp.obj \ + $(SLO)$/docfunc.obj \ $(SLO)$/docsh.obj \ - $(SLO)$/docsh3.obj \ + $(SLO)$/docsh2.obj \ + $(SLO)$/docsh3.obj \ $(SLO)$/docsh4.obj \ + $(SLO)$/docsh5.obj \ $(SLO)$/docsh6.obj \ + $(SLO)$/docsh7.obj \ $(SLO)$/docsh8.obj \ + $(SLO)$/editable.obj \ $(SLO)$/externalrefmgr.obj \ - $(SLO)$/dbdocimp.obj \ - $(SLO)$/docfunc.obj \ - $(SLO)$/macromgr.obj + $(SLO)$/impex.obj \ + $(SLO)$/macromgr.obj \ + $(SLO)$/olinefun.obj \ + $(SLO)$/servobj.obj \ + $(SLO)$/sizedev.obj \ + $(SLO)$/tablink.obj \ + $(SLO)$/tpstat.obj SRS1NAME=$(TARGET) SRC1FILES = tpstat.src @@ -133,7 +125,7 @@ LIB1OBJFILES = \ $(SLO)$/pntlock.obj \ $(SLO)$/sizedev.obj \ $(SLO)$/editable.obj \ - $(SLO)$/macromgr.obj + $(SLO)$/macromgr.obj # --- Tagets ------------------------------------------------------- diff --git a/sc/source/ui/docshell/servobj.cxx b/sc/source/ui/docshell/servobj.cxx index 186b94f3bf83..cd35f6068255 100644 --- a/sc/source/ui/docshell/servobj.cxx +++ b/sc/source/ui/docshell/servobj.cxx @@ -124,7 +124,7 @@ ScServerObject::ScServerObject( ScDocShell* pShell, const String& rItem ) : StartListening(*SFX_APP()); // for SC_HINT_AREAS_CHANGED } -__EXPORT ScServerObject::~ScServerObject() +ScServerObject::~ScServerObject() { Clear(); } @@ -149,7 +149,7 @@ void ScServerObject::EndListeningAll() SfxListener::EndListeningAll(); } -BOOL __EXPORT ScServerObject::GetData( +BOOL ScServerObject::GetData( ::com::sun::star::uno::Any & rData /*out param*/, const String & rMimeType, BOOL /* bSynchron */ ) { @@ -213,7 +213,7 @@ BOOL __EXPORT ScServerObject::GetData( return 0; } -void __EXPORT ScServerObject::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) +void ScServerObject::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) { BOOL bDataChanged = FALSE; diff --git a/sc/source/ui/docshell/tablink.cxx b/sc/source/ui/docshell/tablink.cxx index f949b3ffb45c..5116e54cb022 100644 --- a/sc/source/ui/docshell/tablink.cxx +++ b/sc/source/ui/docshell/tablink.cxx @@ -113,7 +113,7 @@ ScTableLink::ScTableLink(SfxObjectShell* pShell, const String& rFile, SetRefreshControl( pImpl->m_pDocSh->GetDocument()->GetRefreshTimerControlAddress() ); } -__EXPORT ScTableLink::~ScTableLink() +ScTableLink::~ScTableLink() { // Verbindung aufheben @@ -127,7 +127,7 @@ __EXPORT ScTableLink::~ScTableLink() delete pImpl; } -void __EXPORT ScTableLink::Edit( Window* pParent, const Link& rEndEditHdl ) +void ScTableLink::Edit( Window* pParent, const Link& rEndEditHdl ) { // DefModalDialogParent setzen, weil evtl. aus der DocShell beim ConvertFrom // ein Optionen-Dialog kommt... @@ -141,7 +141,7 @@ void __EXPORT ScTableLink::Edit( Window* pParent, const Link& rEndEditHdl ) SvBaseLink::Edit( pParent, LINK( this, ScTableLink, TableEndEditHdl ) ); } -void __EXPORT ScTableLink::DataChanged( const String&, +void ScTableLink::DataChanged( const String&, const ::com::sun::star::uno::Any& ) { sfx2::LinkManager* pLinkManager=pImpl->m_pDocSh->GetDocument()->GetLinkManager(); @@ -160,7 +160,7 @@ void __EXPORT ScTableLink::DataChanged( const String&, } } -void __EXPORT ScTableLink::Closed() +void ScTableLink::Closed() { // Verknuepfung loeschen: Undo ScDocument* pDoc = pImpl->m_pDocSh->GetDocument(); @@ -341,7 +341,7 @@ BOOL ScTableLink::Refresh(const String& rNewFile, const String& rNewFilter, pCell = aCellIter.GetNext(); } - ULONG nRanges = aErrorCells.Count(); + size_t nRanges = aErrorCells.size(); if ( nRanges ) // found any? { ScTokenArray aTokenArr; @@ -350,9 +350,9 @@ BOOL ScTableLink::Refresh(const String& rNewFile, const String& rNewFilter, aTokenArr.AddOpCode( ocClose ); aTokenArr.AddOpCode( ocStop ); - for (ULONG nPos=0; nPos<nRanges; nPos++) + for (size_t nPos=0; nPos < nRanges; nPos++) { - const ScRange* pRange = aErrorCells.GetObject(nPos); + const ScRange* pRange = aErrorCells[ nPos ]; SCCOL nStartCol = pRange->aStart.Col(); SCROW nStartRow = pRange->aStart.Row(); SCCOL nEndCol = pRange->aEnd.Col(); @@ -404,7 +404,6 @@ BOOL ScTableLink::Refresh(const String& rNewFile, const String& rNewFilter, // aufraeumen -// pSrcShell->DoClose(); aRef->DoClose(); // Undo @@ -455,7 +454,7 @@ IMPL_LINK( ScTableLink, TableEndEditHdl, ::sfx2::SvBaseLink*, pLink ) // === ScDocumentLoader ================================================== -String ScDocumentLoader::GetOptions( SfxMedium& rMedium ) // static +String ScDocumentLoader::GetOptions( SfxMedium& rMedium ) { SfxItemSet* pSet = rMedium.GetItemSet(); const SfxPoolItem* pItem; @@ -467,7 +466,7 @@ String ScDocumentLoader::GetOptions( SfxMedium& rMedium ) // static BOOL ScDocumentLoader::GetFilterName( const String& rFileName, String& rFilter, String& rOptions, - BOOL bWithContent, BOOL bWithInteraction ) // static + BOOL bWithContent, BOOL bWithInteraction ) { TypeId aScType = TYPE(ScDocShell); SfxObjectShell* pDocSh = SfxObjectShell::GetFirst( &aScType ); @@ -521,7 +520,7 @@ BOOL ScDocumentLoader::GetFilterName( const String& rFileName, return bOK; } -void ScDocumentLoader::RemoveAppPrefix( String& rFilterName ) // static +void ScDocumentLoader::RemoveAppPrefix( String& rFilterName ) { String aAppPrefix = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( STRING_SCAPP )); aAppPrefix.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ": " )); @@ -577,9 +576,6 @@ ScDocumentLoader::ScDocumentLoader( const String& rFileName, ScDocumentLoader::~ScDocumentLoader() { -/* if ( pDocShell ) - pDocShell->DoClose(); -*/ if ( aRef.Is() ) aRef->DoClose(); else if ( pMedium ) diff --git a/sc/source/ui/docshell/tpstat.cxx b/sc/source/ui/docshell/tpstat.cxx index b5ced9d105a8..32a45998827e 100644 --- a/sc/source/ui/docshell/tpstat.cxx +++ b/sc/source/ui/docshell/tpstat.cxx @@ -45,7 +45,7 @@ // Dokumentinfo-Tabpage: //======================================================================== -SfxTabPage* __EXPORT ScDocStatPage::Create( Window *pParent, const SfxItemSet& rSet ) +SfxTabPage* ScDocStatPage::Create( Window *pParent, const SfxItemSet& rSet ) { return new ScDocStatPage( pParent, rSet ); } @@ -80,20 +80,20 @@ ScDocStatPage::ScDocStatPage( Window *pParent, const SfxItemSet& rSet ) //------------------------------------------------------------------------ -__EXPORT ScDocStatPage::~ScDocStatPage() +ScDocStatPage::~ScDocStatPage() { } //------------------------------------------------------------------------ -BOOL __EXPORT ScDocStatPage::FillItemSet( SfxItemSet& /* rSet */ ) +BOOL ScDocStatPage::FillItemSet( SfxItemSet& /* rSet */ ) { return FALSE; } //------------------------------------------------------------------------ -void __EXPORT ScDocStatPage::Reset( const SfxItemSet& /* rSet */ ) +void ScDocStatPage::Reset( const SfxItemSet& /* rSet */ ) { } diff --git a/sc/source/ui/docshell/tpstat.src b/sc/source/ui/docshell/tpstat.src index 7226da4642c3..3ee5b91a7b2e 100644 --- a/sc/source/ui/docshell/tpstat.src +++ b/sc/source/ui/docshell/tpstat.src @@ -77,36 +77,3 @@ TabPage RID_SCPAGE_STAT Text [ en-US ] = "Document: " ; }; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/drawfunc/drawsh.cxx b/sc/source/ui/drawfunc/drawsh.cxx index 5da044f24d89..4e6ac3ad6b8b 100644 --- a/sc/source/ui/drawfunc/drawsh.cxx +++ b/sc/source/ui/drawfunc/drawsh.cxx @@ -113,7 +113,6 @@ void ScDrawShell::ExecDrawAttr( SfxRequest& rReq ) { USHORT nSlot = rReq.GetSlot(); Window* pWin = pViewData->GetActiveWin(); -// SfxViewFrame* pViewFrame = SfxViewShell::Current()->GetViewFrame(); //!!! koennte knallen ScDrawView* pView = pViewData->GetScDrawView(); SdrModel* pDoc = pViewData->GetDocument()->GetDrawLayer(); @@ -242,7 +241,6 @@ void ScDrawShell::ExecDrawAttr( SfxRequest& rReq ) if( !pArgs ) { - // const SdrMarkList& rMarkList = pView->GetMarkedObjectList(); if( rMarkList.GetMark(0) != 0 ) { SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj(); @@ -254,7 +252,6 @@ void ScDrawShell::ExecDrawAttr( SfxRequest& rReq ) // --------- Itemset fuer Groesse und Position -------- SfxItemSet aNewGeoAttr(pView->GetGeoAttrFromMarked()); - //SvxCaptionTabDialog* pDlg = new SvxCaptionTabDialog(pWin, pView); SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); if ( pFact ) { diff --git a/sc/source/ui/drawfunc/drawsh2.cxx b/sc/source/ui/drawfunc/drawsh2.cxx index 0a5b5ad7c21f..a1f34292647a 100644 --- a/sc/source/ui/drawfunc/drawsh2.cxx +++ b/sc/source/ui/drawfunc/drawsh2.cxx @@ -113,7 +113,7 @@ void ScDrawShell::GetState( SfxItemSet& rSet ) // Zustaende / Toggles if ( !bDisableAnchor ) { - switch( pView->GetAnchor() ) + switch( pView->GetAnchorType() ) { case SCA_PAGE: rSet.Put( SfxBoolItem( SID_ANCHOR_PAGE, TRUE ) ); diff --git a/sc/source/ui/drawfunc/drawsh5.cxx b/sc/source/ui/drawfunc/drawsh5.cxx index 23270038e419..abe07cf93986 100644 --- a/sc/source/ui/drawfunc/drawsh5.cxx +++ b/sc/source/ui/drawfunc/drawsh5.cxx @@ -108,10 +108,10 @@ void ScDrawShell::GetHLinkState( SfxItemSet& rSet ) // Hyperlink uno::Reference< beans::XPropertySet > xPropSet( xControlModel, uno::UNO_QUERY ); uno::Reference< beans::XPropertySetInfo > xInfo = xPropSet->getPropertySetInfo(); - rtl::OUString sPropButtonType = rtl::OUString::createFromAscii( "ButtonType" ); - rtl::OUString sPropTargetURL = rtl::OUString::createFromAscii( "TargetURL" ); - rtl::OUString sPropTargetFrame = rtl::OUString::createFromAscii( "TargetFrame" ); - rtl::OUString sPropLabel = rtl::OUString::createFromAscii( "Label" ); + rtl::OUString sPropButtonType(RTL_CONSTASCII_USTRINGPARAM( "ButtonType" )); + rtl::OUString sPropTargetURL(RTL_CONSTASCII_USTRINGPARAM( "TargetURL" )); + rtl::OUString sPropTargetFrame(RTL_CONSTASCII_USTRINGPARAM( "TargetFrame" )); + rtl::OUString sPropLabel(RTL_CONSTASCII_USTRINGPARAM( "Label" )); if(xInfo->hasPropertyByName( sPropButtonType )) { @@ -195,20 +195,16 @@ void ScDrawShell::ExecuteHLink( SfxRequest& rReq ) uno::Reference< beans::XPropertySet > xPropSet( xControlModel, uno::UNO_QUERY ); uno::Reference< beans::XPropertySetInfo > xInfo = xPropSet->getPropertySetInfo(); - rtl::OUString sPropTargetURL = - rtl::OUString::createFromAscii( "TargetURL" ); + rtl::OUString sPropTargetURL(RTL_CONSTASCII_USTRINGPARAM( "TargetURL" )); // Darf man eine URL an dem Objekt setzen? if (xInfo->hasPropertyByName( sPropTargetURL )) { // Ja! - rtl::OUString sPropButtonType = - rtl::OUString::createFromAscii( "ButtonType" ); - rtl::OUString sPropTargetFrame = - rtl::OUString::createFromAscii( "TargetFrame" ); - rtl::OUString sPropLabel = - rtl::OUString::createFromAscii( "Label" ); + rtl::OUString sPropButtonType(RTL_CONSTASCII_USTRINGPARAM( "ButtonType") ); + rtl::OUString sPropTargetFrame(RTL_CONSTASCII_USTRINGPARAM( "TargetFrame" )); + rtl::OUString sPropLabel(RTL_CONSTASCII_USTRINGPARAM( "Label" )); uno::Any aAny; if ( xInfo->hasPropertyByName( sPropLabel ) ) @@ -389,26 +385,26 @@ void ScDrawShell::ExecDrawFunc( SfxRequest& rReq ) break; case SID_ANCHOR_PAGE: - pView->SetAnchor( SCA_PAGE ); + pView->SetPageAnchored(); rBindings.Invalidate( SID_ANCHOR_PAGE ); rBindings.Invalidate( SID_ANCHOR_CELL ); break; case SID_ANCHOR_CELL: - pView->SetAnchor( SCA_CELL ); + pView->SetCellAnchored(); rBindings.Invalidate( SID_ANCHOR_PAGE ); rBindings.Invalidate( SID_ANCHOR_CELL ); break; case SID_ANCHOR_TOGGLE: { - switch( pView->GetAnchor() ) + switch( pView->GetAnchorType() ) { case SCA_CELL: - pView->SetAnchor( SCA_PAGE ); + pView->SetPageAnchored(); break; default: - pView->SetAnchor( SCA_CELL ); + pView->SetCellAnchored(); break; } } diff --git a/sc/source/ui/drawfunc/drformsh.src b/sc/source/ui/drawfunc/drformsh.src index 65e98eea7b2c..751c2ea86db5 100644 --- a/sc/source/ui/drawfunc/drformsh.src +++ b/sc/source/ui/drawfunc/drformsh.src @@ -216,35 +216,3 @@ Menu RID_POPUP_DRAWFORM ITEM_GROUP_MENU }; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/drawfunc/drtxtob.cxx b/sc/source/ui/drawfunc/drtxtob.cxx index aba4cfa8eabe..0246aa2f6ac6 100644 --- a/sc/source/ui/drawfunc/drtxtob.cxx +++ b/sc/source/ui/drawfunc/drtxtob.cxx @@ -139,7 +139,7 @@ ScDrawTextObjectBar::ScDrawTextObjectBar(ScViewData* pData) : SetName(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("DrawText"))); } -__EXPORT ScDrawTextObjectBar::~ScDrawTextObjectBar() +ScDrawTextObjectBar::~ScDrawTextObjectBar() { if ( pClipEvtLstnr ) { @@ -159,7 +159,7 @@ __EXPORT ScDrawTextObjectBar::~ScDrawTextObjectBar() // //======================================================================== -void __EXPORT ScDrawTextObjectBar::Execute( SfxRequest &rReq ) +void ScDrawTextObjectBar::Execute( SfxRequest &rReq ) { ScDrawView* pView = pViewData->GetScDrawView(); OutlinerView* pOutView = pView->GetTextEditOutlinerView(); @@ -373,7 +373,7 @@ void __EXPORT ScDrawTextObjectBar::Execute( SfxRequest &rReq ) } } -void __EXPORT ScDrawTextObjectBar::GetState( SfxItemSet& rSet ) +void ScDrawTextObjectBar::GetState( SfxItemSet& rSet ) { SfxViewFrame* pViewFrm = pViewData->GetViewShell()->GetViewFrame(); BOOL bHasFontWork = pViewFrm->HasChildWindow(SID_FONTWORK); @@ -501,7 +501,7 @@ IMPL_LINK( ScDrawTextObjectBar, ClipboardChanged, TransferableDataHelper*, pData return 0; } -void __EXPORT ScDrawTextObjectBar::GetClipState( SfxItemSet& rSet ) +void ScDrawTextObjectBar::GetClipState( SfxItemSet& rSet ) { SdrView* pView = pViewData->GetScDrawView(); if ( !pView->GetTextEditOutlinerView() ) @@ -562,7 +562,7 @@ void __EXPORT ScDrawTextObjectBar::GetClipState( SfxItemSet& rSet ) // //======================================================================== -void __EXPORT ScDrawTextObjectBar::ExecuteToggle( SfxRequest &rReq ) +void ScDrawTextObjectBar::ExecuteToggle( SfxRequest &rReq ) { // Unterstreichung @@ -677,7 +677,7 @@ void lcl_RemoveFields( OutlinerView& rOutView ) rOutView.SetSelection( aOldSel ); } -void __EXPORT ScDrawTextObjectBar::ExecuteAttr( SfxRequest &rReq ) +void ScDrawTextObjectBar::ExecuteAttr( SfxRequest &rReq ) { SdrView* pView = pViewData->GetScDrawView(); const SfxItemSet* pArgs = rReq.GetArgs(); @@ -876,7 +876,7 @@ void __EXPORT ScDrawTextObjectBar::ExecuteAttr( SfxRequest &rReq ) } } -void __EXPORT ScDrawTextObjectBar::GetAttrState( SfxItemSet& rDestSet ) +void ScDrawTextObjectBar::GetAttrState( SfxItemSet& rDestSet ) { if ( IsNoteEdit() ) { diff --git a/sc/source/ui/drawfunc/drtxtob2.cxx b/sc/source/ui/drawfunc/drtxtob2.cxx index aef408544aa4..056dea999853 100644 --- a/sc/source/ui/drawfunc/drtxtob2.cxx +++ b/sc/source/ui/drawfunc/drtxtob2.cxx @@ -70,7 +70,7 @@ BOOL ScDrawTextObjectBar::IsNoteEdit() // wenn kein Text editiert wird, Funktionen wie in drawsh -void __EXPORT ScDrawTextObjectBar::ExecuteGlobal( SfxRequest &rReq ) +void ScDrawTextObjectBar::ExecuteGlobal( SfxRequest &rReq ) { ScTabView* pTabView = pViewData->GetView(); ScDrawView* pView = pTabView->GetScDrawView(); @@ -148,7 +148,7 @@ void ScDrawTextObjectBar::GetGlobalClipState( SfxItemSet& rSet ) } } -void __EXPORT ScDrawTextObjectBar::ExecuteExtra( SfxRequest &rReq ) +void ScDrawTextObjectBar::ExecuteExtra( SfxRequest &rReq ) { ScTabView* pTabView = pViewData->GetView(); ScDrawView* pView = pTabView->GetScDrawView(); diff --git a/sc/source/ui/drawfunc/fuconarc.cxx b/sc/source/ui/drawfunc/fuconarc.cxx index 48c529d923e6..664ab7c5c108 100644 --- a/sc/source/ui/drawfunc/fuconarc.cxx +++ b/sc/source/ui/drawfunc/fuconarc.cxx @@ -66,7 +66,7 @@ FuConstArc::~FuConstArc() |* \************************************************************************/ -BOOL __EXPORT FuConstArc::MouseButtonDown( const MouseEvent& rMEvt ) +BOOL FuConstArc::MouseButtonDown( const MouseEvent& rMEvt ) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); @@ -89,7 +89,7 @@ BOOL __EXPORT FuConstArc::MouseButtonDown( const MouseEvent& rMEvt ) |* \************************************************************************/ -BOOL __EXPORT FuConstArc::MouseMove( const MouseEvent& rMEvt ) +BOOL FuConstArc::MouseMove( const MouseEvent& rMEvt ) { return FuConstruct::MouseMove(rMEvt); } @@ -100,7 +100,7 @@ BOOL __EXPORT FuConstArc::MouseMove( const MouseEvent& rMEvt ) |* \************************************************************************/ -BOOL __EXPORT FuConstArc::MouseButtonUp( const MouseEvent& rMEvt ) +BOOL FuConstArc::MouseButtonUp( const MouseEvent& rMEvt ) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); @@ -133,7 +133,7 @@ BOOL __EXPORT FuConstArc::MouseButtonUp( const MouseEvent& rMEvt ) |* \************************************************************************/ -BOOL __EXPORT FuConstArc::KeyInput(const KeyEvent& rKEvt) +BOOL FuConstArc::KeyInput(const KeyEvent& rKEvt) { BOOL bReturn = FuConstruct::KeyInput(rKEvt); return(bReturn); diff --git a/sc/source/ui/drawfunc/fuconcustomshape.cxx b/sc/source/ui/drawfunc/fuconcustomshape.cxx index dfcbdb2f5d49..4310e9da8ce8 100644 --- a/sc/source/ui/drawfunc/fuconcustomshape.cxx +++ b/sc/source/ui/drawfunc/fuconcustomshape.cxx @@ -76,7 +76,7 @@ FuConstCustomShape::~FuConstCustomShape() |* \************************************************************************/ -BOOL __EXPORT FuConstCustomShape::MouseButtonDown(const MouseEvent& rMEvt) +BOOL FuConstCustomShape::MouseButtonDown(const MouseEvent& rMEvt) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); @@ -114,7 +114,7 @@ BOOL __EXPORT FuConstCustomShape::MouseButtonDown(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuConstCustomShape::MouseMove(const MouseEvent& rMEvt) +BOOL FuConstCustomShape::MouseMove(const MouseEvent& rMEvt) { return FuConstruct::MouseMove(rMEvt); } @@ -125,7 +125,7 @@ BOOL __EXPORT FuConstCustomShape::MouseMove(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuConstCustomShape::MouseButtonUp(const MouseEvent& rMEvt) +BOOL FuConstCustomShape::MouseButtonUp(const MouseEvent& rMEvt) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); @@ -150,7 +150,7 @@ BOOL __EXPORT FuConstCustomShape::MouseButtonUp(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuConstCustomShape::KeyInput(const KeyEvent& rKEvt) +BOOL FuConstCustomShape::KeyInput(const KeyEvent& rKEvt) { BOOL bReturn = FuConstruct::KeyInput(rKEvt); return(bReturn); diff --git a/sc/source/ui/drawfunc/fuconpol.cxx b/sc/source/ui/drawfunc/fuconpol.cxx index d10259e3456e..05927c968e2e 100644 --- a/sc/source/ui/drawfunc/fuconpol.cxx +++ b/sc/source/ui/drawfunc/fuconpol.cxx @@ -74,7 +74,7 @@ FuConstPolygon::~FuConstPolygon() |* \************************************************************************/ -BOOL __EXPORT FuConstPolygon::MouseButtonDown(const MouseEvent& rMEvt) +BOOL FuConstPolygon::MouseButtonDown(const MouseEvent& rMEvt) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); @@ -106,7 +106,7 @@ BOOL __EXPORT FuConstPolygon::MouseButtonDown(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuConstPolygon::MouseMove(const MouseEvent& rMEvt) +BOOL FuConstPolygon::MouseMove(const MouseEvent& rMEvt) { pView->MouseMove(rMEvt, pWindow); BOOL bReturn = FuConstruct::MouseMove(rMEvt); @@ -119,7 +119,7 @@ BOOL __EXPORT FuConstPolygon::MouseMove(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuConstPolygon::MouseButtonUp(const MouseEvent& rMEvt) +BOOL FuConstPolygon::MouseButtonUp(const MouseEvent& rMEvt) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); @@ -156,7 +156,7 @@ BOOL __EXPORT FuConstPolygon::MouseButtonUp(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuConstPolygon::KeyInput(const KeyEvent& rKEvt) +BOOL FuConstPolygon::KeyInput(const KeyEvent& rKEvt) { BOOL bReturn = FuConstruct::KeyInput(rKEvt); diff --git a/sc/source/ui/drawfunc/fuconrec.cxx b/sc/source/ui/drawfunc/fuconrec.cxx index 71d46ea98b7c..f9b5b0b811d9 100644 --- a/sc/source/ui/drawfunc/fuconrec.cxx +++ b/sc/source/ui/drawfunc/fuconrec.cxx @@ -74,7 +74,7 @@ FuConstRectangle::~FuConstRectangle() |* \************************************************************************/ -BOOL __EXPORT FuConstRectangle::MouseButtonDown(const MouseEvent& rMEvt) +BOOL FuConstRectangle::MouseButtonDown(const MouseEvent& rMEvt) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); @@ -107,7 +107,7 @@ BOOL __EXPORT FuConstRectangle::MouseButtonDown(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuConstRectangle::MouseMove(const MouseEvent& rMEvt) +BOOL FuConstRectangle::MouseMove(const MouseEvent& rMEvt) { return FuConstruct::MouseMove(rMEvt); } @@ -118,7 +118,7 @@ BOOL __EXPORT FuConstRectangle::MouseMove(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuConstRectangle::MouseButtonUp(const MouseEvent& rMEvt) +BOOL FuConstRectangle::MouseButtonUp(const MouseEvent& rMEvt) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); @@ -161,7 +161,7 @@ BOOL __EXPORT FuConstRectangle::MouseButtonUp(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuConstRectangle::KeyInput(const KeyEvent& rKEvt) +BOOL FuConstRectangle::KeyInput(const KeyEvent& rKEvt) { BOOL bReturn = FuConstruct::KeyInput(rKEvt); return(bReturn); diff --git a/sc/source/ui/drawfunc/fuconstr.cxx b/sc/source/ui/drawfunc/fuconstr.cxx index 63b1a34ac221..f6677d686754 100644 --- a/sc/source/ui/drawfunc/fuconstr.cxx +++ b/sc/source/ui/drawfunc/fuconstr.cxx @@ -83,7 +83,7 @@ BYTE FuConstruct::Command(const CommandEvent& rCEvt) |* \************************************************************************/ -BOOL __EXPORT FuConstruct::MouseButtonDown(const MouseEvent& rMEvt) +BOOL FuConstruct::MouseButtonDown(const MouseEvent& rMEvt) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); @@ -130,7 +130,7 @@ BOOL __EXPORT FuConstruct::MouseButtonDown(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuConstruct::MouseMove(const MouseEvent& rMEvt) +BOOL FuConstruct::MouseMove(const MouseEvent& rMEvt) { FuDraw::MouseMove(rMEvt); @@ -177,7 +177,7 @@ BOOL __EXPORT FuConstruct::MouseMove(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuConstruct::MouseButtonUp(const MouseEvent& rMEvt) +BOOL FuConstruct::MouseButtonUp(const MouseEvent& rMEvt) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); @@ -275,7 +275,7 @@ BOOL FuConstruct::SimpleMouseButtonUp(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuConstruct::KeyInput(const KeyEvent& rKEvt) +BOOL FuConstruct::KeyInput(const KeyEvent& rKEvt) { BOOL bReturn = FALSE; diff --git a/sc/source/ui/drawfunc/fuconuno.cxx b/sc/source/ui/drawfunc/fuconuno.cxx index 45df699b3e75..a1ff645f379a 100644 --- a/sc/source/ui/drawfunc/fuconuno.cxx +++ b/sc/source/ui/drawfunc/fuconuno.cxx @@ -68,7 +68,7 @@ FuConstUnoControl::~FuConstUnoControl() |* \************************************************************************/ -BOOL __EXPORT FuConstUnoControl::MouseButtonDown(const MouseEvent& rMEvt) +BOOL FuConstUnoControl::MouseButtonDown(const MouseEvent& rMEvt) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); @@ -91,7 +91,7 @@ BOOL __EXPORT FuConstUnoControl::MouseButtonDown(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuConstUnoControl::MouseMove(const MouseEvent& rMEvt) +BOOL FuConstUnoControl::MouseMove(const MouseEvent& rMEvt) { return FuConstruct::MouseMove(rMEvt); } @@ -102,7 +102,7 @@ BOOL __EXPORT FuConstUnoControl::MouseMove(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuConstUnoControl::MouseButtonUp(const MouseEvent& rMEvt) +BOOL FuConstUnoControl::MouseButtonUp(const MouseEvent& rMEvt) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); @@ -127,7 +127,7 @@ BOOL __EXPORT FuConstUnoControl::MouseButtonUp(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuConstUnoControl::KeyInput(const KeyEvent& rKEvt) +BOOL FuConstUnoControl::KeyInput(const KeyEvent& rKEvt) { BOOL bReturn = FuConstruct::KeyInput(rKEvt); return(bReturn); diff --git a/sc/source/ui/drawfunc/fudraw.cxx b/sc/source/ui/drawfunc/fudraw.cxx index 70342cc10e24..2f2fb0690475 100644 --- a/sc/source/ui/drawfunc/fudraw.cxx +++ b/sc/source/ui/drawfunc/fudraw.cxx @@ -92,17 +92,10 @@ void FuDraw::DoModifiers(const MouseEvent& rMEvt) // Alt = zentrisch BOOL bShift = rMEvt.IsShift(); -// BOOL bCtrl = rMEvt.IsMod1(); BOOL bAlt = rMEvt.IsMod2(); -// ScViewData* pViewData = pViewShell->GetViewData(); -// const ScViewOptions& rOpt = pViewData->GetOptions(); -// const ScGridOptions& rGrid = rOpt.GetGridOptions(); -// BOOL bGridOpt = rGrid.GetUseGridSnap(); - - BOOL bOrtho = bShift; + bool bOrtho = bShift; BOOL bAngleSnap = bShift; -// BOOL bGridSnap = ( bGridOpt != bCtrl ); // andere Snap's nicht unterstuetzt BOOL bCenter = bAlt; // #i33136# @@ -116,13 +109,6 @@ void FuDraw::DoModifiers(const MouseEvent& rMEvt) if (pView->IsAngleSnapEnabled() != bAngleSnap) pView->SetAngleSnapEnabled(bAngleSnap); -/* Control fuer Snap beisst sich beim Verschieben mit "kopieren" !!! - - if (pView->IsGridSnap() != bGridSnap) - pView->SetGridSnap(bGridSnap); - if (pView->IsSnapEnabled() != bGridSnap) - pView->SetSnapEnabled(bGridSnap); -*/ if (pView->IsCreate1stPointAsCenter() != bCenter) pView->SetCreate1stPointAsCenter(bCenter); if (pView->IsResizeAtCenter() != bCenter) @@ -159,7 +145,7 @@ void FuDraw::ResetModifiers() |* \************************************************************************/ -BOOL __EXPORT FuDraw::MouseButtonDown(const MouseEvent& rMEvt) +BOOL FuDraw::MouseButtonDown(const MouseEvent& rMEvt) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); @@ -174,7 +160,7 @@ BOOL __EXPORT FuDraw::MouseButtonDown(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuDraw::MouseMove(const MouseEvent& rMEvt) +BOOL FuDraw::MouseMove(const MouseEvent& rMEvt) { // #106438# evaluate modifiers only if in a drawing layer action // (don't interfere with keyboard shortcut handling) @@ -190,7 +176,7 @@ BOOL __EXPORT FuDraw::MouseMove(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuDraw::MouseButtonUp(const MouseEvent& rMEvt) +BOOL FuDraw::MouseButtonUp(const MouseEvent& rMEvt) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); @@ -241,7 +227,7 @@ BOOL lcl_KeyEditMode( SdrObject* pObj, ScTabViewShell* pViewShell, const KeyEven return bReturn; } -BOOL __EXPORT FuDraw::KeyInput(const KeyEvent& rKEvt) +BOOL FuDraw::KeyInput(const KeyEvent& rKEvt) { BOOL bReturn = FALSE; ScViewData& rViewData = *pViewShell->GetViewData(); @@ -249,25 +235,6 @@ BOOL __EXPORT FuDraw::KeyInput(const KeyEvent& rKEvt) switch ( rKEvt.GetKeyCode().GetCode() ) { case KEY_ESCAPE: - - /* 18.12.95: TextShell beibehalten nicht mehr gewuenscht... - * - * if ( pView->IsAction() ) - * { - * pView->BrkAction(); - * pWindow->ReleaseMouse(); - * bReturn = TRUE; - * } - * else if ( pView->IsTextEdit() ) - * { - * pView->EndTextEdit(); - * pView->SetCreateMode(); - * pViewShell->GetScDrawView()->InvalidateDrawTextAttrs(); - * bReturn = TRUE; - * } - * else - */ - if ( pViewShell->IsDrawTextShell() || aSfxRequest.GetSlot() == SID_DRAW_NOTEEDIT ) { // in normale Draw-Shell, wenn Objekt selektiert, sonst Zeichnen aus diff --git a/sc/source/ui/drawfunc/fuins1.cxx b/sc/source/ui/drawfunc/fuins1.cxx index 41501905fe61..b26e418ce9ed 100644 --- a/sc/source/ui/drawfunc/fuins1.cxx +++ b/sc/source/ui/drawfunc/fuins1.cxx @@ -87,7 +87,7 @@ // ////------------------------------------------------------------------------ // -//__EXPORT ImportProgress::~ImportProgress() +//ImportProgress::~ImportProgress() //{ // aProgress.SetState( 100 ); //} diff --git a/sc/source/ui/drawfunc/fuins2.cxx b/sc/source/ui/drawfunc/fuins2.cxx index 89a483d736d5..c49ac8bd2b47 100644 --- a/sc/source/ui/drawfunc/fuins2.cxx +++ b/sc/source/ui/drawfunc/fuins2.cxx @@ -162,7 +162,7 @@ void lcl_ChartInit( const uno::Reference < embed::XEmbeddedObject >& xObj, ScVie // use ScChartPositioner to auto-detect column/row headers (like ScChartArray in old version) ScRangeListRef aRangeListRef( new ScRangeList ); aRangeListRef->Parse( aRangeString, pScDoc ); - if ( aRangeListRef->Count() ) + if ( !aRangeListRef->empty() ) { pScDoc->LimitChartIfAll( aRangeListRef ); // limit whole columns/rows to used area @@ -193,16 +193,16 @@ void lcl_ChartInit( const uno::Reference < embed::XEmbeddedObject >& xObj, ScVie uno::Sequence< beans::PropertyValue > aArgs( 4 ); aArgs[0] = beans::PropertyValue( - ::rtl::OUString::createFromAscii("CellRangeRepresentation"), -1, + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CellRangeRepresentation")), -1, uno::makeAny( aRangeString ), beans::PropertyState_DIRECT_VALUE ); aArgs[1] = beans::PropertyValue( - ::rtl::OUString::createFromAscii("HasCategories"), -1, + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HasCategories")), -1, uno::makeAny( bHasCategories ), beans::PropertyState_DIRECT_VALUE ); aArgs[2] = beans::PropertyValue( - ::rtl::OUString::createFromAscii("FirstCellAsLabel"), -1, + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FirstCellAsLabel")), -1, uno::makeAny( bFirstCellAsLabel ), beans::PropertyState_DIRECT_VALUE ); aArgs[3] = beans::PropertyValue( - ::rtl::OUString::createFromAscii("DataRowSource"), -1, + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DataRowSource")), -1, uno::makeAny( eDataRowSource ), beans::PropertyState_DIRECT_VALUE ); xReceiver->setArguments( aArgs ); @@ -312,7 +312,7 @@ FuInsertOLE::FuInsertOLE(ScTabViewShell* pViewSh, Window* pWin, ScDrawView* pVie uno::Reference < beans::XPropertySet > xSet( xObj->getComponent(), uno::UNO_QUERY ); if ( xSet.is() ) { - xSet->setPropertyValue( ::rtl::OUString::createFromAscii("PluginURL"), + xSet->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PluginURL")), uno::makeAny( ::rtl::OUString( aURL.GetMainURL( INetURLObject::NO_DECODE ) ) ) ); } } @@ -532,12 +532,13 @@ FuInsertChart::FuInsertChart(ScTabViewShell* pViewSh, Window* pWin, ScDrawView* aRangeString = aStr; // get "total" range for positioning - ULONG nCount = aRanges.Count(); - if ( nCount > 0 ) + if ( !aRanges.empty() ) { - aPositionRange = *aRanges.GetObject(0); - for (ULONG i=1; i<nCount; i++) - aPositionRange.ExtendTo( *aRanges.GetObject(i) ); + aPositionRange = *aRanges[ 0 ]; + for ( size_t i = 1, nCount = aRanges.size(); i < nCount; ++i ) + { + aPositionRange.ExtendTo( *aRanges[ i ] ); + } } if(bAutomaticMark) @@ -716,7 +717,7 @@ FuInsertChart::FuInsertChart(ScTabViewShell* pViewSh, Window* pWin, ScDrawView* { uno::Reference< ui::dialogs::XExecutableDialog > xDialog( xMCF->createInstanceWithContext( - rtl::OUString::createFromAscii("com.sun.star.comp.chart2.WizardDialog") + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.chart2.WizardDialog")) , xContext), uno::UNO_QUERY); uno::Reference< lang::XInitialization > xInit( xDialog, uno::UNO_QUERY ); if( xChartModel.is() && xInit.is() ) @@ -726,10 +727,10 @@ FuInsertChart::FuInsertChart(ScTabViewShell* pViewSh, Window* pWin, ScDrawView* uno::Sequence<uno::Any> aSeq(2); uno::Any* pArray = aSeq.getArray(); beans::PropertyValue aParam1; - aParam1.Name = rtl::OUString::createFromAscii("ParentWindow"); + aParam1.Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ParentWindow")); aParam1.Value <<= uno::makeAny(xDialogParentWindow); beans::PropertyValue aParam2; - aParam2.Name = rtl::OUString::createFromAscii("ChartModel"); + aParam2.Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ChartModel")); aParam2.Value <<= uno::makeAny(xChartModel); pArray[0] <<= uno::makeAny(aParam1); pArray[1] <<= uno::makeAny(aParam2); @@ -743,7 +744,7 @@ FuInsertChart::FuInsertChart(ScTabViewShell* pViewSh, Window* pWin, ScDrawView* { //get dialog size: awt::Size aDialogAWTSize; - if( xDialogProps->getPropertyValue( ::rtl::OUString::createFromAscii("Size") ) + if( xDialogProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Size")) ) >>= aDialogAWTSize ) { Size aDialogSize( aDialogAWTSize.Width, aDialogAWTSize.Height ); @@ -751,12 +752,12 @@ FuInsertChart::FuInsertChart(ScTabViewShell* pViewSh, Window* pWin, ScDrawView* { //calculate and set new position Point aDialogPos = pViewShell->GetChartDialogPos( aDialogSize, aRect ); - xDialogProps->setPropertyValue( ::rtl::OUString::createFromAscii("Position"), + xDialogProps->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Position")), uno::makeAny( awt::Point(aDialogPos.getX(),aDialogPos.getY()) ) ); } } //tell the dialog to unlock controller - xDialogProps->setPropertyValue( ::rtl::OUString::createFromAscii("UnlockControllersOnExecute"), + xDialogProps->setPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("UnlockControllersOnExecute")), uno::makeAny( sal_True ) ); } diff --git a/sc/source/ui/drawfunc/fusel.cxx b/sc/source/ui/drawfunc/fusel.cxx index 1fdf75eabc2f..10a81e6de20a 100644 --- a/sc/source/ui/drawfunc/fusel.cxx +++ b/sc/source/ui/drawfunc/fusel.cxx @@ -108,7 +108,7 @@ BYTE FuSelection::Command(const CommandEvent& rCEvt) |* \************************************************************************/ -BOOL __EXPORT FuSelection::MouseButtonDown(const MouseEvent& rMEvt) +BOOL FuSelection::MouseButtonDown(const MouseEvent& rMEvt) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); @@ -220,7 +220,7 @@ BOOL __EXPORT FuSelection::MouseButtonDown(const MouseEvent& rMEvt) { try { - aCaller = xProps->getPropertyValue( rtl::OUString::createFromAscii("Name") ); + aCaller = xProps->getPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Name")) ); } catch( uno::Exception& ) {} } @@ -343,7 +343,7 @@ BOOL __EXPORT FuSelection::MouseButtonDown(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuSelection::MouseMove(const MouseEvent& rMEvt) +BOOL FuSelection::MouseMove(const MouseEvent& rMEvt) { BOOL bReturn = FuDraw::MouseMove(rMEvt); @@ -390,7 +390,7 @@ BOOL __EXPORT FuSelection::MouseMove(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuSelection::MouseButtonUp(const MouseEvent& rMEvt) +BOOL FuSelection::MouseButtonUp(const MouseEvent& rMEvt) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); diff --git a/sc/source/ui/drawfunc/futext.cxx b/sc/source/ui/drawfunc/futext.cxx index 6742ea4c8186..391708b4a147 100644 --- a/sc/source/ui/drawfunc/futext.cxx +++ b/sc/source/ui/drawfunc/futext.cxx @@ -132,7 +132,7 @@ FuText::~FuText() |* \************************************************************************/ -BOOL __EXPORT FuText::MouseButtonDown(const MouseEvent& rMEvt) +BOOL FuText::MouseButtonDown(const MouseEvent& rMEvt) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); @@ -343,7 +343,7 @@ BOOL __EXPORT FuText::MouseButtonDown(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuText::MouseMove(const MouseEvent& rMEvt) +BOOL FuText::MouseMove(const MouseEvent& rMEvt) { BOOL bReturn = FALSE; @@ -366,9 +366,6 @@ BOOL __EXPORT FuText::MouseMove(const MouseEvent& rMEvt) if ( pView->IsAction() ) { -/* aNewPointer = Pointer(POINTER_TEXT); - pViewShell->SetActivePointer(aNewPointer); -*/ Point aPix(rMEvt.GetPosPixel()); Point aPnt(pWindow->PixelToLogic(aPix)); @@ -387,7 +384,7 @@ BOOL __EXPORT FuText::MouseMove(const MouseEvent& rMEvt) |* \************************************************************************/ -BOOL __EXPORT FuText::MouseButtonUp(const MouseEvent& rMEvt) +BOOL FuText::MouseButtonUp(const MouseEvent& rMEvt) { // #95491# remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); @@ -524,49 +521,6 @@ BOOL __EXPORT FuText::MouseButtonUp(const MouseEvent& rMEvt) void FuText::ForcePointer(const MouseEvent* /* pMEvt */) { pViewShell->SetActivePointer( aNewPointer ); - -/* - if ( !pView->IsAction() ) - { - Point aPnt(pWindow->PixelToLogic( pWindow->ScreenToOutputPixel( - Pointer::GetPosPixel() ) ) ); - SdrHdl* pHdl=pView->HitHandle(aPnt, *pWindow); - - if (pHdl!=NULL) - { - pViewShell->SetActivePointer(pHdl->GetPointer() ); - } - else - { - SdrObject* pObj; - SdrPageView* pPV; - - if ( pView->IsMarkedHit(aPnt) ) - { - if ( pView->TakeTextEditObject(aPnt, pObj, pPV) ) - { - pViewShell->SetActivePointer(Pointer(POINTER_TEXT)); - } - else - { - pViewShell->SetActivePointer(Pointer(POINTER_MOVE)); - } - } - else - { -// if ( pView->TakeMacroObject(aPnt, pObj, pPV) ) - if ( pView->PickObj(aPnt, pObj, pPV, SDRSEARCH_PICKMACRO) ) - { - pViewShell->SetActivePointer( pObj->GetMacroPointer() ); - } - else - { - pViewShell->SetActivePointer( aNewPointer ); - } - } - } - } -*/ } @@ -580,7 +534,7 @@ void FuText::ForcePointer(const MouseEvent* /* pMEvt */) |* \************************************************************************/ -BOOL __EXPORT FuText::KeyInput(const KeyEvent& rKEvt) +BOOL FuText::KeyInput(const KeyEvent& rKEvt) { BOOL bReturn = FALSE; @@ -622,17 +576,12 @@ void FuText::Activate() **********************************************************************/ USHORT nObj = OBJ_TEXT; -/* UINT16 nIdent; - UINT32 nInvent; - pView->TakeCurrentObj(nIdent, nInvent); -*/ pView->SetCurrentObj(nObj); pView->SetCreateMode(); } aNewPointer = Pointer(POINTER_TEXT); -// aNewPointer = Pointer(POINTER_CROSS); //! ??? aOldPointer = pWindow->GetPointer(); pViewShell->SetActivePointer( aNewPointer ); @@ -701,22 +650,6 @@ void FuText::SelectionHasChanged() UINT32 nInvent; pView->TakeCurrentObj(nIdent, nInvent); -// if (! pView->IsEditMode() ) -// { -// if (nIdent == OBJ_TEXT) -// { -// nObj = OBJ_TEXT; -// } -// else if (nIdent == OBJ_OUTLINETEXT) -// { -// nObj = OBJ_OUTLINETEXT; -// } -// else if (nIdent == OBJ_TITLETEXT) -// { -// nObj = OBJ_TITLETEXT; -// } -// } - pView->SetCurrentObj(nObj); pView->SetCreateMode(); diff --git a/sc/source/ui/drawfunc/futext2.cxx b/sc/source/ui/drawfunc/futext2.cxx index 354339dd0d75..c1a4e2ce6f22 100644 --- a/sc/source/ui/drawfunc/futext2.cxx +++ b/sc/source/ui/drawfunc/futext2.cxx @@ -42,92 +42,22 @@ #define _TREELIST_HXX #define _CACHESTR_HXX #define _NEW_HXX -//#define _SHL_HXX -//#define _LINK_HXX -//#define _ERRCODE_HXX -//#define _GEN_HXX -//#define _FRACT_HXX -//#define _STRING_HXX -//#define _MTF_HXX -//#define _CONTNR_HXX -//#define _LIST_HXX -//#define _TABLE_HXX #define _DYNARY_HXX -//#define _UNQIDX_HXX #define _SVMEMPOOL_HXX -//#define _UNQID_HXX -//#define _DEBUG_HXX -//#define _DATE_HXX -//#define _TIME_HXX -//#define _DATETIME_HXX -//#define _INTN_HXX -//#define _WLDCRD_HXX -//#define _FSYS_HXX -//#define _STREAM_HXX #define _CACHESTR_HXX #define _SV_MULTISEL_HXX //SV -//#define _CLIP_HXX *** #define _CONFIG_HXX #define _CURSOR_HXX #define _FONTDLG_HXX #define _PRVWIN_HXX -//#define _COLOR_HXX -//#define _PAL_HXX -//#define _BITMAP_HXX -//#define _GDIOBJ_HXX -//#define _POINTR_HXX -//#define _ICON_HXX -//#define _IMAGE_HXX -//#define _KEYCOD_HXX -//#define _EVENT_HXX #define _HELP_HXX -//#define _APP_HXX -//#define _MDIAPP_HXX -//#define _TIMER_HXX -//#define _METRIC_HXX -//#define _REGION_HXX -//#define _OUTDEV_HXX -//#define _SYSTEM_HXX -//#define _VIRDEV_HXX -//#define _JOBSET_HXX -//#define _PRINT_HXX -//#define _WINDOW_HXX -//#define _SYSWIN_HXX -//#define _WRKWIN_HXX #define _MDIWIN_HXX -//#define _FLOATWIN_HXX -//#define _DOCKWIN_HXX -//#define _CTRL_HXX -//#define _SCRBAR_HXX -//#define _BUTTON_HXX -//#define _IMAGEBTN_HXX -//#define _FIXED_HXX -//#define _GROUP_HXX -//#define _EDIT_HXX -//#define _COMBOBOX_HXX -//#define _LSTBOX_HXX -//#define _SELENG_HXX *** -//#define _SPLIT_HXX #define _SPIN_HXX -//#define _FIELD_HXX -//#define _MOREBTN_HXX *** -//#define _TOOLBOX_HXX #define _STATUS_HXX #define _SVTCTRL3_HXX -//#define _DIALOG_HXX -//#define _MSGBOX_HXX -//#define _SYSDLG_HXX -//#define _FILDLG_HXX *** -//#define _PRNDLG_HXX #define _COLDLG_HXX -//#define _TABDLG_HXX -//#define _MENU_HXX *** -//#define _GDIMTF_HXX -//#define _POLY_HXX -//#define _ACCEL_HXX -//#define _GRAPH_HXX #define _SOUND_HXX #if defined WIN @@ -137,48 +67,28 @@ //svtools #define _SCRWIN_HXX #define _RULER_HXX -//#define _TABBAR_HXX -//#define _VALUESET_HXX #define _STDMENU_HXX -//#define _STDCTRL_HXX -//#define _CTRLBOX_HXX #define _CTRLTOOL_HXX #define _EXTATTR_HXX #define _FRM3D_HXX #define _EXTATTR_HXX //SVTOOLS -//#define _SVTREELIST_HXX #define _FILTER_HXX -//#define _SVLBOXITM_HXX -//#define _SVTREEBOX_HXX #define _SVICNVW_HXX #define _SVTABBX_HXX //sfxcore.hxx -//#define _SFXINIMGR_HXX -//#define _SFXCFGITEM_HXX -//#define _SFX_PRINTER_HXX #define _SFXGENLINK_HXX #define _SFXHINTPOST_HXX #define _SFXDOCINF_HXX #define _SFXLINKHDL_HXX -//#define _SFX_PROGRESS_HXX //sfxsh.hxx -//#define _SFX_SHELL_HXX -//#define _SFXAPP_HXX -//#define _SFXDISPATCH_HXX -//#define _SFXMSG_HXX -//#define _SFXOBJFACE_HXX -//#define _SFXREQUEST_HXX #define _SFXMACRO_HXX // SFX -//#define _SFXAPPWIN_HXX #define _SFX_SAVEOPT_HXX -//#define _SFX_CHILDWIN_HXX -//#define _SFXCTRLITEM_HXX #define _SFXPRNMON_HXX #define _INTRO_HXX #define _SFXMSGDESCR_HXX @@ -195,79 +105,37 @@ #define _SFXEVENT_HXX //sfxdoc.hxx -//#define _SFX_OBJSH_HXX -//#define _SFX_CLIENTSH_HXX -//#define _SFXDOCINF_HXX -//#define _SFX_OBJFAC_HXX #define _SFX_DOCFILT_HXX -//#define _SFXDOCFILE_HXX -//define _VIEWFAC_HXX -//#define _SFXVIEWFRM_HXX -//#define _SFXVIEWSH_HXX -//#define _MDIFRM_HXX #define _SFX_IPFRM_HXX -//#define _SFX_INTERNO_HXX //sfxdlg.hxx -//#define _SFXTABDLG_HXX -//#define _BASEDLGS_HXX #define _SFX_DINFDLG_HXX #define _SFXDINFEDT_HXX #define _SFX_MGETEMPL_HXX #define _SFX_TPLPITEM_HXX -//#define _SFX_STYLEDLG_HXX #define _NEWSTYLE_HXX -//#define _SFXDOCTEMPL_HXX -//#define _SFXDOCTDLG_HXX -//#define _SFX_TEMPLDLG_HXX -//#define _SFXNEW_HXX #define _SFXDOCMAN_HXX -//#define _SFXDOCKWIN_HXX ** //sfxitems.hxx #define _SFX_WHMAP_HXX -//#define _ARGS_HXX *** -//#define _SFXPOOLITEM_HXX -//#define _SFXINTITEM_HXX -//#define _SFXENUMITEM_HXX #define _SFXFLAGITEM_HXX -//#define _SFXSTRITEM_HXX #define _SFXPTITEM_HXX #define _SFXRECTITEM_HXX -//#define _SFXITEMPOOL_HXX -//#define _SFXITEMSET_HXX #define _SFXITEMITER_HXX #define _SFX_WHITER_HXX #define _SFXPOOLCACH_HXX -//#define _AEITEM_HXX #define _SFXRNGITEM_HXX -//#define _SFXSLSTITM_HXX -//#define _SFXSTYLE_HXX - -//xout.hxx -//#define _XENUM_HXX -//#define _XPOLY_HXX -//#define _XATTR_HXX -//#define _XOUTX_HXX -//#define _XPOOL_HXX -//#define _XTABLE_HXX //svdraw.hxx #define _SDR_NOITEMS #define _SDR_NOTOUCH #define _SDR_NOTRANSFORM -//#define _SDR_NOOBJECTS -//#define _SDR_NOVIEWS -//#define SI_NOITEMS -//#define SI_NODRW #define _SI_NOSBXCONTROLS #define _VCATTR_HXX #define _VCONT_HXX -//#define _VCSBX_HXX *** #define _SI_NOOTHERFORMS #define _VCTRLS_HXX -//#define _VCDRWOBJ_HXX *** #define _SI_NOCONTROL #define _SETBRW_HXX #define _VCBRW_HXX diff --git a/sc/source/ui/drawfunc/makefile.mk b/sc/source/ui/drawfunc/makefile.mk index cf69944d3a1a..41aa76331df5 100644 --- a/sc/source/ui/drawfunc/makefile.mk +++ b/sc/source/ui/drawfunc/makefile.mk @@ -43,40 +43,37 @@ SRC1FILES = \ drformsh.src SLOFILES = \ - $(SLO)$/fupoor.obj \ - $(SLO)$/fumark.obj \ - $(SLO)$/fudraw.obj \ - $(SLO)$/fusel.obj \ - $(SLO)$/fusel2.obj \ - $(SLO)$/fuconstr.obj \ - $(SLO)$/fuconrec.obj \ - $(SLO)$/fuconarc.obj \ - $(SLO)$/fuconuno.obj \ - $(SLO)$/fuconpol.obj \ - $(SLO)$/fuconcustomshape.obj \ - $(SLO)$/fuins1.obj \ - $(SLO)$/fuins2.obj \ - $(SLO)$/futext.obj \ - $(SLO)$/futext2.obj \ - $(SLO)$/futext3.obj \ + $(EXCEPTIONSFILES) + +EXCEPTIONSFILES= \ + $(SLO)$/chartsh.obj \ $(SLO)$/drawsh.obj \ $(SLO)$/drawsh2.obj \ $(SLO)$/drawsh4.obj \ $(SLO)$/drawsh5.obj \ + $(SLO)$/drformsh.obj \ $(SLO)$/drtxtob.obj \ $(SLO)$/drtxtob1.obj \ $(SLO)$/drtxtob2.obj \ - $(SLO)$/drformsh.obj \ - $(SLO)$/oleobjsh.obj \ - $(SLO)$/chartsh.obj \ - $(SLO)$/graphsh.obj \ - $(SLO)$/mediash.obj - -EXCEPTIONSFILES= \ - $(SLO)$/fusel.obj \ + $(SLO)$/fuconarc.obj \ + $(SLO)$/fuconcustomshape.obj \ + $(SLO)$/fuconpol.obj \ + $(SLO)$/fuconrec.obj \ + $(SLO)$/fuconstr.obj \ + $(SLO)$/fuconuno.obj \ + $(SLO)$/fudraw.obj \ + $(SLO)$/fuins1.obj \ $(SLO)$/fuins2.obj \ - $(SLO)$/graphsh.obj \ - $(SLO)$/mediash.obj + $(SLO)$/fumark.obj \ + $(SLO)$/fupoor.obj \ + $(SLO)$/fusel.obj \ + $(SLO)$/fusel2.obj \ + $(SLO)$/futext.obj \ + $(SLO)$/futext2.obj \ + $(SLO)$/futext3.obj \ + $(SLO)$/graphsh.obj \ + $(SLO)$/mediash.obj \ + $(SLO)$/oleobjsh.obj NOOPTFILES=\ $(SLO)$/fusel.obj diff --git a/sc/source/ui/formdlg/dwfunctr.cxx b/sc/source/ui/formdlg/dwfunctr.cxx index d22531e76f59..cfc916a45e0d 100644 --- a/sc/source/ui/formdlg/dwfunctr.cxx +++ b/sc/source/ui/formdlg/dwfunctr.cxx @@ -60,7 +60,7 @@ SFX_IMPL_DOCKINGWINDOW( ScFunctionChildWindow, FID_FUNCTION_BOX ) /************************************************************************* -#* Member: ScFunctionChildWindow Datum:06.10.97 +#* Member: ScFunctionChildWindow #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionChildWindow @@ -75,7 +75,7 @@ SFX_IMPL_DOCKINGWINDOW( ScFunctionChildWindow, FID_FUNCTION_BOX ) #* #************************************************************************/ -__EXPORT ScFunctionChildWindow::ScFunctionChildWindow( Window* pParentP, +ScFunctionChildWindow::ScFunctionChildWindow( Window* pParentP, USHORT nId, SfxBindings* pBindings, SfxChildWinInfo* pInfo ) : @@ -91,7 +91,7 @@ __EXPORT ScFunctionChildWindow::ScFunctionChildWindow( Window* pParentP, } /************************************************************************* -#* Member: ScFunctionDockWin Datum:06.10.97 +#* Member: ScFunctionDockWin #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -137,7 +137,6 @@ ScFunctionDockWin::ScFunctionDockWin( SfxBindings* pBindingsP, aFont.SetColor(Color(COL_BLACK)); aFiFuncDesc.SetFont(aFont); aFiFuncDesc.SetBackground( GetBackground() ); //! never transparent? -//? SetBackground(); Link aLink=LINK( this, ScFunctionDockWin, SelHdl); aCatBox.SetSelectHdl(aLink); @@ -154,7 +153,6 @@ ScFunctionDockWin::ScFunctionDockWin( SfxBindings* pBindingsP, StartListening( *pBindingsP, TRUE ); Point aTopLeft=aCatBox.GetPosPixel(); - //String aString=aCatBox.GetEntry( 0)+String("www"); String aString=String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ww")); Size aTxtSize( aFiFuncDesc.GetTextWidth(aString), aFiFuncDesc.GetTextHeight() ); nMinWidth=aTxtSize.Width()+aTopLeft.X() @@ -170,7 +168,7 @@ ScFunctionDockWin::ScFunctionDockWin( SfxBindings* pBindingsP, } /************************************************************************* -#* Member: ScFunctionDockWin Datum:06.10.97 +#* Member: ScFunctionDockWin #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -183,13 +181,13 @@ ScFunctionDockWin::ScFunctionDockWin( SfxBindings* pBindingsP, #* #************************************************************************/ -__EXPORT ScFunctionDockWin::~ScFunctionDockWin() +ScFunctionDockWin::~ScFunctionDockWin() { EndListening( GetBindings() ); } /************************************************************************* -#* Member: UpdateFunctionList Datum:06.10.97 +#* Member: UpdateFunctionList #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -227,7 +225,7 @@ void ScFunctionDockWin::InitLRUList() } /************************************************************************* -#* Member: UpdateFunctionList Datum:10.12.99 +#* Member: UpdateFunctionList #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -251,7 +249,7 @@ void ScFunctionDockWin::UpdateLRUList() /************************************************************************* -#* Member: SetSize Datum:06.10.97 +#* Member: SetSize #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -328,7 +326,7 @@ void ScFunctionDockWin::SetSize() } } /************************************************************************* -#* Member: SetLeftRightSize Datum:15.10.97 +#* Member: SetLeftRightSize #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -353,8 +351,6 @@ void ScFunctionDockWin::SetLeftRightSize() aDiffSize.Width()-=aNewSize.Width(); aDiffSize.Height()-=aNewSize.Height(); - //@ SetUpdateMode( FALSE); - String aString = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ww")); Size aTxtSize( aFuncList.GetTextWidth(aString), aFuncList.GetTextHeight() ); @@ -373,14 +369,12 @@ void ScFunctionDockWin::SetLeftRightSize() aOldSize=aNewSize; aNewSize.Width()+=aDiffSize.Width(); aNewSize.Height()+=aDiffSize.Height(); - //SetSizePixel(aNewSize); - //@ SetUpdateMode( TRUE); bSizeFlag=FALSE; } } /************************************************************************* -#* Member: SetTopBottonSize Datum:15.10.97 +#* Member: SetTopBottonSize #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -409,14 +403,12 @@ void ScFunctionDockWin::SetTopBottonSize() aNewSize.Width()+=aDiffSize.Width(); aNewSize.Height()+=aDiffSize.Height(); - //SetSizePixel(aNewSize); - //@ SetUpdateMode( TRUE); bSizeFlag=FALSE; } } /************************************************************************* -#* Member: SetMyWidthLeRi Datum:15.10.97 +#* Member: SetMyWidthLeRi #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -456,7 +448,7 @@ void ScFunctionDockWin::SetMyWidthLeRi(Size &aNewSize) } /************************************************************************* -#* Member: SetHeight Datum:06.10.97 +#* Member: SetHeight #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -504,7 +496,7 @@ void ScFunctionDockWin::SetMyHeightLeRi(Size &aNewSize) } /************************************************************************* -#* Member: SetMyWidthToBo Datum:16.10.97 +#* Member: SetMyWidthToBo #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -545,7 +537,7 @@ void ScFunctionDockWin::SetMyWidthToBo(Size &aNewSize) } /************************************************************************* -#* Member: SetHeight Datum:16.10.97 +#* Member: SetHeight #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -574,7 +566,7 @@ void ScFunctionDockWin::SetMyHeightToBo(Size &aNewSize) } /************************************************************************* -#* Member: SetDescription Datum:13.10.97 +#* Member: SetDescription #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -597,30 +589,30 @@ void ScFunctionDockWin::SetDescription() { pDesc->initArgumentInfo(); // full argument info is needed - String aString=pAllFuncList->GetSelectEntry(); + ::rtl::OUStringBuffer aBuf(pAllFuncList->GetSelectEntry()); if(nDockMode==0) { - aString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ":\n\n" )); + aBuf.appendAscii(":\n\n"); } else { - aString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ": " )); + aBuf.appendAscii(": "); } - aString+=pDesc->GetParamList(); + aBuf.append(pDesc->GetParamList()); if(nDockMode==0) { - aString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "\n\n" )); + aBuf.appendAscii("\n\n"); } else { - aString += '\n'; + aBuf.appendAscii("\n"); } - aString+=*(pDesc->pFuncDesc); + aBuf.append(*pDesc->pFuncDesc); - aFiFuncDesc.SetText(aString); + aFiFuncDesc.SetText(aBuf.makeStringAndClear()); aFiFuncDesc.StateChanged(STATE_CHANGE_TEXT); aFiFuncDesc.Invalidate(); aFiFuncDesc.Update(); @@ -629,7 +621,7 @@ void ScFunctionDockWin::SetDescription() } /************************************************************************* -#* Member: Resizing Datum:06.10.97 +#* Member: Resizing #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -643,7 +635,7 @@ void ScFunctionDockWin::SetDescription() #* #************************************************************************/ -void __EXPORT ScFunctionDockWin::Resizing( Size& rNewSize ) +void ScFunctionDockWin::Resizing( Size& rNewSize ) { if((ULONG)rNewSize.Width()<nMinWidth) rNewSize.Width()=nMinWidth; if((ULONG)rNewSize.Height()<nMinHeight) rNewSize.Height()=nMinHeight; @@ -651,7 +643,7 @@ void __EXPORT ScFunctionDockWin::Resizing( Size& rNewSize ) } /************************************************************************* -#* Member: Close Datum:07.10.97 +#* Member: Close #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -664,7 +656,7 @@ void __EXPORT ScFunctionDockWin::Resizing( Size& rNewSize ) #* #************************************************************************/ -BOOL __EXPORT ScFunctionDockWin::Close() +BOOL ScFunctionDockWin::Close() { SfxBoolItem aItem( FID_FUNCTION_BOX, FALSE ); @@ -679,7 +671,7 @@ BOOL __EXPORT ScFunctionDockWin::Close() /************************************************************************* -#* Member: CheckAlignment Datum:16.10.97 +#* Member: CheckAlignment #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -692,7 +684,7 @@ BOOL __EXPORT ScFunctionDockWin::Close() #* Output: Das uebergebene Alignment #* #************************************************************************/ -SfxChildAlignment __EXPORT ScFunctionDockWin::CheckAlignment(SfxChildAlignment /* abla */, +SfxChildAlignment ScFunctionDockWin::CheckAlignment(SfxChildAlignment /* abla */, SfxChildAlignment aChildAlign) { String aString = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ww")); @@ -719,9 +711,7 @@ SfxChildAlignment __EXPORT ScFunctionDockWin::CheckAlignment(SfxChildAlignment / case SFX_ALIGN_TOOLBOXTOP: case SFX_ALIGN_TOOLBOXBOTTOM: - nMinWidth= 0;/*aDDFuncList.GetPosPixel().X()+ - 10*aTxtSize.Width()+ - aFuncList.GetPosPixel().X();*/ + nMinWidth= 0; nMinHeight=0; break; @@ -737,7 +727,6 @@ SfxChildAlignment __EXPORT ScFunctionDockWin::CheckAlignment(SfxChildAlignment / nMinWidth=aTxtSize.Width()+aTopLeft.X() +2*aFuncList.GetPosPixel().X(); nMinHeight=19*aTxtSize.Height(); - //aCatBox.SelectEntryPos(0); break; } @@ -745,7 +734,7 @@ SfxChildAlignment __EXPORT ScFunctionDockWin::CheckAlignment(SfxChildAlignment / return aChildAlign; } /************************************************************************* -#* Member: Close Datum:07.10.97 +#* Member: Close #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -773,7 +762,7 @@ void ScFunctionDockWin::Notify( SfxBroadcaster&, const SfxHint& /* rHint */ ) /************************************************************************* -#* Member: Resize Datum:06.10.97 +#* Member: Resize #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -787,7 +776,7 @@ void ScFunctionDockWin::Notify( SfxBroadcaster&, const SfxHint& /* rHint */ ) #* #************************************************************************/ -void __EXPORT ScFunctionDockWin::Resize() +void ScFunctionDockWin::Resize() { if ( !IsFloatingMode() || !GetFloatingWindow()->IsRollUp() ) @@ -800,7 +789,7 @@ void __EXPORT ScFunctionDockWin::Resize() } /************************************************************************* -#* Member: UpdateFunctionList Datum:06.10.97 +#* Member: UpdateFunctionList #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -863,7 +852,7 @@ void ScFunctionDockWin::UpdateFunctionList() } /************************************************************************* -#* Member: DoEnter Datum:06.10.97 +#* Member: DoEnter #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -979,7 +968,7 @@ void ScFunctionDockWin::DoEnter(BOOL /* bOk */) //@@ ??? /************************************************************************* -#* Handle: SelHdl Datum:06.10.97 +#* Handle: SelHdl #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -1012,7 +1001,7 @@ IMPL_LINK( ScFunctionDockWin, SelHdl, ListBox*, pLb ) } /************************************************************************* -#* Handle: SelHdl Datum:06.10.97 +#* Handle: SelHdl #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -1039,7 +1028,7 @@ IMPL_LINK( ScFunctionDockWin, SetSelectionHdl, void*, pCtrl ) } /************************************************************************* -#* Handle: SetSplitHdl Datum:13.10.97 +#* Handle: SetSplitHdl #*------------------------------------------------------------------------ #* #* Klasse: ScFunctionDockWin @@ -1068,12 +1057,6 @@ IMPL_LINK( ScFunctionDockWin, SetSplitHdl, ScPrivatSplit*, pCtrl ) aFuncList.SetSizePixel(aFLSize); aFiFuncDesc.SetPosPixel(aFDTopLeft); aFiFuncDesc.SetSizePixel(aFDSize); - /* - aFuncList.Invalidate(); - aFuncList.Update(); - aFiFuncDesc.Invalidate(); - aFiFuncDesc.Update(); - */ } //... diff --git a/sc/source/ui/formdlg/dwfunctr.hrc b/sc/source/ui/formdlg/dwfunctr.hrc index 388fea28b7ca..a53c884583d2 100644 --- a/sc/source/ui/formdlg/dwfunctr.hrc +++ b/sc/source/ui/formdlg/dwfunctr.hrc @@ -31,7 +31,3 @@ #define IMB_INSERT 1 #define FI_FUNCDESC 1 #define FT_SPLIT 2 - - -// ********************************************************************** EOF - diff --git a/sc/source/ui/formdlg/dwfunctr.src b/sc/source/ui/formdlg/dwfunctr.src index 6f8a054dd6ff..46061a512955 100644 --- a/sc/source/ui/formdlg/dwfunctr.src +++ b/sc/source/ui/formdlg/dwfunctr.src @@ -27,6 +27,7 @@ // include --------------------------------------------------------------- #include "sc.hrc" #include "dwfunctr.hrc" + // pragma ---------------------------------------------------------------- // RID_SVXDLG_CALCFUNC -------------------------------------------------- @@ -110,7 +111,7 @@ DockingWindow FID_FUNCTION_BOX { ImageBitmap = Bitmap { - File = "fx.bmp" ; + File = "fx.png"; }; MaskColor = STD_MASKCOLOR; }; @@ -120,36 +121,3 @@ DockingWindow FID_FUNCTION_BOX Text [ en-US ] = "Functions" ; }; // ********************************************************************** EOF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/formdlg/formdlgs.src b/sc/source/ui/formdlg/formdlgs.src index e3550030c74e..3d09f22ef985 100644 --- a/sc/source/ui/formdlg/formdlgs.src +++ b/sc/source/ui/formdlg/formdlgs.src @@ -26,4 +26,5 @@ ************************************************************************/ #include "sc.hrc" + //--------------------------------------------------------------------------- diff --git a/sc/source/ui/formdlg/formula.cxx b/sc/source/ui/formdlg/formula.cxx index 0510d503762b..2c4071d2e04f 100644 --- a/sc/source/ui/formdlg/formula.cxx +++ b/sc/source/ui/formdlg/formula.cxx @@ -97,7 +97,6 @@ ScFormulaDlg::ScFormulaDlg( SfxBindings* pB, SfxChildWindow* pCW, // title has to be from the view that opened the dialog, // even if it's not the current view - SfxObjectShell* pParentDoc = NULL; if ( pB ) { SfxDispatcher* pMyDisp = pB->GetDispatcher(); @@ -109,14 +108,9 @@ ScFormulaDlg::ScFormulaDlg( SfxBindings* pB, SfxChildWindow* pCW, pScViewShell = PTR_CAST( ScTabViewShell, pMyViewFrm->GetViewShell() ); if( pScViewShell ) pScViewShell->UpdateInputHandler(TRUE); - pParentDoc = pMyViewFrm->GetObjectShell(); } } } - //if ( !pParentDoc && pScViewShell ) // use current only if above fails - // pParentDoc = pScViewShell->GetObjectShell(); - //if ( pParentDoc ) - // aDocName = pParentDoc->GetTitle(); if ( pDoc == NULL ) pDoc = pViewData->GetDocument(); @@ -209,7 +203,7 @@ ScFormulaDlg::ScFormulaDlg( SfxBindings* pB, SfxChildWindow* pCW, pCell = new ScFormulaCell( pDoc, aCursorPos, rStrExp ); Update(rStrExp); - } // if (!pData) + } } @@ -271,7 +265,7 @@ void ScFormulaDlg::fill() } } -__EXPORT ScFormulaDlg::~ScFormulaDlg() +ScFormulaDlg::~ScFormulaDlg() { ScModule* pScMod = SC_MOD(); ScFormEditData* pData = pScMod->GetFormEditData(); @@ -326,7 +320,7 @@ ScInputHandler* ScFormulaDlg::GetNextInputHandler(ScDocShell* pDocShell,PtrTabVi } -BOOL __EXPORT ScFormulaDlg::Close() +BOOL ScFormulaDlg::Close() { DoEnter(FALSE); return TRUE; diff --git a/sc/source/ui/formdlg/makefile.mk b/sc/source/ui/formdlg/makefile.mk index 2574ca48f348..4440abaf314d 100644 --- a/sc/source/ui/formdlg/makefile.mk +++ b/sc/source/ui/formdlg/makefile.mk @@ -38,10 +38,13 @@ TARGET=formdlgs # --- Files -------------------------------------------------------- SLOFILES = \ - $(SLO)$/formula.obj \ - $(SLO)$/formdata.obj \ - $(SLO)$/privsplt.obj \ - $(SLO)$/dwfunctr.obj + $(EXCEPTIONSFILES) \ + $(SLO)$/formdata.obj + +EXCEPTIONSFILES = \ + $(SLO)$/dwfunctr.obj \ + $(SLO)$/formula.obj \ + $(SLO)$/privsplt.obj SRS1NAME=$(TARGET) SRC1FILES = \ diff --git a/sc/source/ui/formdlg/privsplt.cxx b/sc/source/ui/formdlg/privsplt.cxx index 2497a86707d6..3639f2a6b4e6 100644 --- a/sc/source/ui/formdlg/privsplt.cxx +++ b/sc/source/ui/formdlg/privsplt.cxx @@ -34,7 +34,7 @@ #include "privsplt.hxx" /************************************************************************* -#* Member: ScPrivatSplit Datum:13.10.97 +#* Member: ScPrivatSplit #*------------------------------------------------------------------------ #* #* Klasse: MD_Test @@ -78,7 +78,7 @@ ScPrivatSplit::ScPrivatSplit( Window* pParent, const ResId& rResId, /************************************************************************* -#* Member: MouseButtonDown Datum:13.10.97 +#* Member: MouseButtonDown #*------------------------------------------------------------------------ #* #* Klasse: ScPrivatSplit @@ -103,7 +103,7 @@ void ScPrivatSplit::MouseButtonDown( const MouseEvent& rMEvt ) } /************************************************************************* -#* Member: MouseButtonUp Datum:13.10.97 +#* Member: MouseButtonUp #*------------------------------------------------------------------------ #* #* Klasse: ScPrivatSplit @@ -165,7 +165,7 @@ void ScPrivatSplit::MouseButtonUp( const MouseEvent& rMEvt ) } /************************************************************************* -#* Member: MouseMove Datum:13.10.97 +#* Member: MouseMove #*------------------------------------------------------------------------ #* #* Klasse: ScPrivatSplit @@ -230,7 +230,7 @@ void ScPrivatSplit::MouseMove( const MouseEvent& rMEvt ) } /************************************************************************* -#* Member: SetYRange Datum:14.10.97 +#* Member: SetYRange #*------------------------------------------------------------------------ #* #* Klasse: ScPrivatSplit @@ -250,7 +250,7 @@ void ScPrivatSplit::SetYRange(Range cRgeY) /************************************************************************* -#* Member: GetDeltaY Datum:13.10.97 +#* Member: GetDeltaY #*------------------------------------------------------------------------ #* #* Klasse: ScPrivatSplit @@ -268,7 +268,7 @@ short ScPrivatSplit::GetDeltaX() } /************************************************************************* -#* Member: GetDeltaY Datum:13.10.97 +#* Member: GetDeltaY #*------------------------------------------------------------------------ #* #* Klasse: ScPrivatSplit @@ -286,7 +286,7 @@ short ScPrivatSplit::GetDeltaY() } /************************************************************************* -#* Member: CtrModified Datum:13.10.97 +#* Member: CtrModified #*------------------------------------------------------------------------ #* #* Klasse: ScPrivatSplit diff --git a/sc/source/ui/inc/AccessibleDataPilotControl.hxx b/sc/source/ui/inc/AccessibleDataPilotControl.hxx index 7d9c3f470bb8..fb0e0f40ecd6 100644 --- a/sc/source/ui/inc/AccessibleDataPilotControl.hxx +++ b/sc/source/ui/inc/AccessibleDataPilotControl.hxx @@ -32,7 +32,7 @@ #include "AccessibleContextBase.hxx" -class ScDPFieldWindow; +class ScDPFieldControlBase; class ScAccessibleDataPilotButton; class ScAccessibleDataPilotControl @@ -43,7 +43,7 @@ public: ScAccessibleDataPilotControl( const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible>& rxParent, - ScDPFieldWindow* pDPFieldWindow); + ScDPFieldControlBase* pDPFieldWindow); virtual void Init(); @@ -132,7 +132,7 @@ protected: throw (::com::sun::star::uno::RuntimeException); private: - ScDPFieldWindow* mpDPFieldWindow; + ScDPFieldControlBase* mpDPFieldWindow; struct AccessibleWeak { ::com::sun::star::uno::WeakReference< ::com::sun::star::accessibility::XAccessible > xWeakAcc; diff --git a/sc/source/ui/inc/IAnyRefDialog.hxx b/sc/source/ui/inc/IAnyRefDialog.hxx index 97212be8552e..d23f1d5ceebf 100644 --- a/sc/source/ui/inc/IAnyRefDialog.hxx +++ b/sc/source/ui/inc/IAnyRefDialog.hxx @@ -44,12 +44,6 @@ class SAL_NO_VTABLE IAnyRefDialog : public formula::IControlReferenceHandler public: virtual ~IAnyRefDialog(){} - //virtual void ShowReference(const String& _sRef) = 0; - //virtual void HideReference( BOOL bDoneRefMode = TRUE ) = 0; - //virtual void ReleaseFocus( formula::RefEdit* pEdit, formula::RefButton* pButton = NULL ) = 0; - //virtual void ToggleCollapsed( formula::RefEdit* pEdit, formula::RefButton* pButton = NULL ) = 0; - - virtual void SetReference( const ScRange& rRef, ScDocument* pDoc ) = 0; virtual void RefInputStart( formula::RefEdit* pEdit, formula::RefButton* pButton = NULL ) = 0; virtual void RefInputDone( BOOL bForced = FALSE ) = 0; diff --git a/sc/source/ui/inc/acredlin.hrc b/sc/source/ui/inc/acredlin.hrc index b21676ee6ae9..54ad490291af 100644 --- a/sc/source/ui/inc/acredlin.hrc +++ b/sc/source/ui/inc/acredlin.hrc @@ -30,17 +30,15 @@ #define BTN_OK 1 #define BTN_CANCEL 2 #define BTN_HELP 5 -// + #define CTR_REDLINING 10 #define TP_FILTER 11 #define TP_VIEW 12 - #define FT_ASSIGN 14 #define ED_ASSIGN 15 #define RB_ASSIGN 16 - #define STR_INSERT_COLS 20 #define STR_INSERT_ROWS 21 #define STR_INSERT_TABS 22 @@ -57,6 +55,7 @@ #define STR_CHILD_CONTENT 33 #define STR_CHILD_ORGCONTENT 34 #define STR_EMPTY 35 + // Bitmaps #define BMP_STR_CLOSE 41 #define BMP_STR_OPEN 42 @@ -70,6 +69,3 @@ #define SC_SORT_AUTHOR 53 #define SC_SORT_DATE 54 #define SC_SORT_COMMENT 55 - -// - diff --git a/sc/source/ui/inc/anyrefdg.hxx b/sc/source/ui/inc/anyrefdg.hxx index b10ccf083756..fa49f6dea5cf 100644 --- a/sc/source/ui/inc/anyrefdg.hxx +++ b/sc/source/ui/inc/anyrefdg.hxx @@ -33,29 +33,25 @@ #include <vcl/edit.hxx> #include <vcl/accel.hxx> #include <sfx2/basedlgs.hxx> +#include <sfx2/tabdlg.hxx> #include "address.hxx" #include "cell.hxx" #include "compiler.hxx" #include "formula/funcutl.hxx" #include "IAnyRefDialog.hxx" #include "scresid.hxx" +#include "scmod.hxx" + #include <memory> class SfxObjectShell; class ScRange; class ScDocument; class ScTabViewShell; -//The class of ScAnyRefDlg is rewritten by PengYunQuan for Validity Cell Range Picker -//class ScAnyRefDlg; class ScRefHandler; class ScRangeList; -//<!--Added by PengYunQuan for Validity Cell Range Picker class SfxShell; -#include "scmod.hxx" -typedef formula::RefButton ScRefButton; -typedef formula::RefEdit ScRefEdit; -//-->Added by PengYunQuan for Validity Cell Range Picker class ScFormulaReferenceHelper { IAnyRefDialog* m_pDlg; @@ -105,28 +101,27 @@ public: void ViewShellChanged( ScTabViewShell* pScViewShell ); static void enableInput(BOOL _bInput); -//<!--Added by PengYunQuan for Validity Cell Range Picker + protected: Window * GetWindow(){ return m_pWindow; } + public: - bool CanInputStart( const ScRefEdit *pEdit ){ return !!pEdit; } + bool CanInputStart( const formula::RefEdit *pEdit ){ return !!pEdit; } bool CanInputDone( BOOL bForced ){ return pRefEdit && (bForced || !pRefBtn); } -//<!--Added by PengYunQuan for Validity Cell Range Picker }; + //============================================================================ -//The class of ScAnyRefDlg is rewritten by PengYunQuan for Validity Cell Range Picker class SC_DLLPUBLIC ScRefHandler : //public SfxModelessDialog, public IAnyRefDialog { -//<!--Added by PengYunQuan for Validity Cell Range Picker Window & m_rWindow; bool m_bInRefMode; + public: operator Window *(){ return &m_rWindow; } Window * operator ->() { return static_cast<Window *>(*this); } template<class,bool> friend class ScRefHdlrImplBase; -//-->Added by PengYunQuan for Validity Cell Range Picker friend class formula::RefButton; friend class formula::RefEdit; @@ -184,18 +179,15 @@ public: //Overwrite TWindow will implemented by ScRefHdlrImplBase //virtual void StateChanged( StateChangedType nStateChange ); -//<!--Added by PengYunQuan for Validity Cell Range Picker public: bool EnterRefMode(); bool LeaveRefMode(); - inline bool CanInputStart( const ScRefEdit *pEdit ); + inline bool CanInputStart( const formula::RefEdit *pEdit ); inline bool CanInputDone( BOOL bForced ); -//-->Added by PengYunQuan for Validity Cell Range Picker }; - //============================================================================ -//<!--Added by PengYunQuan for Validity Cell Range Picker + template< class TWindow, bool bBindRef = true > class ScRefHdlrImplBase:public TWindow, public ScRefHandler { @@ -255,7 +247,7 @@ struct ScAnyRefDlg : ::ScRefHdlrImpl< ScAnyRefDlg, SfxModelessDialog> }; //============================================================================ -inline bool ScRefHandler::CanInputStart( const ScRefEdit *pEdit ) +inline bool ScRefHandler::CanInputStart( const formula::RefEdit *pEdit ) { return m_aHelper.CanInputStart( pEdit ); } @@ -267,11 +259,9 @@ inline bool ScRefHandler::CanInputDone( BOOL bForced ) template <> SC_DLLPUBLIC void ScRefHdlrImplBase<SfxModelessDialog,true>::StateChanged( StateChangedType nStateChange ); template <> SC_DLLPUBLIC long ScRefHdlrImplBase<SfxModelessDialog,true>::PreNotify( NotifyEvent& rNEvt ); -#include <sfx2/tabdlg.hxx> template <> SC_DLLPUBLIC void ScRefHdlrImplBase<SfxTabDialog,false>::StateChanged( StateChangedType nStateChange ); template <> SC_DLLPUBLIC long ScRefHdlrImplBase<SfxTabDialog,false>::PreNotify( NotifyEvent& rNEvt ); -//<!--Added by PengYunQuan for Validity Cell Range Picker #endif // SC_ANYREFDG_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/inc/attrdlg.hrc b/sc/source/ui/inc/attrdlg.hrc index f43c1cb30b86..d048e302f062 100644 --- a/sc/source/ui/inc/attrdlg.hrc +++ b/sc/source/ui/inc/attrdlg.hrc @@ -47,5 +47,3 @@ #define BTN_HIDE_PRINT 6 #define FT_HINT2 7 #define FL_PRINT 8 - - diff --git a/sc/source/ui/inc/condfrmt.hrc b/sc/source/ui/inc/condfrmt.hrc index 099d82b2fa85..223e2f8d3918 100644 --- a/sc/source/ui/inc/condfrmt.hrc +++ b/sc/source/ui/inc/condfrmt.hrc @@ -70,4 +70,3 @@ #define BTN_COND1_NEW 34 #define BTN_COND2_NEW 35 #define BTN_COND3_NEW 36 - diff --git a/sc/source/ui/inc/content.hxx b/sc/source/ui/inc/content.hxx index 952215ffbdd6..03924cc998cf 100644 --- a/sc/source/ui/inc/content.hxx +++ b/sc/source/ui/inc/content.hxx @@ -61,7 +61,6 @@ class ScContentTree : public SvTreeListBox { ScNavigatorDlg* pParentWindow; ImageList aEntryImages; - ImageList aHCEntryImages; SvLBoxEntry* pRootNodes[SC_CONTENT_COUNT]; USHORT nRootType; // als Root eingestellt String aManualDoc; // im Navigator umgeschaltet (Title) diff --git a/sc/source/ui/inc/crnrdlg.hrc b/sc/source/ui/inc/crnrdlg.hrc index 1d27531f9bc1..7467b398d5fb 100644 --- a/sc/source/ui/inc/crnrdlg.hrc +++ b/sc/source/ui/inc/crnrdlg.hrc @@ -32,9 +32,9 @@ #define BTN_ADD 3 #define BTN_REMOVE 4 #define BTN_HELP 5 -// + #define LB_RANGE 11 -// + #define FL_ASSIGN 12 #define ED_AREA 13 #define RB_AREA 14 @@ -43,4 +43,3 @@ #define ED_DATA 17 #define RB_DATA 18 #define FT_DATA_LABEL 19 -// diff --git a/sc/source/ui/inc/csvgrid.hxx b/sc/source/ui/inc/csvgrid.hxx index c5d5eb58649f..acb21731528e 100644 --- a/sc/source/ui/inc/csvgrid.hxx +++ b/sc/source/ui/inc/csvgrid.hxx @@ -105,7 +105,7 @@ private: VirtualDevice maGridDev; /// Data grid with selection and cursor. PopupMenu maPopup; /// Popup menu for column types. - ::svtools::ColorConfig& mrColorConfig; /// Application color configuration. + ::svtools::ColorConfig* mpColorConfig; /// Application color configuration. Color maBackColor; /// Cell background color. Color maGridColor; /// Table grid color. Color maGridPBColor; /// Grid color for "first imported line" delimiter. @@ -137,6 +137,9 @@ public: explicit ScCsvGrid( ScCsvControl& rParent ); virtual ~ScCsvGrid(); + /** Finishes initialization. Must be called after constructing a new object. */ + void Init(); + // common grid handling --------------------------------------------------- public: /** Updates layout data dependent from the control's state. */ diff --git a/sc/source/ui/inc/csvtablebox.hxx b/sc/source/ui/inc/csvtablebox.hxx index 7837c4519da2..22bb380e38c2 100644 --- a/sc/source/ui/inc/csvtablebox.hxx +++ b/sc/source/ui/inc/csvtablebox.hxx @@ -77,6 +77,9 @@ private: public: explicit ScCsvTableBox( Window* pParent, const ResId& rResId ); + /** Finishes initialization. Must be called after constructing a new object. */ + void Init(); + // common table box handling ---------------------------------------------- public: /** Sets the control to separators mode. */ @@ -85,8 +88,6 @@ public: void SetFixedWidthMode(); private: - /** Initialisation on construction. */ - SC_DLLPRIVATE void Init(); /** Initializes the children controls (pos/size, scroll bars, ...). */ SC_DLLPRIVATE void InitControls(); /** Initializes size and position data of horizontal scrollbar. */ diff --git a/sc/source/ui/inc/dbfunc.hxx b/sc/source/ui/inc/dbfunc.hxx index 9f01774f24b7..27a7c92f7ebc 100644 --- a/sc/source/ui/inc/dbfunc.hxx +++ b/sc/source/ui/inc/dbfunc.hxx @@ -86,10 +86,7 @@ public: bool MakePivotTable( const ScDPSaveData& rData, const ScRange& rDest, BOOL bNewTable, const ScDPObject& rSource, BOOL bApi = FALSE ); void DeletePivotTable(); - // Wang Xu Ming -- 2009-6-17 - // DataPilot Migration ULONG RecalcPivotTable(); - // End Comments BOOL HasSelectionForDateGroup( ScDPNumGroupInfo& rOldInfo, sal_Int32& rParts ); BOOL HasSelectionForNumGroup( ScDPNumGroupInfo& rOldInfo ); void GroupDataPilot(); diff --git a/sc/source/ui/inc/dbnamdlg.hrc b/sc/source/ui/inc/dbnamdlg.hrc index fd0205e3bbed..ab3e51cbf1b2 100644 --- a/sc/source/ui/inc/dbnamdlg.hrc +++ b/sc/source/ui/inc/dbnamdlg.hrc @@ -48,4 +48,3 @@ #define STR_MODIFY 31 #define STR_DB_INVALID 32 #define BTN_MORE 33 - diff --git a/sc/source/ui/inc/dbnamdlg.hxx b/sc/source/ui/inc/dbnamdlg.hxx index 8c6e61f60943..cd7f757f3937 100644 --- a/sc/source/ui/inc/dbnamdlg.hxx +++ b/sc/source/ui/inc/dbnamdlg.hxx @@ -70,7 +70,7 @@ private: CheckBox aBtnDoSize; CheckBox aBtnKeepFmt; CheckBox aBtnStripData; - ScExpandedFixedText aFTSource; //@18.09.97 erweiterter FixedText + ScExpandedFixedText aFTSource; FixedText aFTOperations; OKButton aBtnOk; diff --git a/sc/source/ui/inc/docfunc.hxx b/sc/source/ui/inc/docfunc.hxx index d360750f1bbb..8fb4fcd83e76 100644 --- a/sc/source/ui/inc/docfunc.hxx +++ b/sc/source/ui/inc/docfunc.hxx @@ -80,8 +80,8 @@ public: BOOL DetectiveMarkInvalid(SCTAB nTab); BOOL DetectiveDelAll(SCTAB nTab); BOOL DetectiveRefresh(BOOL bAutomatic = FALSE); - void DetectiveCollectAllPreds(const ScRangeList& rSrcRanges, ::std::vector<ScSharedTokenRef>& rRefTokens); - void DetectiveCollectAllSuccs(const ScRangeList& rSrcRanges, ::std::vector<ScSharedTokenRef>& rRefTokens); + void DetectiveCollectAllPreds(const ScRangeList& rSrcRanges, ::std::vector<ScTokenRef>& rRefTokens); + void DetectiveCollectAllSuccs(const ScRangeList& rSrcRanges, ::std::vector<ScTokenRef>& rRefTokens); BOOL DeleteContents( const ScMarkData& rMark, USHORT nFlags, BOOL bRecord, BOOL bApi ); diff --git a/sc/source/ui/inc/docsh.hxx b/sc/source/ui/inc/docsh.hxx index 6a1fa0ff5098..b4b5a2a5ee31 100644 --- a/sc/source/ui/inc/docsh.hxx +++ b/sc/source/ui/inc/docsh.hxx @@ -90,8 +90,8 @@ typedef ::std::hash_map< ULONG, ULONG > ScChangeActionMergeMap; class SC_DLLPUBLIC ScDocShell: public SfxObjectShell, public SfxListener { - static const sal_Char __FAR_DATA pStarCalcDoc[]; - static const sal_Char __FAR_DATA pStyleName[]; + static const sal_Char pStarCalcDoc[]; + static const sal_Char pStyleName[]; ScDocument aDocument; @@ -427,9 +427,7 @@ public: const ScOptSolverSave* GetSolverSaveData() const { return pSolverSaveData; } // may be null void SetSolverSaveData( const ScOptSolverSave& rData ); - //<!--Added by PengYunQuan for Validity Cell Range Picker sal_Bool AcceptStateUpdate() const; - //-->Added by PengYunQuan for Validity Cell Range Picker ScSheetSaveData* GetSheetSaveData(); void ResetKeyBindings( ScOptionsUtil::KeyBindingType eType ); diff --git a/sc/source/ui/inc/drawview.hxx b/sc/source/ui/inc/drawview.hxx index 408cbe4668b2..b49cd1488453 100644 --- a/sc/source/ui/inc/drawview.hxx +++ b/sc/source/ui/inc/drawview.hxx @@ -42,15 +42,14 @@ class ScDrawObjData; class ScDrawView: public FmFormView { ScViewData* pViewData; - OutputDevice* pDev; //! noetig ? + OutputDevice* pDev; //! needed ? ScDocument* pDoc; SCTAB nTab; - Fraction aScaleX; // Faktor fuer Drawing-MapMode + Fraction aScaleX; // Factor for Drawing-MapMode Fraction aScaleY; SdrDropMarkerOverlay* pDropMarker; SdrObject* pDropMarkObj; BOOL bInConstruct; - //HMHBOOL bDisableHdl; void Construct(); void UpdateBrowser(); @@ -76,12 +75,8 @@ public: virtual void DeleteMarked(); - void DrawMarks( OutputDevice* pOut ) const; - void MarkDropObj( SdrObject* pObj ); - //HMHBOOL IsDisableHdl() const { return bDisableHdl; } - void SetMarkedToLayer( BYTE nLayerNo ); void InvalidateAttribs(); @@ -98,8 +93,9 @@ public: void CalcNormScale( Fraction& rFractX, Fraction& rFractY ) const; - void SetAnchor( ScAnchorType ); - ScAnchorType GetAnchor() const; + void SetPageAnchored(); + void SetCellAnchored(); + ScAnchorType GetAnchorType() const; void VCAddWin( Window* pWin ); void VCRemoveWin( Window* pWin ); @@ -139,7 +135,7 @@ public: /** Unlocks the internal layer that contains caption objects of cell notes. */ inline void UnlockInternalLayer() { LockInternalLayer( false ); } - SdrEndTextEditKind ScEndTextEdit(); // ruft SetDrawTextUndo(0) + SdrEndTextEditKind ScEndTextEdit(); // calls SetDrawTextUndo(0) ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable > CopyToTransferable(); }; diff --git a/sc/source/ui/inc/drtxtob.hxx b/sc/source/ui/inc/drtxtob.hxx index d159ab0ad669..4baea1857e55 100644 --- a/sc/source/ui/inc/drtxtob.hxx +++ b/sc/source/ui/inc/drtxtob.hxx @@ -29,9 +29,6 @@ #ifndef SC_DRTXTOB_HXX #define SC_DRTXTOB_HXX -#ifndef _SFX_HXX -#endif - #include <sfx2/shell.hxx> #include <sfx2/module.hxx> #include <tools/link.hxx> diff --git a/sc/source/ui/inc/drwtrans.hxx b/sc/source/ui/inc/drwtrans.hxx index de256909fcf7..7690f860be41 100644 --- a/sc/source/ui/inc/drwtrans.hxx +++ b/sc/source/ui/inc/drwtrans.hxx @@ -51,8 +51,6 @@ private: SdrModel* pModel; TransferableDataHelper aOleData; TransferableObjectDescriptor aObjDesc; -//REMOVE SvEmbeddedObjectRef aDocShellRef; -//REMOVE SvEmbeddedObjectRef aDrawPersistRef; SfxObjectShellRef aDocShellRef; SfxObjectShellRef aDrawPersistRef; @@ -72,7 +70,6 @@ private: void InitDocShell(); -//REMOVE SvInPlaceObjectRef GetSingleObject(); SdrOle2Obj* GetSingleObject(); public: diff --git a/sc/source/ui/inc/fieldwnd.hxx b/sc/source/ui/inc/fieldwnd.hxx index bc7ccfe135cc..78358557444c 100644 --- a/sc/source/ui/inc/fieldwnd.hxx +++ b/sc/source/ui/inc/fieldwnd.hxx @@ -31,19 +31,12 @@ #include <vector> #include "address.hxx" +#include "dpglobal.hxx" #include <vcl/ctrl.hxx> #include <vcl/fixed.hxx> +#include <vcl/scrbar.hxx> #include <cppuhelper/weakref.hxx> -#define PAGE_SIZE 16 // count of visible fields for scrollbar -#define LINE_SIZE 8 // count of fields per column for scrollbar -#define MAX_FIELDS 8 // maximum count of fields for row/col/data area -#define MAX_PAGEFIELDS 10 // maximum count of fields for page area - -#define OWIDTH PivotGlobal::nObjWidth -#define OHEIGHT PivotGlobal::nObjHeight -#define SSPACE PivotGlobal::nSelSpace - class ScDPLayoutDlg; class ScAccessibleDataPilotControl; @@ -61,53 +54,173 @@ enum ScDPFieldType //------------------------------------------------------------------- -/** Represents a field area in the DataPilot layout dialog. */ -class ScDPFieldWindow : public Control +/** + * Represents a field area in the DataPilot layout dialog. This base class + * handles storage of field names and the accessibility object. + */ +class ScDPFieldControlBase : public Control { -private: - typedef ::std::pair< String, bool > FieldString; // true = text fits into button - - String aName; /// name of the control, used in Accessibility - ScDPLayoutDlg* pDlg; /// Parent dialog. - Rectangle aWndRect; /// Area rectangle in pixels. - FixedText* pFtCaption; /// FixedText containing the name of the control. - Point aTextPos; /// Position of the caption text. - std::vector< FieldString > aFieldArr; /// String array of the field names and flags, if text fits into button. - ScDPFieldType eType; /// Type of this area. - Color aFaceColor; /// Color for dialog background. - Color aWinColor; /// Color for window background. - Color aTextColor; /// Color for text in buttons. - Color aWinTextColor; /// Color for text in field windows. - size_t nFieldSize; /// Maximum count of fields. - size_t nFieldSelected; /// Currently selected field. +protected: + typedef ::std::pair<String, bool> FieldName; // true = text fits into button + typedef ::std::vector<FieldName> FieldNames; - com::sun::star::uno::WeakReference< ::com::sun::star::accessibility::XAccessible > xAccessible; - ScAccessibleDataPilotControl* pAccessible; +public: + + /** + * Custom scroll bar to pass the command event to its parent window. + * We need this to pass the mouse wheel events to its parent field + * control to have mouse wheel events appaer to be properly handled by the + * scroll bar. + */ + class ScrollBar : public ::ScrollBar + { + public: + ScrollBar(Window* pParent, WinBits nStyle); + virtual void Command( const CommandEvent& rCEvt ); + private: + Window* mpParent; + }; + + ScDPFieldControlBase( + ScDPLayoutDlg* pParent, const ResId& rResId, FixedText* pCaption ); + virtual ~ScDPFieldControlBase(); + + virtual void CalcSize() = 0; + + virtual bool IsValidIndex( size_t nIndex ) const = 0; + /** @return The pixel position of a field (without bound check). */ + virtual Point GetFieldPosition( size_t nIndex ) = 0; + /** Calculates the field index at a specific pixel position. + @param rnIndex The index of the field is returned here. + @return TRUE, if the index value is valid. */ + virtual bool GetFieldIndex( const Point& rPos, size_t& rnIndex ) = 0; + /** @return The pixel size of a field. */ + virtual Size GetFieldSize() const = 0; + + /** @return The description of the control which is used for the accessibility objects. */ + virtual String GetDescription() const = 0; + /** @return The type of the FieldWindow. */ + virtual ScDPFieldType GetFieldType() const = 0; + virtual void ScrollToShowSelection() = 0; + virtual void ScrollToEnd() = 0; + virtual void ResetScrollBar() = 0; + virtual void HandleWheelScroll(long nNotch) = 0; + + /** Reads the FixedText's text with mnemonic and hides the FixedText. */ + void UseMnemonic(); + + /** @return The name of the control without shortcut. */ + ::rtl::OUString GetName() const; + void SetName(const ::rtl::OUString& rName); + + /** @return TRUE, if the field with the given index exists. */ + bool IsExistingIndex( size_t nIndex ) const; + + /** Inserts a field to the specified index. */ + void AddField( const String& rText, size_t nNewIndex ); + + /** Inserts a field using the specified pixel position. + @param rPos The coordinates to insert the field. + @param rnIndex The new index of the field is returned here. + @return true, if the field has been created. */ + bool AddField( const String& rText, const Point& rPos, size_t& rnIndex ); + + bool AppendField(const String& rText, size_t& rnIndex); + + /** Removes a field from the specified index. */ + void DelField( size_t nDelIndex ); + + /** @return The count of existing fields. */ + size_t GetFieldCount() const; + + bool IsEmpty() const; + + /** Removes all fields. */ + void ClearFields(); + /** Changes the text on an existing field. */ + void SetFieldText( const String& rText, size_t nIndex ); + /** Returns the text of an existing field. */ + const String& GetFieldText( size_t nIndex ) const; + + /** Calculates a field index at a specific pixel position. Returns in every + case the index of an existing field. + @param rnIndex The index of the field is returned here. + @return TRUE, if the index value is valid. */ + void GetExistingIndex( const Point& rPos, size_t& rnIndex ); - /** Initilize the object. */ - void Init(); + size_t GetSelectedField() const; + void SetSelectedField(size_t nSelected); - /** Reads all needed style settings. */ - void GetStyleSettings(); + /** Notifies this control that the offset of the first field has been changed. + The control has to adjust the selection to keep the same field selected + on scrolling with scrollbar. */ + void ModifySelectionOffset( long nOffsetDiff ); + /** Selects the next field. Called i.e. after moving a field from SELECT area. */ + void SelectNext(); + /** Grabs focus and sets new selection. */ + void GrabFocusWithSel( size_t nIndex ); + + virtual void Paint( const Rectangle& rRect ); + virtual void DataChanged( const DataChangedEvent& rDCEvt ); + virtual void Command( const CommandEvent& rCEvt ); + virtual void MouseButtonDown( const MouseEvent& rMEvt ); + virtual void MouseButtonUp( const MouseEvent& rMEvt ); + virtual void MouseMove( const MouseEvent& rMEvt ); + virtual void KeyInput( const KeyEvent& rKEvt ); + virtual void GetFocus(); + virtual void LoseFocus(); + +protected: + FieldNames& GetFieldNames(); + const FieldNames& GetFieldNames() const; + + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::accessibility::XAccessible > CreateAccessible(); + + void FieldFocusChanged(size_t nOldSelected, size_t nFieldSelected); + void AccessibleSetFocus(bool bOn); + + /** Updates the tab stop style bits. */ + void UpdateStyle(); /** Draws the background. */ - void DrawBackground( OutputDevice& rDev ); + void DrawBackground( OutputDevice& rDev ); + /** Draws a field into the specified rectangle. */ - void DrawField( - OutputDevice& rDev, - const Rectangle& rRect, - FieldString& rText, - bool bFocus ); - - /** @return TRUE, if the field index is inside of the control area. */ - bool IsValidIndex( size_t nIndex ) const; - /** @return TRUE, if the field with the given index exists. */ - bool IsExistingIndex( size_t nIndex ) const; + void DrawField( + OutputDevice& rDev, const Rectangle& rRect, FieldName& rText, bool bFocus ); + + ScDPLayoutDlg* GetParentDlg() const; + + void AppendPaintable(Window* p); + void DrawPaintables(); + void DrawInvertSelection(); + + /** @return The new selection index after moving to the given direction. */ + virtual size_t CalcNewFieldIndex( SCsCOL nDX, SCsROW nDY ) const = 0; + + /** + * @param nIndex logical index of a field name, independent of scroll + * offsets. + * @return Display position of the button. The first displayed button is + * always 0 no matter what the current scroll offset is. In case + * the field specified by the index is outside the visible range, + * <code>INVALID_INDEX</code> is returned. + */ + virtual size_t GetDisplayPosition(size_t nIndex) const = 0; + + /** Draws the complete control. */ + virtual void Redraw() = 0; + +private: /** @return TRUE, if the field with the given index exists and the text is too long for the button control. */ bool IsShortenedText( size_t nIndex ) const; - /** @return The new selection index after moving to the given direction. */ - size_t CalcNewFieldIndex( SCsCOL nDX, SCsROW nDY ) const; + + /** Moves the selected field to nDestIndex. */ + void MoveField( size_t nDestIndex ); + /** Moves the selected field to the given direction. */ + void MoveFieldRel( SCsCOL nDX, SCsROW nDY ); /** Sets selection to the field with index nIndex. */ void SetSelection( size_t nIndex ); @@ -116,107 +229,164 @@ private: /** Sets selection to last field. */ void SetSelectionEnd(); /** Sets selection to new position relative to current. */ - void MoveSelection( USHORT nKeyCode, SCsCOL nDX, SCsROW nDY ); + void MoveSelection( SCsCOL nDX, SCsROW nDY ); - /** Moves the selected field to nDestIndex. */ - void MoveField( size_t nDestIndex ); - /** Moves the selected field to the given direction. */ - void MoveFieldRel( SCsCOL nDX, SCsROW nDY ); +private: + typedef ::std::vector<Window*> Paintables; + Paintables maPaintables; - /** Updates the tab stop style bits. */ - void UpdateStyle(); + FieldNames maFieldNames; /// String array of the field names and flags, if text fits into button. + ScDPLayoutDlg* mpDlg; + FixedText* mpCaption; /// FixedText containing the name of the control. + ::rtl::OUString maName; + + size_t mnFieldSelected; /// Currently selected field. + + com::sun::star::uno::WeakReference< ::com::sun::star::accessibility::XAccessible > xAccessible; + ScAccessibleDataPilotControl* pAccessible; +}; +// ============================================================================ + +/** + * Base class for field control with a horizontal scroll bar at the bottom. + * Page, column, data and select fields are derived from this class. + */ +class ScDPHorFieldControl : public ScDPFieldControlBase +{ protected: - virtual void Paint( const Rectangle& rRect ); - virtual void DataChanged( const DataChangedEvent& rDCEvt ); - virtual void MouseButtonDown( const MouseEvent& rMEvt ); - virtual void MouseButtonUp( const MouseEvent& rMEvt ); - virtual void MouseMove( const MouseEvent& rMEvt ); - virtual void KeyInput( const KeyEvent& rKEvt ); - virtual void GetFocus(); - virtual void LoseFocus(); - virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible(); + virtual size_t CalcNewFieldIndex(SCsCOL nDX, SCsROW nDY) const; + virtual size_t GetDisplayPosition(size_t nIndex) const; + virtual void Redraw(); public: - ScDPFieldWindow( - ScDPLayoutDlg* pDialog, - const ResId& rResId, - ScDPFieldType eFieldType, - FixedText* pFtFieldCaption ); - ScDPFieldWindow( - ScDPLayoutDlg* pDialog, - const ResId& rResId, - ScDPFieldType eFieldType, - const String& aName ); - virtual ~ScDPFieldWindow(); + ScDPHorFieldControl( + ScDPLayoutDlg* pDialog, const ResId& rResId, FixedText* pCaption ); - /** Reads the FixedText's text with mnemonic and hides the FixedText. */ - void UseMnemonic(); + virtual ~ScDPHorFieldControl(); - /** Draws the complete control. */ - void Redraw(); + virtual void CalcSize(); + virtual bool IsValidIndex( size_t nIndex ) const; + virtual Point GetFieldPosition(size_t nIndex); + virtual Size GetFieldSize() const; + virtual bool GetFieldIndex( const Point& rPos, size_t& rnIndex ); + virtual String GetDescription() const; - /** @return The pixel position of a field (without bound check). */ - Point GetFieldPosition( size_t nIndex ) const; - /** @return The pixel size of a field. */ - Size GetFieldSize() const; + virtual void ScrollToEnd(); + virtual void ScrollToShowSelection(); + virtual void ResetScrollBar(); + virtual void HandleWheelScroll(long nNotch); - /** @return The index of the selected field. */ - inline bool IsEmpty() const { return aFieldArr.empty(); } - /** @return The index of the selected field. */ - inline size_t GetSelectedField() const { return nFieldSelected; } - /** @return The pixel position of the last possible field. */ - Point GetLastPosition() const; +private: + bool GetFieldBtnPosSize(size_t nPos, Point& rPos, Size& rSize); + void HandleScroll(); - /** @return The count of existing fields. */ - inline size_t GetFieldCount() const { return aFieldArr.size(); } - /** Inserts a field to the specified index. */ - void AddField( const String& rText, size_t nNewIndex ); - /** Removes a field from the specified index. */ - void DelField( size_t nDelIndex ); - /** Removes all fields. */ - void ClearFields(); - /** Changes the text on an existing field. */ - void SetFieldText( const String& rText, size_t nIndex ); - /** Returns the text of an existing field. */ - const String& GetFieldText( size_t nIndex ) const; + DECL_LINK(ScrollHdl, ScrollBar*); + DECL_LINK(EndScrollHdl, ScrollBar*); - /** Inserts a field using the specified pixel position. - @param rPos The coordinates to insert the field. - @param rnIndex The new index of the field is returned here. - @return TRUE, if the field has been created. */ - bool AddField( const String& rText, const Point& rPos, size_t& rnIndex ); - /** Calculates the field index at a specific pixel position. - @param rnIndex The index of the field is returned here. - @return TRUE, if the index value is valid. */ - bool GetFieldIndex( const Point& rPos, size_t& rnIndex ) const; - /** Calculates a field index at a specific pixel position. Returns in every - case the index of an existing field. - @param rnIndex The index of the field is returned here. - @return TRUE, if the index value is valid. */ - void GetExistingIndex( const Point& rPos, size_t& rnIndex ); +private: - /** Notifies this control that the offset of the first field has been changed. - The control has to adjust the selection to keep the same field selected - on scrolling with scrollbar. */ - void ModifySelectionOffset( long nOffsetDiff ); - /** Selects the next field. Called i.e. after moving a field from SELECT area. */ - void SelectNext(); + ScrollBar maScroll; - /** @return The name of the control without shortcut. */ - inline String GetName() const { return aName; } + size_t mnFieldBtnRowCount; + size_t mnFieldBtnColCount; +}; - /** @return The description of the control which is used for the accessibility objects. */ - String GetDescription() const; +// ============================================================================ - /** Grabs focus and sets new selection. */ - void GrabFocusWithSel( size_t nIndex ); +class ScDPPageFieldControl : public ScDPHorFieldControl +{ +public: + ScDPPageFieldControl( + ScDPLayoutDlg* pDialog, const ResId& rResId, FixedText* pCaption); + virtual ~ScDPPageFieldControl(); - /** @return The type of the FieldWindow. */ - inline ScDPFieldType GetType() const { return eType; } + virtual ScDPFieldType GetFieldType() const; + virtual String GetDescription() const; }; -//=================================================================== +// ============================================================================ + +class ScDPColFieldControl : public ScDPHorFieldControl +{ +public: + ScDPColFieldControl( + ScDPLayoutDlg* pDialog, const ResId& rResId, FixedText* pCaption); + virtual ~ScDPColFieldControl(); + + virtual ScDPFieldType GetFieldType() const; + virtual String GetDescription() const; +}; + +// ============================================================================ + +/** + * Row field control with a vertical scroll bar. + */ +class ScDPRowFieldControl : public ScDPFieldControlBase +{ +public: + ScDPRowFieldControl( + ScDPLayoutDlg* pDialog, const ResId& rResId, FixedText* pCaption ); + + virtual ~ScDPRowFieldControl(); + + virtual void CalcSize(); + virtual bool IsValidIndex( size_t nIndex ) const; + virtual Point GetFieldPosition( size_t nIndex ); + virtual Size GetFieldSize() const; + virtual bool GetFieldIndex( const Point& rPos, size_t& rnIndex ); + virtual String GetDescription() const; + virtual ScDPFieldType GetFieldType() const; + + virtual void ScrollToEnd(); + virtual void ScrollToShowSelection(); + virtual void ResetScrollBar(); + virtual void HandleWheelScroll(long nNotch); + +protected: + virtual size_t CalcNewFieldIndex( SCsCOL nDX, SCsROW nDY ) const; + virtual size_t GetDisplayPosition(size_t nIndex) const; + virtual void Redraw(); + +private: + bool GetFieldBtnPosSize(size_t nPos, Point& rPos, Size& rSize); + void HandleScroll(); + + DECL_LINK(ScrollHdl, ScrollBar*); + DECL_LINK(EndScrollHdl, ScrollBar*); + +private: + + ScDPFieldControlBase::ScrollBar maScroll; + size_t mnColumnBtnCount; +}; + +// ============================================================================ + +class ScDPSelectFieldControl : public ScDPHorFieldControl +{ +public: + ScDPSelectFieldControl( + ScDPLayoutDlg* pDialog, const ResId& rResId, FixedText* pCaption); + virtual ~ScDPSelectFieldControl(); + + virtual ScDPFieldType GetFieldType() const; + virtual String GetDescription() const; +}; + +// ============================================================================ + +class ScDPDataFieldControl : public ScDPHorFieldControl +{ +public: + ScDPDataFieldControl( ScDPLayoutDlg* pParent, const ResId& rResId, FixedText* pCaption ); + virtual ~ScDPDataFieldControl(); + + virtual ScDPFieldType GetFieldType() const; + virtual Size GetFieldSize() const; + virtual String GetDescription() const; +}; #endif // SC_FIELDWND_HXX diff --git a/sc/source/ui/inc/filter.hrc b/sc/source/ui/inc/filter.hrc index 508c5af9aab5..d973bb15180b 100644 --- a/sc/source/ui/inc/filter.hrc +++ b/sc/source/ui/inc/filter.hrc @@ -79,4 +79,3 @@ #define LB_CRITERIA_AREA 51 #define ED_CRITERIA_AREA 52 #define RB_CRITERIA_AREA 53 - diff --git a/sc/source/ui/inc/fusel.hxx b/sc/source/ui/inc/fusel.hxx index 20887a6d151a..7f0783537624 100644 --- a/sc/source/ui/inc/fusel.hxx +++ b/sc/source/ui/inc/fusel.hxx @@ -29,9 +29,6 @@ #ifndef SC_FUSEL_HXX #define SC_FUSEL_HXX -#ifndef _SV_HXX -#endif - #include "fudraw.hxx" //class Outliner; diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx index 294287aada3e..3d4f33881da8 100644 --- a/sc/source/ui/inc/gridwin.hxx +++ b/sc/source/ui/inc/gridwin.hxx @@ -265,19 +265,10 @@ private: void DrawMarkDropObj( SdrObject* pObj ); SdrObject* GetEditObject(); BOOL IsMyModel(SdrEditView* pSdrView); - //void DrawStartTimer(); void DrawRedraw( ScOutputData& rOutputData, ScUpdateMode eMode, ULONG nLayer ); void DrawSdrGrid( const Rectangle& rDrawingRect, OutputDevice* pContentDev ); - //BOOL DrawBeforeScroll(); void DrawAfterScroll(/*BOOL bVal*/); - //void DrawMarks(); - //BOOL NeedDrawMarks(); - void DrawComboButton( const Point& rCellPos, - long nCellSizeX, - long nCellSizeY, - BOOL bArrowState, - BOOL bBtnIn = FALSE ); Rectangle GetListValButtonRect( const ScAddress& rButtonPos ); void DrawPagePreview( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, OutputDevice* pContentDev ); diff --git a/sc/source/ui/inc/highred.hrc b/sc/source/ui/inc/highred.hrc index 426c9ba29ee2..b6a4a1a4023c 100644 --- a/sc/source/ui/inc/highred.hrc +++ b/sc/source/ui/inc/highred.hrc @@ -34,7 +34,6 @@ #define CB_HIGHLIGHT_ACCEPT 6 #define CB_HIGHLIGHT_REJECT 7 -// #define FL_FILTER 10 #define TP_FILTER 11 #define TP_VIEW 12 @@ -44,12 +43,6 @@ #define ED_ASSIGN 15 #define RB_ASSIGN 16 - - - - - - #define STR_INSERT_COLS 20 #define STR_INSERT_ROWS 21 #define STR_INSERT_TABS 22 @@ -65,7 +58,3 @@ #define BMP_STR_OPEN 32 #define BMP_STR_END 33 #define BMP_STR_ERROR 34 - - -// - diff --git a/sc/source/ui/inc/impex.hxx b/sc/source/ui/inc/impex.hxx index 31ffe717817b..343e952abb3e 100644 --- a/sc/source/ui/inc/impex.hxx +++ b/sc/source/ui/inc/impex.hxx @@ -40,6 +40,10 @@ class SvStream; class SfxMedium; class ScAsciiOptions; +/** + * These options control how multi-line cells are converted during export in + * certain lossy formats (such as csv). + */ struct ScExportTextOptions { enum NewlineConversion { ToSystem, ToSpace, None }; @@ -153,7 +157,6 @@ public: }; -// static inline BOOL ScImportExport::IsEndianSwap( const SvStream& rStrm ) { #ifdef OSL_BIGENDIAN @@ -163,7 +166,6 @@ inline BOOL ScImportExport::IsEndianSwap( const SvStream& rStrm ) #endif } -// static inline void ScImportExport::SetNoEndianSwap( SvStream& rStrm ) { #ifdef OSL_BIGENDIAN diff --git a/sc/source/ui/inc/instbdlg.hrc b/sc/source/ui/inc/instbdlg.hrc index 08bff85388dd..dbe7e98e342a 100644 --- a/sc/source/ui/inc/instbdlg.hrc +++ b/sc/source/ui/inc/instbdlg.hrc @@ -27,8 +27,6 @@ #include <sc.hrc> // -> RID_SCDLG_INSERT_TABLE -//#define RID_SCDLG_INSERT_TABLE 300 - #define BTN_OK 1 #define BTN_CANCEL 2 #define BTN_HELP 3 @@ -48,5 +46,3 @@ #define BTN_BROWSE 28 #define CB_LINK 29 #define FT_PATH 30 - - diff --git a/sc/source/ui/inc/linkarea.hrc b/sc/source/ui/inc/linkarea.hrc index bc906fdb14ad..401739474acb 100644 --- a/sc/source/ui/inc/linkarea.hrc +++ b/sc/source/ui/inc/linkarea.hrc @@ -39,4 +39,3 @@ #define BTN_RELOAD 10 #define NF_DELAY 11 #define FT_SECONDS 12 - diff --git a/sc/source/ui/inc/linkarea.hxx b/sc/source/ui/inc/linkarea.hxx index 513cd6d19175..8c37f0a5685d 100644 --- a/sc/source/ui/inc/linkarea.hxx +++ b/sc/source/ui/inc/linkarea.hxx @@ -39,11 +39,6 @@ #include <svtools/stdctrl.hxx> #include <svtools/inettbc.hxx> -//REMOVE #ifndef SO2_DECL_SVEMBEDDEDOBJECT_DEFINED -//REMOVE #define SO2_DECL_SVEMBEDDEDOBJECT_DEFINED -//REMOVE SO2_DECL_REF(SvEmbeddedObject) -//REMOVE #endif - namespace sfx2 { class DocumentInserter; } namespace sfx2 { class FileDialogHelper; } diff --git a/sc/source/ui/inc/miscdlgs.hrc b/sc/source/ui/inc/miscdlgs.hrc index 00b1658849d6..3f1faa5492aa 100644 --- a/sc/source/ui/inc/miscdlgs.hrc +++ b/sc/source/ui/inc/miscdlgs.hrc @@ -36,20 +36,6 @@ // -> RID_SCDLG_FILLSERIES // -> RID_SCDLG_AUTOFORMAT -// Fuer den DesignEditor: -/* -#define RID_SCDLG_DELCELL 1256 -#define RID_SCDLG_INSCELL 1257 -#define RID_SCDLG_DELCONT 1258 -#define RID_SCDLG_INSCONT 1259 -#define RID_SCDLG_MOVETAB 1260 -#define RID_SCDLG_STRINPUT 1261 -#define RID_SCDLG_MTRINPUT 1262 -#define RID_SCDLG_SELENTRY 1263 -#define RID_SCDLG_FILLSERIES 1264 -#define RID_SCDLG_AUTOFORMAT 1255 -*/ - // allgemein #define BTN_OK 100 #define BTN_CANCEL 102 @@ -112,6 +98,16 @@ #define LB_INSERT 4 #define BTN_COPY 5 #define STR_NEWDOC 6 +#define BTN_MOVE 7 +#define FL_ACTION 8 +#define FL_LOCATION 9 +#define FL_NAME 11 +#define FT_TABNAME 12 +#define FT_TABNAME_WARN 13 +#define STR_CURRENTDOC 14 +#define STR_TABNAME_WARN_USED 15 +#define STR_TABNAME_WARN_EMPTY 16 +#define STR_TABNAME_WARN_INVALID 17 // Eingabe eines Strings #define ED_INPUT 10 @@ -185,4 +181,3 @@ // Tab Bg Color #define TAB_BG_COLOR_CT_BORDER 1 #define TAB_BG_COLOR_SET_BGDCOLOR 2 - diff --git a/sc/source/ui/inc/mvtabdlg.hxx b/sc/source/ui/inc/mvtabdlg.hxx index 27963f335bcb..e850d9bff41c 100644 --- a/sc/source/ui/inc/mvtabdlg.hxx +++ b/sc/source/ui/inc/mvtabdlg.hxx @@ -35,6 +35,7 @@ #include <vcl/imagebtn.hxx> #include <vcl/lstbox.hxx> #include <vcl/fixed.hxx> +#include <vcl/edit.hxx> #include <layout/layout.hxx> #include <layout/layout-pre.hxx> @@ -44,33 +45,60 @@ class ScMoveTableDlg : public ModalDialog { public: - ScMoveTableDlg( Window* pParent ); + ScMoveTableDlg( Window* pParent, const String& rDefault ); ~ScMoveTableDlg(); USHORT GetSelectedDocument () const; SCTAB GetSelectedTable () const; - BOOL GetCopyTable () const; - void SetCopyTable (BOOL bFlag=TRUE); + bool GetCopyTable () const; + bool GetRenameTable () const; + void GetTabNameString( String& rString ) const; + void SetForceCopyTable (); void EnableCopyTable (BOOL bFlag=TRUE); + void EnableRenameTable (BOOL bFlag=TRUE); private: + void ResetRenameInput(); + void CheckNewTabName(); + ScDocument* GetSelectedDoc(); + +private: + FixedLine aFlAction; + RadioButton aBtnMove; + RadioButton aBtnCopy; + FixedLine aFlLocation; FixedText aFtDoc; ListBox aLbDoc; FixedText aFtTable; ListBox aLbTable; - CheckBox aBtnCopy; + FixedLine aFlName; + FixedText aFtTabName; + Edit aEdTabName; + FixedText aFtWarn; OKButton aBtnOk; CancelButton aBtnCancel; HelpButton aBtnHelp; + String maStrTabNameUsed; + String maStrTabNameEmpty; + String maStrTabNameInvalid; + + const String& mrDefaultName; + USHORT nDocument; SCTAB nTable; - BOOL bCopyTable; + bool bCopyTable:1; + bool bRenameTable:1; + bool mbEverEdited:1; + //-------------------------------------- void Init (); + void InitBtnRename (); void InitDocListBox (); DECL_LINK( OkHdl, void * ); DECL_LINK( SelHdl, ListBox * ); + DECL_LINK( CheckBtnHdl, void * ); + DECL_LINK( CheckNameHdl, Edit * ); }; #include <layout/layout-post.hxx> diff --git a/sc/source/ui/inc/namedlg.hrc b/sc/source/ui/inc/namedlg.hrc index b2eec6879ec3..0d49fe8c3f60 100644 --- a/sc/source/ui/inc/namedlg.hrc +++ b/sc/source/ui/inc/namedlg.hrc @@ -33,20 +33,19 @@ #define BTN_REMOVE 4 #define BTN_HELP 5 #define BTN_MORE 6 -// + #define FL_NAME 11 #define ED_NAME 12 #define FL_ASSIGN 13 #define ED_ASSIGN 15 #define RB_ASSIGN 16 -// + #define STR_ADD 21 #define STR_MODIFY 22 #define STR_INVALIDSYMBOL 23 -// + #define BTN_CRITERIA 31 #define BTN_PRINTAREA 32 #define BTN_COLHEADER 33 #define BTN_ROWHEADER 34 #define FL_TYPE 35 - diff --git a/sc/source/ui/inc/navipi.hxx b/sc/source/ui/inc/navipi.hxx index 6b804589e145..7d3559e3de9b 100644 --- a/sc/source/ui/inc/navipi.hxx +++ b/sc/source/ui/inc/navipi.hxx @@ -244,7 +244,6 @@ private: SfxBindings& rBindings; // must be first member ImageList aCmdImageList; // must be before aTbxCmd - ImageList aCmdImageListH; FixedInfo aFtCol; ColumnEdit aEdCol; FixedInfo aFtRow; diff --git a/sc/source/ui/inc/optdlg.hrc b/sc/source/ui/inc/optdlg.hrc index e03f3e807037..9ac8213cf621 100644 --- a/sc/source/ui/inc/optdlg.hrc +++ b/sc/source/ui/inc/optdlg.hrc @@ -109,19 +109,19 @@ // TP_LCONTENT -#define GB_DISPLAY 20 -#define CB_FORMULA 21 -#define CB_NIL 22 +#define GB_DISPLAY 20 +#define CB_FORMULA 21 +#define CB_NIL 22 #define CB_ANNOT 23 #define CB_VALUE 24 #define CB_ANCHOR 25 #define GB_OBJECT 26 #define FT_OBJGRF 27 #define LB_OBJGRF 28 -#define FT_DIAGRAM 29 -#define LB_DIAGRAM 30 -#define FT_DRAW 31 -#define LB_DRAW 32 +#define FT_DIAGRAM 29 +#define LB_DIAGRAM 30 +#define FT_DRAW 31 +#define LB_DRAW 32 #define CB_CLIP 33 #define GB_ZOOM 34 #define CB_SYNCZOOM 35 @@ -162,9 +162,8 @@ #define FL_SEPARATOR1 71 #define FL_SEPARATOR2 72 #define FL_SEPARATOR 73 -#define FL_H_SEPARATOR 74 -// TP_INPUT +// TP_INPUT #define GB_OPTIONS 70 #define CB_ALIGN 71 #define LB_ALIGN 72 diff --git a/sc/source/ui/inc/optload.hrc b/sc/source/ui/inc/optload.hrc index 992bb8c737e4..c090c64dc136 100644 --- a/sc/source/ui/inc/optload.hrc +++ b/sc/source/ui/inc/optload.hrc @@ -36,5 +36,3 @@ #define CB_AUTO_UPDATE_FIELDS 8 #define CB_AUTO_UPDATE_CHARTS 9 #define FT_UPDATE_LINKS 10 - - diff --git a/sc/source/ui/inc/optsolver.hrc b/sc/source/ui/inc/optsolver.hrc index 9df8eea1d7f4..5ed7b8560060 100644 --- a/sc/source/ui/inc/optsolver.hrc +++ b/sc/source/ui/inc/optsolver.hrc @@ -91,8 +91,5 @@ #define BTN_OK 5 #define BTN_CANCEL 6 -#define IMG_DEL_H 1 - #define STR_INVALIDINPUT 1 #define STR_INVALIDCONDITION 2 - diff --git a/sc/source/ui/inc/pfiltdlg.hxx b/sc/source/ui/inc/pfiltdlg.hxx index 64df881086db..6a57c9229eea 100644 --- a/sc/source/ui/inc/pfiltdlg.hxx +++ b/sc/source/ui/inc/pfiltdlg.hxx @@ -29,9 +29,6 @@ #ifndef SC_PFILTDLG_HXX #define SC_PFILTDLG_HXX -#ifndef _SV_HXX -#endif - #include <vcl/morebtn.hxx> #include <svtools/stdctrl.hxx> #include <vcl/button.hxx> diff --git a/sc/source/ui/inc/protectiondlg.hrc b/sc/source/ui/inc/protectiondlg.hrc index 52e57040922c..2f7cc5ee21a8 100644 --- a/sc/source/ui/inc/protectiondlg.hrc +++ b/sc/source/ui/inc/protectiondlg.hrc @@ -40,5 +40,5 @@ #define FT_OPTIONS 10 #define CLB_OPTIONS 11 -#define ST_SELECT_LOCKED_CELLS 50 -#define ST_SELECT_UNLOCKED_CELLS 51 +#define ST_SELECT_PROTECTED_CELLS 50 +#define ST_SELECT_UNPROTECTED_CELLS 51 diff --git a/sc/source/ui/inc/pvlaydlg.hxx b/sc/source/ui/inc/pvlaydlg.hxx index d9ae44cca438..98c3ba15ed96 100644 --- a/sc/source/ui/inc/pvlaydlg.hxx +++ b/sc/source/ui/inc/pvlaydlg.hxx @@ -73,8 +73,6 @@ class ScDPObject; //============================================================================ -#define FUNC_COUNT 11 - class ScDPLayoutDlg : public ScAnyRefDlg { public: @@ -97,9 +95,8 @@ public: void NotifyMouseButtonUp ( const Point& rAt ); PointerStyle NotifyMouseMove ( const Point& rAt ); void NotifyFieldFocus ( ScDPFieldType eType, BOOL bGotFocus ); - void NotifyMoveField ( ScDPFieldType eToType ); + void NotifyMoveFieldToEnd ( ScDPFieldType eToType ); void NotifyRemoveField ( ScDPFieldType eType, size_t nFieldIndex ); - BOOL NotifyMoveSlider ( USHORT nKeyCode ); // return TRUE, if position changed protected: virtual void Deactivate(); @@ -111,15 +108,14 @@ private: FixedLine aFlLayout; FixedText aFtPage; - ScDPFieldWindow aWndPage; + ScDPPageFieldControl aWndPage; FixedText aFtCol; - ScDPFieldWindow aWndCol; + ScDPColFieldControl aWndCol; FixedText aFtRow; - ScDPFieldWindow aWndRow; + ScDPRowFieldControl aWndRow; FixedText aFtData; - ScDPFieldWindow aWndData; - ScDPFieldWindow aWndSelect; - ScrollBar aSlider; + ScDPDataFieldControl aWndData; + ScDPSelectFieldControl aWndSelect; FixedInfo aFtInfo; FixedLine aFlAreas; @@ -176,18 +172,20 @@ private: ScDPFuncDataVec aRowArr; ScDPFuncDataVec aDataArr; + long mnFieldObjSpace; + ScDPObjectPtr xDlgDPObject; ScRange aOldRange; ScPivotParam thePivotData; ScViewData* pViewData; ScDocument* pDoc; - BOOL bRefInputMode; + bool bRefInputMode; + bool mbValidSrcRange; private: - ScDPFieldWindow& GetFieldWindow ( ScDPFieldType eType ); void Init (bool bNewOutput); void InitWndSelect ( const ::std::vector<ScDPLabelDataRef>& rLabels ); - void InitWnd ( PivotField* pArr, long nCount, ScDPFieldType eType ); + void InitFieldWindow ( const ::std::vector<PivotField>& rFields, ScDPFieldType eType ); void InitFocus (); void InitFields (); void CalcWndSizes (); @@ -202,24 +200,39 @@ private: void AddField ( size_t nFromIndex, ScDPFieldType eToType, const Point& rAtPos ); + void AppendField(size_t nFromIndex, ScDPFieldType eToType); void MoveField ( ScDPFieldType eFromType, size_t nFromIndex, ScDPFieldType eToType, const Point& rAtPos ); + void MoveFieldToEnd(ScDPFieldType eFromType, size_t nFromIndex, ScDPFieldType eToType); void RemoveField ( ScDPFieldType eRemType, size_t nRemIndex ); - BOOL GetPivotArrays ( PivotField* pPageArr, - PivotField* pColArr, - PivotField* pRowArr, - PivotField* pDataArr, - USHORT& rPageCount, - USHORT& rColCount, - USHORT& rRowCount, - USHORT& rDataCount ); + bool GetPivotArrays( ::std::vector<PivotField>& rPageFields, + ::std::vector<PivotField>& rColFields, + ::std::vector<PivotField>& rRowFields, + ::std::vector<PivotField>& rDataFields ); void UpdateSrcRange(); + ScDPFieldControlBase* GetFieldWindow(ScDPFieldType eType); + + /** + * Get pointers to field windows that are <b>not</b> the window of + * specified type. The select window type is not included. + */ + void GetOtherFieldWindows( + ScDPFieldType eType, ScDPFieldControlBase*& rpWnd1, ScDPFieldControlBase*& rpWnd2); + + ScDPFuncDataVec* GetFieldDataArray(ScDPFieldType eType); + + /** + * Like GetOtherFieldWindows(), get pointers to data arrays of the fields + * that are <b>not</b> the specified field type. + */ + void GetOtherDataArrays( + ScDPFieldType eType, ScDPFuncDataVec*& rpArr1, ScDPFuncDataVec*& rpArr2); + // Handler DECL_LINK( ClickHdl, PushButton * ); - DECL_LINK( ScrollHdl, ScrollBar * ); DECL_LINK( SelAreaHdl, ListBox * ); DECL_LINK( MoreClickHdl, MoreButton * ); DECL_LINK( EdModifyHdl, Edit * ); @@ -229,8 +242,6 @@ private: DECL_LINK( GetFocusHdl, Control* ); }; - - #endif // SC_PVLAYDLG_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/inc/reffact.hxx b/sc/source/ui/inc/reffact.hxx index 0be78421455b..f170fa7dc0e4 100644 --- a/sc/source/ui/inc/reffact.hxx +++ b/sc/source/ui/inc/reffact.hxx @@ -100,7 +100,6 @@ class ScSimpleRefDlgWrapper: public SfxChildWindow void StartRefInput(); }; -//<!--Added by PengYunQuan for Validity Cell Range Picker class SC_DLLPUBLIC ScValidityRefChildWin : public SfxChildWindow { bool m_bVisibleLock:1; @@ -115,7 +114,6 @@ public: void Hide(){ if( !m_bVisibleLock) SfxChildWindow::Hide(); } void Show( USHORT nFlags ){ if( !m_bVisibleLock ) SfxChildWindow::Show( nFlags ); } }; -//-->Added by PengYunQuan for Validity Cell Range Picker //================================================================== diff --git a/sc/source/ui/inc/rfindlst.hxx b/sc/source/ui/inc/rfindlst.hxx index 03867631aa24..7e6f08adc4f3 100644 --- a/sc/source/ui/inc/rfindlst.hxx +++ b/sc/source/ui/inc/rfindlst.hxx @@ -50,7 +50,7 @@ class ScRangeFindList { List aEntries; String aDocName; - BOOL bHidden; + bool bHidden; public: ScRangeFindList(const String& rName); @@ -64,9 +64,9 @@ public: void SetHidden( BOOL bSet ) { bHidden = bSet; } const String& GetDocName() const { return aDocName; } - BOOL IsHidden() const { return bHidden; } + bool IsHidden() const { return bHidden; } - static ColorData GetColorName( USHORT nIndex ); + static ColorData GetColorName( size_t nIndex ); }; diff --git a/sc/source/ui/inc/select.hxx b/sc/source/ui/inc/select.hxx index 7fdd0e780e54..c822ab267b1f 100644 --- a/sc/source/ui/inc/select.hxx +++ b/sc/source/ui/inc/select.hxx @@ -64,6 +64,9 @@ private: ScSplitPos GetWhich(); + ULONG CalcUpdateInterval( const Size& rWinSize, const Point& rEffPos, + bool bLeftScroll, bool bTopScroll, bool bRightScroll, bool bBottomScroll ); + public: ScViewFunctionSet( ScViewData* pNewViewData ); diff --git a/sc/source/ui/inc/simpref.hrc b/sc/source/ui/inc/simpref.hrc index d6fb6d4412eb..c7dbb3ebdea9 100644 --- a/sc/source/ui/inc/simpref.hrc +++ b/sc/source/ui/inc/simpref.hrc @@ -34,4 +34,3 @@ #define FT_ASSIGN 10 #define ED_ASSIGN 11 #define RB_ASSIGN 12 - diff --git a/sc/source/ui/inc/solveroptions.hrc b/sc/source/ui/inc/solveroptions.hrc index e3be150ccd1b..3c543e61a8f5 100644 --- a/sc/source/ui/inc/solveroptions.hrc +++ b/sc/source/ui/inc/solveroptions.hrc @@ -44,4 +44,3 @@ #define NF_VALUE 1 #define ED_VALUE 1 - diff --git a/sc/source/ui/inc/solvrdlg.hrc b/sc/source/ui/inc/solvrdlg.hrc index 7139abd2a5f6..ab40fd3f72a2 100644 --- a/sc/source/ui/inc/solvrdlg.hrc +++ b/sc/source/ui/inc/solvrdlg.hrc @@ -43,4 +43,3 @@ #define STR_INVALIDVAR 2 #define STR_INVALIDFORM 3 #define STR_NOFORMULA 4 - diff --git a/sc/source/ui/inc/sortdlg.hrc b/sc/source/ui/inc/sortdlg.hrc index d079ea560779..f583dd3d2ce9 100644 --- a/sc/source/ui/inc/sortdlg.hrc +++ b/sc/source/ui/inc/sortdlg.hrc @@ -34,13 +34,6 @@ // -> SCSTR_UNDEFINED // -> SCSTR_FIELD -/* -#define RID_SCDLG_SORT 256 -#define RID_SCPAGE_SORT_FIELDS 257 -#define RID_SCPAGE_SORT_OPTIONS 258 -#define RID_SCDLG_SORT_WARNING -*/ - #define TP_FIELDS 1 #define TP_OPTIONS 2 @@ -63,8 +56,6 @@ #define LB_SORT_USER 2 #define LB_OUTAREA 3 #define ED_OUTAREA 4 -//#define FT_AREA_LABEL 5 -//#define FT_AREA 6 #define BTN_SORT_USER 7 #define BTN_CASESENSITIVE 8 #define BTN_LABEL 9 @@ -80,12 +71,8 @@ #define LB_ALGORITHM 19 #define BTN_NATURALSORT 20 -//#define RID_SCDLG_SORT_WARNING #define FT_TEXT 1 #define FT_TIP 2 #define BTN_EXTSORT 3 #define BTN_CURSORT 4 #define BTN_CANCEL 5 - - - diff --git a/sc/source/ui/inc/styledlg.hxx b/sc/source/ui/inc/styledlg.hxx index ed39fbf51b2b..6114da813f03 100644 --- a/sc/source/ui/inc/styledlg.hxx +++ b/sc/source/ui/inc/styledlg.hxx @@ -29,9 +29,6 @@ #ifndef SC_STYLEDLG_HXX #define SC_STYLEDLG_HXX -#ifndef _SFX_HXX -#endif - #include <sfx2/styledlg.hxx> //================================================================== diff --git a/sc/source/ui/inc/subtdlg.hrc b/sc/source/ui/inc/subtdlg.hrc index 66c63df48953..b0680ece924b 100644 --- a/sc/source/ui/inc/subtdlg.hrc +++ b/sc/source/ui/inc/subtdlg.hrc @@ -27,12 +27,6 @@ #include "sc.hrc" -/* -#define RID_SCDLG_SUBTOTALS 256 -#define RID_SCPAGE_SUBT_GROUP 256 -#define RID_SCPAGE_SUBT_OPTIONS 257 -*/ - // TabDialog #define BTN_REMOVE 1 #define PAGE_GROUP1 2 @@ -60,5 +54,3 @@ #define BTN_FORMATS 33 #define BTN_USERDEF 34 #define LB_USERDEF 35 - - diff --git a/sc/source/ui/inc/subtdlg.hxx b/sc/source/ui/inc/subtdlg.hxx index 8cff085ae0f0..d2ca8b9e8d37 100644 --- a/sc/source/ui/inc/subtdlg.hxx +++ b/sc/source/ui/inc/subtdlg.hxx @@ -29,9 +29,6 @@ #ifndef SC_SUBTDLG_HXX #define SC_SUBTDLG_HXX -#ifndef _SFX_HXX -#endif - #include <sfx2/tabdlg.hxx> #include "scui_def.hxx" diff --git a/sc/source/ui/inc/tabopdlg.hrc b/sc/source/ui/inc/tabopdlg.hrc index 5ae127b63e73..633c69881776 100644 --- a/sc/source/ui/inc/tabopdlg.hrc +++ b/sc/source/ui/inc/tabopdlg.hrc @@ -46,5 +46,3 @@ #define STR_WRONGROWCOL 4 #define STR_NOCOLFORMULA 5 #define STR_NOROWFORMULA 6 - - diff --git a/sc/source/ui/inc/tabview.hxx b/sc/source/ui/inc/tabview.hxx index 8a4d79220cfd..3fbe63d6154e 100644 --- a/sc/source/ui/inc/tabview.hxx +++ b/sc/source/ui/inc/tabview.hxx @@ -30,11 +30,6 @@ #include <vcl/scrbar.hxx> -//REMOVE #ifndef SO2_DECL_SVINPLACECLIENT_DEFINED -//REMOVE #define SO2_DECL_SVINPLACECLIENT_DEFINED -//REMOVE SO2_DECL_REF(SvInPlaceClient) -//REMOVE #endif - #include <sfx2/ipclient.hxx> #include "viewutil.hxx" diff --git a/sc/source/ui/inc/tbinsert.hrc b/sc/source/ui/inc/tbinsert.hrc index 44c0d295cfc6..78ff1ca0ec84 100644 --- a/sc/source/ui/inc/tbinsert.hrc +++ b/sc/source/ui/inc/tbinsert.hrc @@ -28,5 +28,3 @@ #define RID_TOOLBOX_INSERT 1 #define RID_TOOLBOX_INSCELLS 2 #define RID_TOOLBOX_INSOBJ 3 - - diff --git a/sc/source/ui/inc/tpcalc.hxx b/sc/source/ui/inc/tpcalc.hxx index 12e12c8750b8..608670181f46 100644 --- a/sc/source/ui/inc/tpcalc.hxx +++ b/sc/source/ui/inc/tpcalc.hxx @@ -71,7 +71,6 @@ private: RadioButton aBtnDateSc10; RadioButton aBtnDate1904; - FixedLine aHSeparatorFL; CheckBox aBtnCase; CheckBox aBtnCalc; CheckBox aBtnMatch; diff --git a/sc/source/ui/inc/tphf.hxx b/sc/source/ui/inc/tphf.hxx index 5b7576320b13..386015e0337c 100644 --- a/sc/source/ui/inc/tphf.hxx +++ b/sc/source/ui/inc/tphf.hxx @@ -53,8 +53,6 @@ protected: const SfxItemSet& rSet, USHORT nSetId ); -// using SvxHFPage::ActivatePage; -// using SvxHFPage::DeactivatePage; virtual void ActivatePage(); virtual void DeactivatePage(); virtual void ActivatePage( const SfxItemSet& rSet ); diff --git a/sc/source/ui/inc/tptable.hxx b/sc/source/ui/inc/tptable.hxx index 007fb3f795c1..b1b988811d6e 100644 --- a/sc/source/ui/inc/tptable.hxx +++ b/sc/source/ui/inc/tptable.hxx @@ -78,8 +78,6 @@ private: FixedImage aBmpPageDir; Image aImgLeftRight; Image aImgTopDown; - Image aImgLeftRightHC; - Image aImgTopDownHC; CheckBox aBtnPageNo; NumericField aEdPageNo; diff --git a/sc/source/ui/inc/transobj.hxx b/sc/source/ui/inc/transobj.hxx index 04a2eac1df29..5940d806b43c 100644 --- a/sc/source/ui/inc/transobj.hxx +++ b/sc/source/ui/inc/transobj.hxx @@ -53,8 +53,6 @@ private: SCROW nNonFiltered; // non-filtered rows TransferableDataHelper aOleData; TransferableObjectDescriptor aObjDesc; -//REMOVE SvEmbeddedObjectRef aDocShellRef; -//REMOVE SvEmbeddedObjectRef aDrawPersistRef; SfxObjectShellRef aDocShellRef; SfxObjectShellRef aDrawPersistRef; com::sun::star::uno::Reference<com::sun::star::sheet::XSheetCellRanges> xDragSourceRanges; diff --git a/sc/source/ui/inc/undotab.hxx b/sc/source/ui/inc/undotab.hxx index 029754663b72..c6480c90f084 100644 --- a/sc/source/ui/inc/undotab.hxx +++ b/sc/source/ui/inc/undotab.hxx @@ -51,7 +51,9 @@ #include <com/sun/star/uno/Sequence.hxx> +#include <boost/shared_ptr.hpp> #include <memory> +#include <vector> class ScDocShell; class ScDocument; @@ -180,9 +182,13 @@ class ScUndoMoveTab: public ScSimpleUndo { public: TYPEINFO(); - ScUndoMoveTab( ScDocShell* pNewDocShell, - const SvShorts &aOldTab, - const SvShorts &aNewTab); + ScUndoMoveTab( + ScDocShell* pNewDocShell, + ::std::vector<SCTAB>* pOldTabs, + ::std::vector<SCTAB>* pNewTabs, + ::std::vector< ::rtl::OUString>* pOldNames = NULL, + ::std::vector< ::rtl::OUString>* pNewNames = NULL ); + virtual ~ScUndoMoveTab(); virtual void Undo(); @@ -193,8 +199,10 @@ public: virtual String GetComment() const; private: - SvShorts theOldTabs; - SvShorts theNewTabs; + ::boost::shared_ptr< ::std::vector<SCTAB> > mpOldTabs; + ::boost::shared_ptr< ::std::vector<SCTAB> > mpNewTabs; + ::boost::shared_ptr< ::std::vector< ::rtl::OUString> > mpOldNames; + ::boost::shared_ptr< ::std::vector< ::rtl::OUString> > mpNewNames; void DoChange( BOOL bUndo ) const; }; @@ -204,9 +212,11 @@ class ScUndoCopyTab: public ScSimpleUndo { public: TYPEINFO(); - ScUndoCopyTab(ScDocShell* pNewDocShell, - const SvShorts &aOldTab, - const SvShorts &aNewTab); + ScUndoCopyTab( + ScDocShell* pNewDocShell, + ::std::vector<SCTAB>* pOldTabs, + ::std::vector<SCTAB>* pNewTabs, + ::std::vector< ::rtl::OUString>* pNewNames = NULL ); virtual ~ScUndoCopyTab(); @@ -218,9 +228,10 @@ public: virtual String GetComment() const; private: + ::boost::shared_ptr< ::std::vector<SCTAB> > mpOldTabs; + ::boost::shared_ptr< ::std::vector<SCTAB> > mpNewTabs; + ::boost::shared_ptr< ::std::vector< ::rtl::OUString> > mpNewNames; SdrUndoAction* pDrawUndo; - SvShorts theOldTabs; - SvShorts theNewTabs; void DoChange() const; }; diff --git a/sc/source/ui/inc/validate.hrc b/sc/source/ui/inc/validate.hrc index 45e5dda39c2d..bde827c84e00 100644 --- a/sc/source/ui/inc/validate.hrc +++ b/sc/source/ui/inc/validate.hrc @@ -58,9 +58,7 @@ #define CB_SORTLIST 28 #define EDT_LIST 29 #define FT_SOURCEHINT 30 -//<!--Added by PengYunQuan for Validity Cell Range Picker #define RB_VALIDITY_REF 88 -//-->Added by PengYunQuan for Validity Cell Range Picker /* Position indexes for "Allow" list box. They do not map directly to ScValidationMode and can safely be modified to @@ -85,4 +83,3 @@ #define SC_VALIDDLG_DATA_NOTEQUAL 5 #define SC_VALIDDLG_DATA_BETWEEN 6 #define SC_VALIDDLG_DATA_NOTBETWEEN 7 - diff --git a/sc/source/ui/inc/validate.hxx b/sc/source/ui/inc/validate.hxx index 1f7e714bb6e0..050c54a00121 100644 --- a/sc/source/ui/inc/validate.hxx +++ b/sc/source/ui/inc/validate.hxx @@ -34,13 +34,11 @@ #include <vcl/fixed.hxx> #include <vcl/lstbox.hxx> #include <svtools/svmedit.hxx> -//<!--Added by PengYunQuan for Validity Cell Range Picker + #include "anyrefdg.hxx" -//-->Added by PengYunQuan for Validity Cell Range Picker // ============================================================================ -//<!--Added by PengYunQuan for Validity Cell Range Picker struct ScRefHandlerCaller{ virtual ~ScRefHandlerCaller(){} }; @@ -50,15 +48,15 @@ protected: ScRefHandlerCaller *m_pHandler; void (ScRefHandlerCaller::*m_pSetReferenceHdl)( const ScRange& , ScDocument* ); void (ScRefHandlerCaller::*m_pSetActiveHdl)(); - void (ScRefHandlerCaller::*m_pRefInputStartPreHdl)( ScRefEdit* pEdit, ScRefButton* pButton ); - void (ScRefHandlerCaller::*m_pRefInputStartPostHdl)( ScRefEdit* pEdit, ScRefButton* pButton ); + void (ScRefHandlerCaller::*m_pRefInputStartPreHdl)( formula::RefEdit* pEdit, formula::RefButton* pButton ); + void (ScRefHandlerCaller::*m_pRefInputStartPostHdl)( formula::RefEdit* pEdit, formula::RefButton* pButton ); void (ScRefHandlerCaller::*m_pRefInputDonePreHdl)(); void (ScRefHandlerCaller::*m_pRefInputDonePostHdl)(); public: typedef void (ScRefHandlerCaller::*PFUNCSETREFHDLTYPE)( const ScRange& , ScDocument* ); typedef void (ScRefHandlerCaller::*PCOMMONHDLTYPE)(); - typedef void (ScRefHandlerCaller::*PINPUTSTARTDLTYPE)( ScRefEdit* pEdit, ScRefButton* pButton ); + typedef void (ScRefHandlerCaller::*PINPUTSTARTDLTYPE)( formula::RefEdit* pEdit, formula::RefButton* pButton ); PFUNCSETREFHDLTYPE SetSetRefHdl( PFUNCSETREFHDLTYPE pNewHdl ) { @@ -87,33 +85,23 @@ public: ScRefHandlerHelper():m_pHandler(NULL), m_pSetReferenceHdl( NULL ), m_pSetActiveHdl(NULL), m_pRefInputStartPreHdl( NULL ), m_pRefInputStartPostHdl( NULL ), m_pRefInputDonePreHdl( NULL ), m_pRefInputDonePostHdl( NULL ){} }; -//-->Added by PengYunQuan for Validity Cell Range Picker /** The "Validity" tab dialog. */ -//<!--Modified by PengYunQuan for Validity Cell Range Picker -//class ScValidationDlg : public SfxTabDialog class ScValidationDlg :public ScRefHdlrImpl<ScValidationDlg, SfxTabDialog, false>, public ScRefHandlerHelper -//-->Modified by PengYunQuan for Validity Cell Range Picker { - //<!--Added by PengYunQuan for Validity Cell Range Picker typedef ScRefHdlrImpl<ScValidationDlg, SfxTabDialog, false> ScValidationDlgBase; - //Start_Moddify by liliang 03/26/2008 SODC_13677_2 DECL_LINK( OkHdl, Button * ); - //End_Moddify by liliang 03/26/2008 SODC_13677_2 + bool m_bOwnRefHdlr:1; ScTabViewShell *m_pTabVwSh; bool m_bRefInputting:1; bool EnterRefStatus(); bool LeaveRefStatus(); - //-->Added by PengYunQuan for Validity Cell Range Picker + public: - //<!--Modified by PengYunQuan for Validity Cell Range Picker - //explicit ScValidationDlg( Window* pParent, const SfxItemSet* pArgSet ); explicit ScValidationDlg( Window* pParent, const SfxItemSet* pArgSet, ScTabViewShell * pTabViewSh, SfxBindings *pB = NULL ); - //-->Modified by PengYunQuan for Validity Cell Range Picker - //<!--Added by PengYunQuan for Validity Cell Range Picker virtual ~ScValidationDlg(); inline static ScValidationDlg * Find1AliveObject( Window *pAncestor ); bool IsAlive(); @@ -148,7 +136,7 @@ public: bool IsRefInputting(){ return m_bRefInputting; } - virtual void RefInputStart( ScRefEdit* pEdit, ScRefButton* pButton = NULL ) + virtual void RefInputStart( formula::RefEdit* pEdit, formula::RefButton* pButton = NULL ) { if( !CanInputStart( pEdit ) ) return; @@ -181,17 +169,13 @@ public: enum { SLOTID = SID_VALIDITY_REFERENCE }; BOOL Close(); - //-->Added by PengYunQuan for Validity Cell Range Picker }; // ============================================================================ /** The tab page "Criteria" from the Validation dialog. */ -//<!--Modified by PengYunQuan for Validity Cell Range Picker -//class ScTPValidationValue : public SfxTabPage class ScTPValidationValue : public ScRefHandlerCaller, public SfxTabPage -//-->Modified by PengYunQuan for Validity Cell Range Picker { public: explicit ScTPValidationValue( Window* pParent, const SfxItemSet& rArgSet ); @@ -223,16 +207,10 @@ private: FixedText maFtValue; ListBox maLbValue; FixedText maFtMin; - //<!--Modified by PengYunQuan for Validity Cell Range Picker - //Edit maEdMin; - ScRefEdit maEdMin; - //-->Modified by PengYunQuan for Validity Cell Range Picker + formula::RefEdit maEdMin; MultiLineEdit maEdList; /// Entries for explicit list FixedText maFtMax; - //<!--Modified by PengYunQuan for Validity Cell Range Picker - //Edit maEdMax; - ScRefEdit maEdMax; - //-->Modified by PengYunQuan for Validity Cell Range Picker + formula::RefEdit maEdMax; FixedText maFtHint; /// Hint text for cell range validity. String maStrMin; @@ -241,33 +219,31 @@ private: String maStrRange; String maStrList; sal_Unicode mcFmlaSep; /// List separator in formulas. - //<!--Added by PengYunQuan for Validity Cell Range Picker + DECL_LINK( EditSetFocusHdl, Edit *); DECL_LINK( KillFocusHdl, Window *); void OnClick( Button *pBtn ); - ScRefEdit *m_pRefEdit; - class ScRefButtonEx:public ::ScRefButton + formula::RefEdit* m_pRefEdit; + class ScRefButtonEx:public ::formula::RefButton { void Click(); public: - ScRefButtonEx( Window* pParent, const ResId& rResId, ScRefEdit* pEdit = NULL, ScRefHandler *pRefHdlr = NULL ): ::ScRefButton( pParent, rResId, pEdit, pRefHdlr ){} + ScRefButtonEx( Window* pParent, const ResId& rResId, formula::RefEdit* pEdit = NULL, ScRefHandler *pRefHdlr = NULL ): ::formula::RefButton( pParent, rResId, pEdit, pRefHdlr ){} }m_btnRef; friend class ScRefButtonEx; void SetReferenceHdl( const ScRange& , ScDocument* ); void SetActiveHdl(); - void RefInputStartPreHdl( ScRefEdit* pEdit, ScRefButton* pButton ); + void RefInputStartPreHdl( formula::RefEdit* pEdit, formula::RefButton* pButton ); void RefInputDonePreHdl(); void RefInputDonePostHdl(); ScValidationDlg * GetValidationDlg(); - //TYPEINFO(); void TidyListBoxes(); public: USHORT GetAllowEntryPos(); String GetMinText(); void SetupRefDlg(); void RemoveRefDlg(); - //-->Added by PengYunQuan for Validity Cell Range Picker }; @@ -333,7 +309,6 @@ public: virtual void Reset ( const SfxItemSet& rArgSet ); }; -//<!--Added by PengYunQuan for Validity Cell Range Picker inline ScTabViewShell *ScValidationDlg::GetTabViewShell() { return m_pTabVwSh; @@ -343,7 +318,7 @@ inline ScValidationDlg * ScValidationDlg::Find1AliveObject( Window *pAncestor ) { return static_cast<ScValidationDlg *>( SC_MOD()->Find1RefWindow( SLOTID, pAncestor ) ); } -//-->Added by PengYunQuan for Validity Cell Range Picker + #endif // SC_VALIDATE_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/inc/viewfunc.hxx b/sc/source/ui/inc/viewfunc.hxx index f231e91d3dd6..57498f346269 100644 --- a/sc/source/ui/inc/viewfunc.hxx +++ b/sc/source/ui/inc/viewfunc.hxx @@ -272,7 +272,7 @@ public: BOOL DeleteTables(const SvShorts &TheTabs, BOOL bRecord = TRUE ); BOOL RenameTable( const String& rName, SCTAB nTabNr ); - void MoveTable( USHORT nDestDocNo, SCTAB nDestTab, BOOL bCopy ); + void MoveTable( USHORT nDestDocNo, SCTAB nDestTab, BOOL bCopy, const String* pNewTabName = NULL ); void ImportTables( ScDocShell* pSrcShell, SCTAB nCount, const SCTAB* pSrcTabs, BOOL bLink,SCTAB nTab); diff --git a/sc/source/ui/miscdlgs/acredlin.cxx b/sc/source/ui/miscdlgs/acredlin.cxx index ce6473c2b068..eb2f58d127dd 100644 --- a/sc/source/ui/miscdlgs/acredlin.cxx +++ b/sc/source/ui/miscdlgs/acredlin.cxx @@ -142,7 +142,6 @@ ScAcceptChgDlg::ScAcceptChgDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pP aStrEmpty ( ScResId( STR_EMPTY )) { FreeResource(); -// bScAcceptChgDlgIsDead=FALSE; bNoSelection=FALSE; bNeedsUpdate=FALSE; bIgnoreMsg=FALSE; @@ -202,7 +201,6 @@ ScAcceptChgDlg::ScAcceptChgDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pP } ScAcceptChgDlg::~ScAcceptChgDlg() { -// bScAcceptChgDlgIsDead=TRUE; ClearView(); ScChangeTrack* pChanges=pDoc->GetChangeTrack(); @@ -246,7 +244,7 @@ void ScAcceptChgDlg::ReInit(ScViewData* ptrViewData) } } -void __EXPORT ScAcceptChgDlg::Init() +void ScAcceptChgDlg::Init() { String aAreaStr; ScRange aRange; @@ -298,11 +296,11 @@ void __EXPORT ScAcceptChgDlg::Init() pTPFilter->CheckRange(aChangeViewSet.HasRange()); - ScRange* pRangeEntry=aChangeViewSet.GetTheRangeList().GetObject(0); aRangeList=aChangeViewSet.GetTheRangeList(); - if(pRangeEntry!=NULL) + if( !aChangeViewSet.GetTheRangeList().empty() ) { + const ScRange* pRangeEntry = aChangeViewSet.GetTheRangeList().front(); String aRefStr; pRangeEntry->Format( aRefStr, ABS_DREF3D, pDoc ); pTPFilter->SetRange(aRefStr); @@ -396,17 +394,13 @@ BOOL ScAcceptChgDlg::IsValidAction(const ScChangeAction* pScChangeAction) { if(pTPFilter->IsRange()) { - ScRange* pRangeEntry=aRangeList.First(); - - while(pRangeEntry!=NULL) - { - if(pRangeEntry->Intersects(aRef)) break; - pRangeEntry=aRangeList.Next(); - } - - if(pRangeEntry!=NULL) + for ( size_t i = 0, nRanges = aRangeList.size(); i < nRanges; ++i ) { - bFlag=TRUE; + ScRange* pRangeEntry = aRangeList[ i ]; + if (pRangeEntry->Intersects(aRef)) { + bFlag = TRUE; + break; + } } } else @@ -522,18 +516,15 @@ SvLBoxEntry* ScAcceptChgDlg::InsertChangeAction(const ScChangeAction* pScChangeA { if(pTPFilter->IsRange()) { - ScRange* pRangeEntry=aRangeList.First(); - - while(pRangeEntry!=NULL) + for ( size_t i = 0, nRanges = aRangeList.size(); i < nRanges; ++i ) { - if(pRangeEntry->Intersects(aRef)) break; - pRangeEntry=aRangeList.Next(); - } - //SC_CAS_VIRGIN,SC_CAS_ACCEPTED,SC_CAS_REJECTED - if(pRangeEntry!=NULL) - { - bHasFilterEntry=TRUE; - bFlag=TRUE; + ScRange* pRangeEntry = aRangeList[ i ]; + if( pRangeEntry->Intersects(aRef) ) + { + bHasFilterEntry=TRUE; + bFlag=TRUE; + break; + } } } else if(!bIsGenerated) @@ -592,18 +583,15 @@ SvLBoxEntry* ScAcceptChgDlg::InsertFilteredAction(const ScChangeAction* pScChang { if(pTPFilter->IsRange()) { - ScRange* pRangeEntry=aRangeList.First(); - - while(pRangeEntry!=NULL) + for ( size_t i = 0, nRanges = aRangeList.size(); i < nRanges; ++i ) { - if(pRangeEntry->Intersects(aRef)) break; - pRangeEntry=aRangeList.Next(); - } - //SC_CAS_VIRGIN,SC_CAS_ACCEPTED,SC_CAS_REJECTED - if(pRangeEntry!=NULL && - pScChangeAction->GetState()==eState) - { - bFlag=TRUE; + ScRange* pRangeEntry=aRangeList[ i ]; + if( pRangeEntry->Intersects(aRef) ) + { + if( pScChangeAction->GetState()==eState ) + bFlag=TRUE; + break; + } } } else if(pScChangeAction->GetState()==eState && !bIsGenerated) @@ -721,17 +709,14 @@ SvLBoxEntry* ScAcceptChgDlg::InsertChangeActionContent(const ScChangeActionConte { if(pTPFilter->IsRange()) { - ScRange* pRangeEntry=aRangeList.First(); - - while(pRangeEntry!=NULL) - { - if(pRangeEntry->Intersects(aRef)) break; - pRangeEntry=aRangeList.Next(); - } - //SC_CAS_VIRGIN,SC_CAS_ACCEPTED,SC_CAS_REJECTED - if(pRangeEntry!=NULL) + for ( size_t i = 0, nRanges = aRangeList.size(); i < nRanges; ++i ) { - bFlag=TRUE; + ScRange* pRangeEntry = aRangeList[ i ]; + if( pRangeEntry->Intersects(aRef) ) + { + bFlag=TRUE; + break; + } } } else if(!bIsGenerated) @@ -985,7 +970,6 @@ IMPL_LINK( ScAcceptChgDlg, RefHandle, SvxTPFilter*, EMPTYARG ) if(pWnd!=NULL) { -// bSimpleRefDlgStarted=TRUE; USHORT nAcceptId=ScAcceptChgDlgWrapper::GetChildWindowId(); pViewFrm->ShowChildWindow(nAcceptId,FALSE); pWnd->SetCloseHdl(LINK( this, ScAcceptChgDlg,RefInfoHandle)); @@ -1004,7 +988,6 @@ IMPL_LINK( ScAcceptChgDlg, RefInfoHandle, String*, pResult) { USHORT nId; -// bSimpleRefDlgStarted=FALSE; ScSimpleRefDlgWrapper::SetAutoReOpen(TRUE); SfxViewFrame* pViewFrm = pViewData->GetViewShell()->GetViewFrame(); @@ -1040,7 +1023,7 @@ IMPL_LINK( ScAcceptChgDlg, FilterHandle, SvxTPFilter*, pRef ) if(pRef!=NULL) { ClearView(); - aRangeList.Clear(); + aRangeList.RemoveAll(); aRangeList.Parse(pTPFilter->GetRange(),pDoc); UpdateView(); } @@ -1763,8 +1746,6 @@ void ScAcceptChgDlg::UpdateEntrys(ScChangeTrack* pChgTrack, ULONG nStartAction,U IMPL_LINK( ScAcceptChgDlg, ChgTrackModHdl, ScChangeTrack*, pChgTrack) { -// if(bScAcceptChgDlgIsDead) return 0; - ScChangeTrackMsgQueue& aMsgQueue= pChgTrack->GetMsgQueue(); ScChangeTrackMsgInfo* pTrackInfo=aMsgQueue.Get(); diff --git a/sc/source/ui/miscdlgs/acredlin.src b/sc/source/ui/miscdlgs/acredlin.src index 4baa9f3d388c..07ae0398134f 100644 --- a/sc/source/ui/miscdlgs/acredlin.src +++ b/sc/source/ui/miscdlgs/acredlin.src @@ -26,6 +26,7 @@ ************************************************************************/ #include "acredlin.hrc" + ModelessDialog RID_SCDLG_CHANGES { OutputSize = TRUE ; @@ -140,22 +141,23 @@ ModelessDialog RID_SCDLG_CHANGES }; Bitmap BMP_STR_CLOSE { - File = "dir-clos.bmp" ; + File = "dir-clos.png" ; }; Bitmap BMP_STR_OPEN { - File = "dir-open.bmp" ; + File = "dir-open.png" ; }; Bitmap BMP_STR_END { - File = "basobj2.bmp" ; + File = "basobj2.png" ; }; Bitmap BMP_STR_ERROR { - File = "basbrk.bmp" ; + File = "basbrk.png" ; }; Text [ en-US ] = "Accept or Reject Changes" ; }; + Menu RID_POPUP_CHANGES { ItemList = @@ -215,44 +217,3 @@ Menu RID_POPUP_CHANGES }; }; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/miscdlgs/anyrefdg.cxx b/sc/source/ui/miscdlgs/anyrefdg.cxx index 0c46284c77d7..3bff0199efc3 100644 --- a/sc/source/ui/miscdlgs/anyrefdg.cxx +++ b/sc/source/ui/miscdlgs/anyrefdg.cxx @@ -131,7 +131,7 @@ void ScFormulaReferenceHelper::enableInput( BOOL bEnable ) // ----------------------------------------------------------------------------- void ScFormulaReferenceHelper::ShowSimpleReference( const XubString& rStr ) { - if( /*!pRefEdit &&*/ bEnableColorRef ) + if( bEnableColorRef ) { bHighLightRef=TRUE; ScViewData* pViewData=ScDocShell::GetViewData(); @@ -147,16 +147,12 @@ void ScFormulaReferenceHelper::ShowSimpleReference( const XubString& rStr ) if( ParseWithNames( aRangeList, rStr, pDoc ) ) { - ScRange* pRangeEntry = aRangeList.First(); - - USHORT nIndex=0; - while(pRangeEntry != NULL) + for ( size_t i = 0, nRanges = aRangeList.size(); i < nRanges; ++i ) { - ColorData aColName = ScRangeFindList::GetColorName(nIndex++); - pTabViewShell->AddHighlightRange(*pRangeEntry, aColName); - - pRangeEntry = aRangeList.Next(); - } + ScRange* pRangeEntry = aRangeList[ i ]; + ColorData aColName = ScRangeFindList::GetColorName( i ); + pTabViewShell->AddHighlightRange( *pRangeEntry, aColName ); + } } } } @@ -304,8 +300,6 @@ void ScFormulaReferenceHelper::ReleaseFocus( formula::RefEdit* pEdit, formula::R if( !pRefEdit && pEdit ) { m_pDlg->RefInputStart( pEdit, pButton ); -// if( pRefEdit ) -// pRefEdit->SilentGrabFocus(); } ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell(); @@ -319,9 +313,9 @@ void ScFormulaReferenceHelper::ReleaseFocus( formula::RefEdit* pEdit, formula::R ScRangeList aRangeList; if( ParseWithNames( aRangeList, pRefEdit->GetText(), pDoc ) ) { - const ScRange* pRange = aRangeList.GetObject( 0 ); - if( pRange ) + if ( !aRangeList.empty() ) { + const ScRange* pRange = aRangeList.front(); pViewShell->SetTabNo( pRange->aStart.Tab() ); pViewShell->MoveCursorAbs( pRange->aStart.Col(), pRange->aStart.Row(), SC_FOLLOW_JUMP, FALSE, FALSE ); @@ -352,7 +346,7 @@ void ScFormulaReferenceHelper::Init() pRefComp->SetCompileForFAP(TRUE); nRefTab = nTab; - } // if ( pViewData ) + } } // ----------------------------------------------------------------------------- IMPL_LINK( ScFormulaReferenceHelper, AccelSelectHdl, Accelerator *, pSelAccel ) @@ -374,10 +368,7 @@ IMPL_LINK( ScFormulaReferenceHelper, AccelSelectHdl, Accelerator *, pSelAccel ) //---------------------------------------------------------------------------- void ScFormulaReferenceHelper::RefInputDone( BOOL bForced ) { - //<!--Modified by PengYunQuan for Validity Cell Range Picker - //if (pRefEdit && (bForced || !pRefBtn)) - if ( CanInputDone( bForced ) )//if (pRefEdit && (bForced || !pRefBtn)) - //-->Modified by PengYunQuan for Validity Cell Range Picker + if ( CanInputDone( bForced ) ) { if (bAccInserted) // Accelerator wieder abschalten { @@ -488,18 +479,15 @@ void ScFormulaReferenceHelper::RefInputStart( formula::RefEdit* pEdit, formula:: // Fenstertitel anpassen m_pWindow->SetText( MnemonicGenerator::EraseAllMnemonicChars( sNewDialogText ) ); -// if ( pButton ) // ueber den Button: Enter und Escape abfangen -// { - if (!pAccel.get()) - { - pAccel.reset( new Accelerator ); - pAccel->InsertItem( 1, KeyCode( KEY_RETURN ) ); - pAccel->InsertItem( 2, KeyCode( KEY_ESCAPE ) ); - pAccel->SetSelectHdl( LINK( this, ScFormulaReferenceHelper, AccelSelectHdl ) ); - } - Application::InsertAccel( pAccel.get() ); - bAccInserted = TRUE; -// } + if (!pAccel.get()) + { + pAccel.reset( new Accelerator ); + pAccel->InsertItem( 1, KeyCode( KEY_RETURN ) ); + pAccel->InsertItem( 2, KeyCode( KEY_ESCAPE ) ); + pAccel->SetSelectHdl( LINK( this, ScFormulaReferenceHelper, AccelSelectHdl ) ); + } + Application::InsertAccel( pAccel.get() ); + bAccInserted = TRUE; } } // ----------------------------------------------------------------------------- @@ -706,7 +694,6 @@ bool ScRefHandler::EnterRefMode() if( m_bInRefMode ) return false; SC_MOD()->InputEnterHandler(); -// ScTabViewShell* pScViewShell = ScTabViewShell::GetActiveViewShell(); ScTabViewShell* pScViewShell = NULL; @@ -748,8 +735,6 @@ bool ScRefHandler::EnterRefMode() m_aHelper.Init(); m_aHelper.SetDispatcherLock( TRUE ); - //@Test - //SFX_APPWINDOW->Disable(TRUE); //@BugID 54702 return m_bInRefMode = true; } @@ -775,7 +760,6 @@ bool ScRefHandler::LeaveRefMode() if( pScViewShell ) pScViewShell->UpdateInputHandler(TRUE); - //SFX_APPWINDOW->Enable(TRUE,TRUE); lcl_InvalidateWindows(); m_bInRefMode = false; @@ -784,15 +768,6 @@ bool ScRefHandler::LeaveRefMode() //---------------------------------------------------------------------------- -//SfxBindings& ScRefHandler::GetBindings() -//{ -// //! SfxModelessDialog should allow access to pBindings pointer -// -// return *pMyBindings; -//} - -//---------------------------------------------------------------------------- - void ScRefHandler::SwitchToDocument() { ScTabViewShell* pCurrent = ScTabViewShell::GetActiveViewShell(); @@ -836,14 +811,14 @@ BOOL ScRefHandler::IsDocAllowed(SfxObjectShell* pDocSh) const // pDocSh may be //---------------------------------------------------------------------------- -BOOL __EXPORT ScRefHandler::IsRefInputMode() const +BOOL ScRefHandler::IsRefInputMode() const { return m_rWindow.IsVisible(); // nur wer sichtbar ist kann auch Referenzen bekommen } //---------------------------------------------------------------------------- -BOOL __EXPORT ScRefHandler::DoClose( USHORT nId ) +BOOL ScRefHandler::DoClose( USHORT nId ) { m_aHelper.DoClose(nId); return TRUE; @@ -870,7 +845,7 @@ void ScRefHandler::AddRefEntry() //---------------------------------------------------------------------------- -BOOL __EXPORT ScRefHandler::IsTableLocked() const +BOOL ScRefHandler::IsTableLocked() const { // per Default kann bei Referenzeingabe auch die Tabelle umgeschaltet werden @@ -895,38 +870,6 @@ void ScRefHandler::ToggleCollapsed( formula::RefEdit* pEdit, formula::RefButton* m_aHelper.ToggleCollapsed( pEdit, pButton ); } -//The two following function is commentted out by PengYunQuan for Validity Cell Range Picker -//long ScAnyRefDlg::PreNotify( NotifyEvent& rNEvt ) -//{ -// USHORT nSwitch=rNEvt.GetType(); -// if(nSwitch==EVENT_GETFOCUS) -// { -// pActiveWin=rNEvt.GetWindow(); -// } -// return SfxModelessDialog::PreNotify(rNEvt); -//} -// -//void ScAnyRefDlg::StateChanged( StateChangedType nStateChange ) -//{ -// SfxModelessDialog::StateChanged( nStateChange ); -// -// if(nStateChange == STATE_CHANGE_VISIBLE) -// { -// if(IsVisible()) -// { -// m_aHelper.enableInput( FALSE ); -// m_aHelper.EnableSpreadsheets(); -// m_aHelper.SetDispatcherLock( TRUE ); -// aTimer.Start(); -// } -// else -// { -// m_aHelper.enableInput( TRUE ); -// m_aHelper.SetDispatcherLock( FALSE ); //! here and in DoClose ? -// } -// } -//} - #if defined( _MSC_VER ) #define INTRODUCE_TEMPLATE #else diff --git a/sc/source/ui/miscdlgs/autofmt.cxx b/sc/source/ui/miscdlgs/autofmt.cxx index 18013a089306..b3eff6dde692 100644 --- a/sc/source/ui/miscdlgs/autofmt.cxx +++ b/sc/source/ui/miscdlgs/autofmt.cxx @@ -529,9 +529,6 @@ void ScAutoFmtPreview::NotifyChange( ScAutoFormatData* pNewData ) void ScAutoFmtPreview::DoPaint( const Rectangle& /* rRect */ ) { sal_uInt32 nOldDrawMode = aVD.GetDrawMode(); - // #105733# SvtAccessibilityOptions::GetIsForBorders is no longer used (always assumed TRUE) - if( GetSettings().GetStyleSettings().GetHighContrastMode() ) - aVD.SetDrawMode( DRAWMODE_SETTINGSLINE | DRAWMODE_SETTINGSFILL | DRAWMODE_SETTINGSTEXT | DRAWMODE_SETTINGSGRADIENT ); Size aWndSize( GetSizePixel() ); Font aFont( aVD.GetFont() ); diff --git a/sc/source/ui/miscdlgs/conflictsdlg.cxx b/sc/source/ui/miscdlgs/conflictsdlg.cxx index de40dd9d1868..f7857232bd27 100644 --- a/sc/source/ui/miscdlgs/conflictsdlg.cxx +++ b/sc/source/ui/miscdlgs/conflictsdlg.cxx @@ -132,7 +132,7 @@ void ScConflictsListHelper::Transform_Impl( ScChangeActionList& rActionList, ScC if ( aItrMap != pMergeMap->end() ) { *aItr = aItrMap->second; - aItr++; + ++aItr; } else { @@ -344,25 +344,6 @@ void ScConflictsResolver::HandleAction( ScChangeAction* pAction, bool bIsSharedA } } } - else if ( eConflictAction == SC_CONFLICT_ACTION_KEEP_OTHER ) - { - if ( pAction->GetType() == SC_CAT_CONTENT ) - { - if ( bHandleContentAction ) - { - // do nothing - //mpTrack->SelectContent( pAction ); - } - } - else - { - if ( bHandleNonContentAction ) - { - // do nothing - //mpTrack->Accept( pAction ); - } - } - } } } else diff --git a/sc/source/ui/miscdlgs/conflictsdlg.src b/sc/source/ui/miscdlgs/conflictsdlg.src index 1facf85da95b..2e7bb6b93503 100644 --- a/sc/source/ui/miscdlgs/conflictsdlg.src +++ b/sc/source/ui/miscdlgs/conflictsdlg.src @@ -106,4 +106,3 @@ ModalDialog RID_SCDLG_CONFLICTS Text [ en-US ] = "Unknown User" ; }; }; - diff --git a/sc/source/ui/miscdlgs/crdlg.cxx b/sc/source/ui/miscdlgs/crdlg.cxx index 5100474274df..8692c8be0b87 100644 --- a/sc/source/ui/miscdlgs/crdlg.cxx +++ b/sc/source/ui/miscdlgs/crdlg.cxx @@ -71,7 +71,7 @@ ScColOrRowDlg::ScColOrRowDlg( Window* pParent, //------------------------------------------------------------------------ -__EXPORT ScColOrRowDlg::~ScColOrRowDlg() +ScColOrRowDlg::~ScColOrRowDlg() { } diff --git a/sc/source/ui/miscdlgs/crnrdlg.cxx b/sc/source/ui/miscdlgs/crnrdlg.cxx index 7afec7c603b4..73f65e48e90f 100644 --- a/sc/source/ui/miscdlgs/crnrdlg.cxx +++ b/sc/source/ui/miscdlgs/crnrdlg.cxx @@ -63,7 +63,7 @@ const ULONG nEntryDataDelim = 2; /************************************************************************* -#* Member: ScColRowNameRangesDlg Datum:04.09.97 +#* Member: ScColRowNameRangesDlg #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -87,7 +87,7 @@ ScColRowNameRangesDlg::ScColRowNameRangesDlg( SfxBindings* pB, ScViewData* ptrViewData ) : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_COLROWNAMERANGES ), - // + aFlAssign ( this, ScResId( FL_ASSIGN ) ), aLbRange ( this, ScResId( LB_RANGE ) ), @@ -119,7 +119,7 @@ ScColRowNameRangesDlg::ScColRowNameRangesDlg( SfxBindings* pB, /************************************************************************* -#* Member: ~ScColRowNameRangesDlg Datum:04.09.97 +#* Member: ~ScColRowNameRangesDlg #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -132,13 +132,13 @@ ScColRowNameRangesDlg::ScColRowNameRangesDlg( SfxBindings* pB, #* #************************************************************************/ -__EXPORT ScColRowNameRangesDlg::~ScColRowNameRangesDlg() +ScColRowNameRangesDlg::~ScColRowNameRangesDlg() { } /************************************************************************* -#* Member: Init Datum:04.09.97 +#* Member: Init #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -155,13 +155,6 @@ __EXPORT ScColRowNameRangesDlg::~ScColRowNameRangesDlg() void ScColRowNameRangesDlg::Init() { - SCCOL nStartCol = 0; - SCROW nStartRow = 0; - SCTAB nStartTab = 0; - SCCOL nEndCol = 0; - SCROW nEndRow = 0; - SCTAB nEndTab = 0; - aBtnOk.SetClickHdl ( LINK( this, ScColRowNameRangesDlg, OkBtnHdl ) ); aBtnCancel.SetClickHdl ( LINK( this, ScColRowNameRangesDlg, CancelBtnHdl ) ); aBtnAdd.SetClickHdl ( LINK( this, ScColRowNameRangesDlg, AddBtnHdl ) ); @@ -190,6 +183,12 @@ void ScColRowNameRangesDlg::Init() if ( pViewData && pDoc ) { + SCCOL nStartCol = 0; + SCROW nStartRow = 0; + SCTAB nStartTab = 0; + SCCOL nEndCol = 0; + SCROW nEndRow = 0; + SCTAB nEndTab = 0; pViewData->GetSimpleArea( nStartCol, nStartRow, nStartTab, nEndCol, nEndRow, nEndTab ); SetColRowData( ScRange( ScAddress( nStartCol, nStartRow, nStartTab ), @@ -209,15 +208,13 @@ void ScColRowNameRangesDlg::Init() aEdAssign.Enable(); aEdAssign.GrabFocus(); aRbAssign.Enable(); - //@BugID 54702 Enablen/Disablen nur noch in Basisklasse - //SFX_APPWINDOW->Enable(); // Ref-Feld hat Focus Range1SelectHdl( 0 ); } /************************************************************************* -#* Member: SetColRowData Datum:04.09.97 +#* Member: SetColRowData #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -318,7 +315,7 @@ void ScColRowNameRangesDlg::SetColRowData( const ScRange& rLabelRange,BOOL bRef) /************************************************************************* -#* Member: AdjustColRowData Datum:04.09.97 +#* Member: AdjustColRowData #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -394,7 +391,7 @@ void ScColRowNameRangesDlg::AdjustColRowData( const ScRange& rDataRange,BOOL bRe /************************************************************************* -#* Member: SetReference Datum:04.09.97 +#* Member: SetReference #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -431,7 +428,7 @@ void ScColRowNameRangesDlg::SetReference( const ScRange& rRef, ScDocument* /* pD /************************************************************************* -#* Member: Close Datum:04.09.97 +#* Member: Close #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -444,14 +441,14 @@ void ScColRowNameRangesDlg::SetReference( const ScRange& rRef, ScDocument* /* pD #* #************************************************************************/ -BOOL __EXPORT ScColRowNameRangesDlg::Close() +BOOL ScColRowNameRangesDlg::Close() { return DoClose( ScColRowNameRangesDlgWrapper::GetChildWindowId() ); } /************************************************************************* -#* Member: SetActive Datum:04.09.97 +#* Member: SetActive #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -485,7 +482,7 @@ void ScColRowNameRangesDlg::SetActive() /************************************************************************* -#* Member: UpdateNames Datum:04.09.97 +#* Member: UpdateNames #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -506,10 +503,10 @@ void ScColRowNameRangesDlg::UpdateNames() aRangeMap.clear(); aEdAssign.SetText( EMPTY_STRING ); - ULONG nCount, j; + size_t nCount, j; USHORT nPos; //@008 Hilfsvariable q eingefuegt - SCCOL nCol1; //@008 04.09.97 + SCCOL nCol1; SCROW nRow1; //Erweiterung fuer Bereichsnamen SCTAB nTab1; SCCOL nCol2; @@ -526,7 +523,7 @@ void ScColRowNameRangesDlg::UpdateNames() aString += strDelim; nPos = aLbRange.InsertEntry( aString ); aLbRange.SetEntryData( nPos, (void*)nEntryDataDelim ); - if ( (nCount = xColNameRanges->Count()) > 0 ) + if ( (nCount = xColNameRanges->size()) > 0 ) { ScRangePair** ppSortArray = xColNameRanges->CreateNameSortedArray( nCount, pDoc ); @@ -573,7 +570,7 @@ void ScColRowNameRangesDlg::UpdateNames() aString += strDelim; nPos = aLbRange.InsertEntry( aString ); aLbRange.SetEntryData( nPos, (void*)nEntryDataDelim ); - if ( (nCount = xRowNameRanges->Count()) > 0 ) + if ( (nCount = xRowNameRanges->size()) > 0 ) { ScRangePair** ppSortArray = xRowNameRanges->CreateNameSortedArray( nCount, pDoc ); @@ -620,7 +617,7 @@ void ScColRowNameRangesDlg::UpdateNames() /************************************************************************* -#* Member: UpdateRangeData Datum:04.09.97 +#* Member: UpdateRangeData #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -671,7 +668,7 @@ void ScColRowNameRangesDlg::UpdateRangeData( const ScRange& rRange, BOOL bColNam /************************************************************************* -#* Member: IsRefInputMode Datum:04.09.97 +#* Member: IsRefInputMode #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -695,7 +692,7 @@ BOOL ScColRowNameRangesDlg::IsRefInputMode() const // ======== /************************************************************************* -#* Handler: OkBtnHdl Datum:04.09.97 +#* Handler: OkBtnHdl #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -729,7 +726,7 @@ IMPL_LINK( ScColRowNameRangesDlg, OkBtnHdl, void *, EMPTYARG ) /************************************************************************* -#* Handler: CancelBtnHdl Datum:04.09.97 +#* Handler: CancelBtnHdl #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -751,7 +748,7 @@ IMPL_LINK_INLINE_END( ScColRowNameRangesDlg, CancelBtnHdl, void *, EMPTYARG ) /************************************************************************* -#* Handler: AddBtnHdl Datum:04.09.97 +#* Handler: AddBtnHdl #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -824,7 +821,7 @@ IMPL_LINK( ScColRowNameRangesDlg, AddBtnHdl, void *, EMPTYARG ) /************************************************************************* -#* Handler: RemoveBtnHdl Datum:04.09.97 +#* Handler: RemoveBtnHdl #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -901,7 +898,7 @@ IMPL_LINK( ScColRowNameRangesDlg, RemoveBtnHdl, void *, EMPTYARG ) /************************************************************************* -#* Handler: Range1SelectHdl Datum:04.09.97 +#* Handler: Range1SelectHdl #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -982,14 +979,12 @@ IMPL_LINK( ScColRowNameRangesDlg, Range1SelectHdl, void *, EMPTYARG ) aEdAssign.Enable(); aRbAssign.Enable(); - //@BugID 54702 Enablen/Disablen nur noch in Basisklasse - //SFX_APPWINDOW->Enable(); return 0; } /************************************************************************* -#* Handler: Range1DataModifyHdl Datum:04.09.97 +#* Handler: Range1DataModifyHdl #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -1038,7 +1033,7 @@ IMPL_LINK( ScColRowNameRangesDlg, Range1DataModifyHdl, void *, EMPTYARG ) /************************************************************************* -#* Handler: Range2DataModifyHdl Datum:04.09.97 +#* Handler: Range2DataModifyHdl #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -1075,7 +1070,7 @@ IMPL_LINK( ScColRowNameRangesDlg, Range2DataModifyHdl, void *, EMPTYARG ) /************************************************************************* -#* Handler: ColClickHdl Datum:04.09.97 +#* Handler: ColClickHdl #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg @@ -1113,7 +1108,7 @@ IMPL_LINK( ScColRowNameRangesDlg, ColClickHdl, void *, EMPTYARG ) /************************************************************************* -#* Handler: RowClickHdl Datum:04.09.97 +#* Handler: RowClickHdl #*------------------------------------------------------------------------ #* #* Klasse: ScColRowNameRangesDlg diff --git a/sc/source/ui/miscdlgs/delcldlg.cxx b/sc/source/ui/miscdlgs/delcldlg.cxx index 8d20d2ee50e6..2537db56ed42 100644 --- a/sc/source/ui/miscdlgs/delcldlg.cxx +++ b/sc/source/ui/miscdlgs/delcldlg.cxx @@ -113,7 +113,7 @@ DelCellCmd ScDeleteCellDlg::GetDelCellCmd() const return nReturn; } -__EXPORT ScDeleteCellDlg::~ScDeleteCellDlg() +ScDeleteCellDlg::~ScDeleteCellDlg() { } diff --git a/sc/source/ui/miscdlgs/delcodlg.cxx b/sc/source/ui/miscdlgs/delcodlg.cxx index e8c7dde31443..7ce7d492aa3a 100644 --- a/sc/source/ui/miscdlgs/delcodlg.cxx +++ b/sc/source/ui/miscdlgs/delcodlg.cxx @@ -173,7 +173,7 @@ IMPL_LINK_INLINE_START( ScDeleteContentsDlg, DelAllHdl, void *, EMPTYARG ) } IMPL_LINK_INLINE_END( ScDeleteContentsDlg, DelAllHdl, void *, EMPTYARG ) -__EXPORT ScDeleteContentsDlg::~ScDeleteContentsDlg() +ScDeleteContentsDlg::~ScDeleteContentsDlg() { } diff --git a/sc/source/ui/miscdlgs/filldlg.cxx b/sc/source/ui/miscdlgs/filldlg.cxx index 46af2992e4a5..2b544a1c5d7c 100644 --- a/sc/source/ui/miscdlgs/filldlg.cxx +++ b/sc/source/ui/miscdlgs/filldlg.cxx @@ -110,7 +110,7 @@ ScFillSeriesDlg::ScFillSeriesDlg( Window* pParent, //---------------------------------------------------------------------------- -__EXPORT ScFillSeriesDlg::~ScFillSeriesDlg() +ScFillSeriesDlg::~ScFillSeriesDlg() { } @@ -231,10 +231,9 @@ void ScFillSeriesDlg::Init( USHORT nPossDir ) //---------------------------------------------------------------------------- -BOOL __EXPORT ScFillSeriesDlg::CheckStartVal() +BOOL ScFillSeriesDlg::CheckStartVal() { BOOL bValOk = FALSE; - sal_uInt32 nKey = 0; String aStr( aEdStartVal.GetText() ); if ( aStr.Len() == 0 || aBtnAutoFill.IsChecked()) @@ -243,15 +242,17 @@ BOOL __EXPORT ScFillSeriesDlg::CheckStartVal() bValOk = TRUE; } else + { + sal_uInt32 nKey = 0; bValOk = rDoc.GetFormatTable()->IsNumberFormat( aStr, nKey, fStartVal ); - + } return bValOk; } //---------------------------------------------------------------------------- -BOOL __EXPORT ScFillSeriesDlg::CheckIncrementVal() +BOOL ScFillSeriesDlg::CheckIncrementVal() { sal_uInt32 nKey = 0; String aStr( aEdIncrement.GetText() ); @@ -262,10 +263,9 @@ BOOL __EXPORT ScFillSeriesDlg::CheckIncrementVal() //---------------------------------------------------------------------------- -BOOL __EXPORT ScFillSeriesDlg::CheckEndVal() +BOOL ScFillSeriesDlg::CheckEndVal() { BOOL bValOk = FALSE; - sal_uInt32 nKey = 0; String aStr( aEdEndVal.GetText() ); if ( aStr.Len() == 0 ) @@ -274,8 +274,10 @@ BOOL __EXPORT ScFillSeriesDlg::CheckEndVal() bValOk = TRUE; } else + { + sal_uInt32 nKey = 0; bValOk = rDoc.GetFormatTable()->IsNumberFormat( aStr, nKey, fEndVal ); - + } return bValOk; } diff --git a/sc/source/ui/miscdlgs/groupdlg.cxx b/sc/source/ui/miscdlgs/groupdlg.cxx index d771e225ffdb..593a63934e03 100644 --- a/sc/source/ui/miscdlgs/groupdlg.cxx +++ b/sc/source/ui/miscdlgs/groupdlg.cxx @@ -76,7 +76,7 @@ BOOL ScGroupDlg::GetColsChecked() const //------------------------------------------------------------------------ -__EXPORT ScGroupDlg::~ScGroupDlg() +ScGroupDlg::~ScGroupDlg() { } diff --git a/sc/source/ui/miscdlgs/highred.cxx b/sc/source/ui/miscdlgs/highred.cxx index d2c2f2c7cf84..c44833102bb7 100644 --- a/sc/source/ui/miscdlgs/highred.cxx +++ b/sc/source/ui/miscdlgs/highred.cxx @@ -106,7 +106,6 @@ ScHighlightChgDlg::ScHighlightChgDlg( SfxBindings* pB, SfxChildWindow* pCW, Wind aFilterCtr.HideRange(FALSE); aFilterCtr.Show(); SetDispatcherLock( TRUE ); - //SFX_APPWINDOW->Disable(FALSE); Init(); @@ -114,10 +113,9 @@ ScHighlightChgDlg::ScHighlightChgDlg( SfxBindings* pB, SfxChildWindow* pCW, Wind ScHighlightChgDlg::~ScHighlightChgDlg() { SetDispatcherLock( FALSE ); - //SFX_APPWINDOW->Enable(); } -void __EXPORT ScHighlightChgDlg::Init() +void ScHighlightChgDlg::Init() { String aAreaStr; ScRange aRange; @@ -164,12 +162,11 @@ void __EXPORT ScHighlightChgDlg::Init() } aFilterCtr.CheckRange(aChangeViewSet.HasRange()); - ScRange* pRangeEntry=aChangeViewSet.GetTheRangeList().GetObject(0); - - if(pRangeEntry!=NULL) + if ( !aChangeViewSet.GetTheRangeList().empty() ) { String aRefStr; + const ScRange* pRangeEntry = aChangeViewSet.GetTheRangeList().front(); pRangeEntry->Format( aRefStr, ABS_DREF3D, pDoc ); aFilterCtr.SetRange(aRefStr); } @@ -195,7 +192,7 @@ void ScHighlightChgDlg::SetReference( const ScRange& rRef, ScDocument* pDocP ) } //---------------------------------------------------------------------------- -BOOL __EXPORT ScHighlightChgDlg::Close() +BOOL ScHighlightChgDlg::Close() { return DoClose( ScHighlightChgDlgWrapper::GetChildWindowId() ); } @@ -214,17 +211,6 @@ void ScHighlightChgDlg::RefInputDone( BOOL bForced) void ScHighlightChgDlg::SetActive() { - /* - if(pTPFilter!=NULL) - { - aAcceptChgCtr.GetFilterPage()->SetFocusToRange(); - aEdAssign.Hide(); - aRbAssign.Hide(); - SFX_APPWINDOW->Enable(); - SetDispatcherLock( FALSE ); - } - //RefInputDone(); - */ } BOOL ScHighlightChgDlg::IsRefInputMode() const @@ -257,7 +243,6 @@ IMPL_LINK( ScHighlightChgDlg, RefHandle, SvxTPFilter*, pRef ) if(pRef!=NULL) { SetDispatcherLock( TRUE ); - //SFX_APPWINDOW->Disable(FALSE); aEdAssign.Show(); aRbAssign.Show(); aEdAssign.SetText(aFilterCtr.GetRange()); diff --git a/sc/source/ui/miscdlgs/highred.src b/sc/source/ui/miscdlgs/highred.src index a244a3e2a44e..259afee9a5be 100644 --- a/sc/source/ui/miscdlgs/highred.src +++ b/sc/source/ui/miscdlgs/highred.src @@ -100,34 +100,3 @@ ModelessDialog RID_SCDLG_HIGHLIGHT_CHANGES }; Text [ en-US ] = "Show Changes" ; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/miscdlgs/inscldlg.cxx b/sc/source/ui/miscdlgs/inscldlg.cxx index f09513960ae4..32cba4161088 100644 --- a/sc/source/ui/miscdlgs/inscldlg.cxx +++ b/sc/source/ui/miscdlgs/inscldlg.cxx @@ -113,7 +113,7 @@ InsCellCmd ScInsertCellDlg::GetInsCellCmd() const return nReturn; } -__EXPORT ScInsertCellDlg::~ScInsertCellDlg() +ScInsertCellDlg::~ScInsertCellDlg() { } diff --git a/sc/source/ui/miscdlgs/inscodlg.cxx b/sc/source/ui/miscdlgs/inscodlg.cxx index 63d55ac6f41e..a9eea25d9c58 100644 --- a/sc/source/ui/miscdlgs/inscodlg.cxx +++ b/sc/source/ui/miscdlgs/inscodlg.cxx @@ -333,7 +333,7 @@ IMPL_LINK( ScInsertContentsDlg, LinkBtnHdl, void*, EMPTYARG ) return 0; } -__EXPORT ScInsertContentsDlg::~ScInsertContentsDlg() +ScInsertContentsDlg::~ScInsertContentsDlg() { ScInsertContentsDlg::nPreviousChecks2 = 0; if(aBtnSkipEmptyCells.IsChecked()) diff --git a/sc/source/ui/miscdlgs/instbdlg.cxx b/sc/source/ui/miscdlgs/instbdlg.cxx index d3a5cbe4f0dd..132ba4282e6a 100644 --- a/sc/source/ui/miscdlgs/instbdlg.cxx +++ b/sc/source/ui/miscdlgs/instbdlg.cxx @@ -105,7 +105,7 @@ ScInsertTableDlg::ScInsertTableDlg( Window* pParent, ScViewData& rData, SCTAB nT //------------------------------------------------------------------------ -__EXPORT ScInsertTableDlg::~ScInsertTableDlg() +ScInsertTableDlg::~ScInsertTableDlg() { if (pDocShTables) pDocShTables->DoClose(); @@ -170,7 +170,7 @@ void ScInsertTableDlg::Init_Impl( bool bFromFile ) #define ModalDialog Dialog #endif /* ENABLE_LAYOUT */ -short __EXPORT ScInsertTableDlg::Execute() +short ScInsertTableDlg::Execute() { // set Parent of DocumentInserter and Doc-Manager Window* pOldDefParent = Application::GetDefDialogParent(); diff --git a/sc/source/ui/miscdlgs/instbdlg.src b/sc/source/ui/miscdlgs/instbdlg.src index 6f64c0de1d62..d8432c0b505e 100644 --- a/sc/source/ui/miscdlgs/instbdlg.src +++ b/sc/source/ui/miscdlgs/instbdlg.src @@ -146,39 +146,3 @@ ModalDialog RID_SCDLG_INSERT_TABLE Size = MAP_APPFONT ( 192 , 8 ) ; }; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/miscdlgs/lbseldlg.cxx b/sc/source/ui/miscdlgs/lbseldlg.cxx index f340cab4127c..73681eb998f8 100644 --- a/sc/source/ui/miscdlgs/lbseldlg.cxx +++ b/sc/source/ui/miscdlgs/lbseldlg.cxx @@ -94,7 +94,7 @@ IMPL_LINK_INLINE_END( ScSelEntryDlg, DblClkHdl, void *, EMPTYARG ) //------------------------------------------------------------------------ -__EXPORT ScSelEntryDlg::~ScSelEntryDlg() +ScSelEntryDlg::~ScSelEntryDlg() { } diff --git a/sc/source/ui/miscdlgs/linkarea.cxx b/sc/source/ui/miscdlgs/linkarea.cxx index 26bc8cc56dad..ce23e6cb1728 100644 --- a/sc/source/ui/miscdlgs/linkarea.cxx +++ b/sc/source/ui/miscdlgs/linkarea.cxx @@ -132,7 +132,7 @@ IMPL_LINK( ScLinkedAreaDlg, FileHdl, ComboBox*, EMPTYARG ) String aFilter; String aOptions; // get filter name by looking at the file content (bWithContent = TRUE) - // Break operation if any error occured inside. + // Break operation if any error occurred inside. if (!ScDocumentLoader::GetFilterName( aEntered, aFilter, aOptions, TRUE, TRUE )) return 0; @@ -263,7 +263,6 @@ IMPL_LINK( ScLinkedAreaDlg, DialogClosedHdl, sfx2::FileDialogHelper*, _pFileDlg if ( !pSourceShell->GetError() ) // only errors { - //aCbUrl.SetText( pSourceShell->GetTitle( SFX_TITLE_FULLNAME ) ); aCbUrl.SetText( pMed->GetName() ); } else diff --git a/sc/source/ui/miscdlgs/makefile.mk b/sc/source/ui/miscdlgs/makefile.mk index 115fc3aebe57..403c98237f81 100644 --- a/sc/source/ui/miscdlgs/makefile.mk +++ b/sc/source/ui/miscdlgs/makefile.mk @@ -39,54 +39,46 @@ LIBTARGET=no # --- Files -------------------------------------------------------- SLOFILES = \ + $(EXCEPTIONSFILES) + +EXCEPTIONSFILES = \ + $(SLO)$/acredlin.obj \ + $(SLO)$/anyrefdg.obj \ + $(SLO)$/autofmt.obj \ + $(SLO)$/conflictsdlg.obj \ + $(SLO)$/crdlg.obj \ + $(SLO)$/crnrdlg.obj \ $(SLO)$/datafdlg.obj \ $(SLO)$/delcldlg.obj \ - $(SLO)$/inscldlg.obj \ $(SLO)$/delcodlg.obj \ + $(SLO)$/filldlg.obj \ + $(SLO)$/groupdlg.obj \ + $(SLO)$/highred.obj \ + $(SLO)$/inscldlg.obj \ $(SLO)$/inscodlg.obj \ - $(SLO)$/strindlg.obj \ - $(SLO)$/tabbgcolordlg.obj \ - $(SLO)$/mtrindlg.obj \ + $(SLO)$/instbdlg.obj \ $(SLO)$/lbseldlg.obj \ - $(SLO)$/filldlg.obj \ - $(SLO)$/autofmt.obj \ - $(SLO)$/solvrdlg.obj \ - $(SLO)$/optsolver.obj \ - $(SLO)$/solveroptions.obj \ - $(SLO)$/solverutil.obj \ + $(SLO)$/linkarea.obj \ + $(SLO)$/mtrindlg.obj \ $(SLO)$/mvtabdlg.obj \ - $(SLO)$/groupdlg.obj \ - $(SLO)$/tabopdlg.obj \ - $(SLO)$/crdlg.obj \ $(SLO)$/namecrea.obj \ $(SLO)$/namepast.obj \ - $(SLO)$/textdlgs.obj \ - $(SLO)$/anyrefdg.obj \ - $(SLO)$/crnrdlg.obj \ - $(SLO)$/shtabdlg.obj \ - $(SLO)$/instbdlg.obj \ - $(SLO)$/acredlin.obj \ - $(SLO)$/highred.obj \ - $(SLO)$/simpref.obj \ + $(SLO)$/optsolver.obj \ + $(SLO)$/protectiondlg.obj \ $(SLO)$/redcom.obj \ - $(SLO)$/linkarea.obj \ - $(SLO)$/warnbox.obj \ - $(SLO)$/scuiautofmt.obj \ - $(SLO)$/conflictsdlg.obj \ - $(SLO)$/sharedocdlg.obj \ - $(SLO)$/protectiondlg.obj \ - $(SLO)$/retypepassdlg.obj - -EXCEPTIONSFILES = \ - $(SLO)$/acredlin.obj \ - $(SLO)$/conflictsdlg.obj \ + $(SLO)$/retypepassdlg.obj \ + $(SLO)$/scuiautofmt.obj \ $(SLO)$/sharedocdlg.obj \ - $(SLO)$/optsolver.obj \ - $(SLO)$/solveroptions.obj \ - $(SLO)$/crnrdlg.obj \ - $(SLO)$/solverutil.obj \ - $(SLO)$/protectiondlg.obj \ - $(SLO)$/retypepassdlg.obj + $(SLO)$/shtabdlg.obj \ + $(SLO)$/simpref.obj \ + $(SLO)$/solveroptions.obj \ + $(SLO)$/solverutil.obj \ + $(SLO)$/solvrdlg.obj \ + $(SLO)$/strindlg.obj \ + $(SLO)$/tabbgcolordlg.obj \ + $(SLO)$/tabopdlg.obj \ + $(SLO)$/textdlgs.obj \ + $(SLO)$/warnbox.obj SRS1NAME=$(TARGET) SRC1FILES = \ diff --git a/sc/source/ui/miscdlgs/mtrindlg.cxx b/sc/source/ui/miscdlgs/mtrindlg.cxx index 7bc19c14fa27..76b70d01056d 100644 --- a/sc/source/ui/miscdlgs/mtrindlg.cxx +++ b/sc/source/ui/miscdlgs/mtrindlg.cxx @@ -87,7 +87,7 @@ ScMetricInputDlg::ScMetricInputDlg( Window* pParent, //------------------------------------------------------------------------ -__EXPORT ScMetricInputDlg::~ScMetricInputDlg() +ScMetricInputDlg::~ScMetricInputDlg() { } diff --git a/sc/source/ui/miscdlgs/mvtabdlg.cxx b/sc/source/ui/miscdlgs/mvtabdlg.cxx index b3505aa005ff..7afa05bda563 100644 --- a/sc/source/ui/miscdlgs/mvtabdlg.cxx +++ b/sc/source/ui/miscdlgs/mvtabdlg.cxx @@ -56,22 +56,37 @@ //================================================================== -ScMoveTableDlg::ScMoveTableDlg( Window* pParent ) +ScMoveTableDlg::ScMoveTableDlg( Window* pParent, + const String& rDefault ) : ModalDialog ( pParent, ScResId( RID_SCDLG_MOVETAB ) ), // + aFlAction ( this, ScResId( FL_ACTION ) ), + aBtnMove ( this, ScResId( BTN_MOVE ) ), + aBtnCopy ( this, ScResId( BTN_COPY ) ), + aFlLocation ( this, ScResId( FL_LOCATION ) ), aFtDoc ( this, ScResId( FT_DEST ) ), aLbDoc ( this, ScResId( LB_DEST ) ), aFtTable ( this, ScResId( FT_INSERT ) ), aLbTable ( this, ScResId( LB_INSERT ) ), - aBtnCopy ( this, ScResId( BTN_COPY ) ), + aFlName ( this, ScResId( FL_NAME ) ), + aFtTabName ( this, ScResId( FT_TABNAME ) ), + aEdTabName ( this, ScResId( ED_INPUT ) ), + aFtWarn ( this, ScResId( FT_TABNAME_WARN ) ), aBtnOk ( this, ScResId( BTN_OK ) ), aBtnCancel ( this, ScResId( BTN_CANCEL ) ), aBtnHelp ( this, ScResId( BTN_HELP ) ), + + maStrTabNameUsed( ScResId(STR_TABNAME_WARN_USED) ), + maStrTabNameEmpty( ScResId(STR_TABNAME_WARN_EMPTY) ), + maStrTabNameInvalid( ScResId(STR_TABNAME_WARN_INVALID) ), // + mrDefaultName( rDefault ), nDocument ( 0 ), nTable ( 0 ), - bCopyTable ( FALSE ) + bCopyTable ( false ), + bRenameTable( false ), + mbEverEdited( false ) { #if ENABLE_LAYOUT #undef ScResId @@ -83,7 +98,7 @@ ScMoveTableDlg::ScMoveTableDlg( Window* pParent ) //------------------------------------------------------------------------ -__EXPORT ScMoveTableDlg::~ScMoveTableDlg() +ScMoveTableDlg::~ScMoveTableDlg() { } @@ -93,12 +108,22 @@ USHORT ScMoveTableDlg::GetSelectedDocument () const { return nDocument; } SCTAB ScMoveTableDlg::GetSelectedTable () const { return nTable; } -BOOL ScMoveTableDlg::GetCopyTable () const { return bCopyTable; } +bool ScMoveTableDlg::GetCopyTable () const { return bCopyTable; } -void ScMoveTableDlg::SetCopyTable(BOOL bFlag) +bool ScMoveTableDlg::GetRenameTable () const { return bRenameTable; } + +void ScMoveTableDlg::GetTabNameString( String& rString ) const { - aBtnCopy.Check(bFlag); + rString = aEdTabName.GetText(); } + +void ScMoveTableDlg::SetForceCopyTable() +{ + aBtnCopy.Check(true); + aBtnMove.Disable(); + aBtnCopy.Disable(); +} + void ScMoveTableDlg::EnableCopyTable(BOOL bFlag) { if(bFlag) @@ -107,14 +132,117 @@ void ScMoveTableDlg::EnableCopyTable(BOOL bFlag) aBtnCopy.Disable(); } +void ScMoveTableDlg::EnableRenameTable(BOOL bFlag) +{ + bRenameTable = bFlag; + aEdTabName.Enable(bFlag); + aFtTabName.Enable(bFlag); + ResetRenameInput(); +} + +void ScMoveTableDlg::ResetRenameInput() +{ + if (mbEverEdited) + // Don't reset the name when the sheet name has ever been edited. + return; + + if (!aEdTabName.IsEnabled()) + { + aEdTabName.SetText(String()); + return; + } + + bool bVal = aBtnCopy.IsChecked(); + if (bVal) + { + // copy + ScDocument* pDoc = GetSelectedDoc(); + if (pDoc) + { + String aStr = mrDefaultName; + pDoc->CreateValidTabName(aStr); + aEdTabName.SetText(aStr); + } + else + aEdTabName.SetText(mrDefaultName); + } + else + // move + aEdTabName.SetText(mrDefaultName); + + CheckNewTabName(); +} + +void ScMoveTableDlg::CheckNewTabName() +{ + const String& rNewName = aEdTabName.GetText(); + if (!rNewName.Len()) + { + // New sheet name is empty. This is not good. + aFtWarn.SetText(maStrTabNameEmpty); + aFtWarn.Show(); + aBtnOk.Disable(); + return; + } + + if (!ScDocument::ValidTabName(rNewName)) + { + // New sheet name contains invalid characters. + aFtWarn.SetText(maStrTabNameInvalid); + aFtWarn.Show(); + aBtnOk.Disable(); + return; + } + + bool bFound = false; + USHORT nLast = aLbTable.GetEntryCount() - 1; + for ( USHORT i=0; i<=nLast; ++i ) + { + if ( rNewName == aLbTable.GetEntry( i ) ) + { + if( ( aBtnMove.IsChecked() ) && + ( aLbDoc.GetSelectEntryPos() == 0 ) && + ( aEdTabName.GetText() == mrDefaultName) ) + + // Move inside same document, thus same name is allowed. + bFound = false; + else + bFound = true; + } + } + + if ( bFound ) + { + aFtWarn.SetText(maStrTabNameUsed); + aFtWarn.Show(); + aBtnOk.Disable(); + } + else + { + aFtWarn.Hide(); + aBtnOk.Enable(); + } +} + +ScDocument* ScMoveTableDlg::GetSelectedDoc() +{ + USHORT nPos = aLbDoc.GetSelectEntryPos(); + return static_cast<ScDocument*>(aLbDoc.GetEntryData(nPos)); +} //------------------------------------------------------------------------ -void __EXPORT ScMoveTableDlg::Init() +void ScMoveTableDlg::Init() { aBtnOk.SetClickHdl ( LINK( this, ScMoveTableDlg, OkHdl ) ); aLbDoc.SetSelectHdl ( LINK( this, ScMoveTableDlg, SelHdl ) ); + aBtnCopy.SetToggleHdl( LINK( this, ScMoveTableDlg, CheckBtnHdl ) ); + aEdTabName.SetModifyHdl( LINK( this, ScMoveTableDlg, CheckNameHdl ) ); + aBtnMove.Check( TRUE ); aBtnCopy.Check( FALSE ); + aEdTabName.Enable(false); + aFtWarn.SetControlBackground( Color( COL_YELLOW ) ); + aFtWarn.Hide(); InitDocListBox(); SelHdl( &aLbDoc ); } @@ -127,6 +255,7 @@ void ScMoveTableDlg::InitDocListBox() ScDocShell* pScSh = NULL; USHORT nSelPos = 0; USHORT i = 0; + String aEntryName; aLbDoc.Clear(); aLbDoc.SetUpdateMode( FALSE ); @@ -137,10 +266,16 @@ void ScMoveTableDlg::InitDocListBox() if ( pScSh ) { + aEntryName = pScSh->GetTitle(); + if ( pScSh == SfxObjectShell::Current() ) + { nSelPos = i; + aEntryName += sal_Unicode( ' ' ); + aEntryName += String( ScResId( STR_CURRENTDOC ) ); + } - aLbDoc.InsertEntry( pScSh->GetTitle(), i ); + aLbDoc.InsertEntry( aEntryName, i ); aLbDoc.SetEntryData( i, (void*)pScSh->GetDocument() ); i++; @@ -153,10 +288,17 @@ void ScMoveTableDlg::InitDocListBox() aLbDoc.SelectEntryPos( nSelPos ); } - //------------------------------------------------------------------------ // Handler: +IMPL_LINK( ScMoveTableDlg, CheckBtnHdl, void *, pBtn ) +{ + if (pBtn == &aBtnCopy) + ResetRenameInput(); + + return 0; +} + IMPL_LINK( ScMoveTableDlg, OkHdl, void *, EMPTYARG ) { USHORT nDocSel = aLbDoc.GetSelectEntryPos(); @@ -167,27 +309,43 @@ IMPL_LINK( ScMoveTableDlg, OkHdl, void *, EMPTYARG ) nDocument = (nDocSel != nDocLast) ? nDocSel : SC_DOC_NEW; nTable = (nTabSel != nTabLast) ? static_cast<SCTAB>(nTabSel) : SC_TAB_APPEND; bCopyTable = aBtnCopy.IsChecked(); + + if (bCopyTable) + { + // Return an empty string when the new name is the same as the + // automatic name assigned by the document. + String aCopyName = mrDefaultName; + ScDocument* pDoc = GetSelectedDoc(); + if (pDoc) + pDoc->CreateValidTabName(aCopyName); + if (aCopyName == aEdTabName.GetText()) + aEdTabName.SetText( String() ); + } + else + { + // Return an empty string, when the new name is the same as the + // original name. + if( mrDefaultName == aEdTabName.GetText() ) + aEdTabName.SetText( String() ); + } + EndDialog( RET_OK ); return 0; } -//------------------------------------------------------------------------ - IMPL_LINK( ScMoveTableDlg, SelHdl, ListBox *, pLb ) { if ( pLb == &aLbDoc ) { - ScDocument* pDoc = (ScDocument*) - aLbDoc.GetEntryData( aLbDoc.GetSelectEntryPos() ); - SCTAB nLast = 0; + ScDocument* pDoc = GetSelectedDoc(); String aName; aLbTable.Clear(); aLbTable.SetUpdateMode( FALSE ); if ( pDoc ) { - nLast = pDoc->GetTableCount()-1; + SCTAB nLast = pDoc->GetTableCount()-1; for ( SCTAB i=0; i<=nLast; i++ ) { pDoc->GetName( i, aName ); @@ -197,6 +355,18 @@ IMPL_LINK( ScMoveTableDlg, SelHdl, ListBox *, pLb ) aLbTable.InsertEntry( ScGlobal::GetRscString(STR_MOVE_TO_END) ); aLbTable.SetUpdateMode( TRUE ); aLbTable.SelectEntryPos( 0 ); + ResetRenameInput(); + } + + return 0; +} + +IMPL_LINK( ScMoveTableDlg, CheckNameHdl, Edit *, pEdt ) +{ + if ( pEdt == &aEdTabName ) + { + mbEverEdited = true; + CheckNewTabName(); } return 0; diff --git a/sc/source/ui/miscdlgs/optsolver.cxx b/sc/source/ui/miscdlgs/optsolver.cxx index 4f70376455b5..c4a4e5baac1d 100644 --- a/sc/source/ui/miscdlgs/optsolver.cxx +++ b/sc/source/ui/miscdlgs/optsolver.cxx @@ -290,13 +290,11 @@ void ScOptSolverDlg::Init(const ScAddress& rCursorPos) rtl::OUString aSlotURL( RTL_CONSTASCII_USTRINGPARAM( "slot:" )); aSlotURL += rtl::OUString::valueOf( sal_Int32( SID_DEL_ROWS ) ); uno::Reference<frame::XFrame> xFrame = GetBindings().GetActiveFrame(); - Image aDelNm = ::GetImage( xFrame, aSlotURL, FALSE, FALSE ); - Image aDelHC = ::GetImage( xFrame, aSlotURL, FALSE, TRUE ); // high contrast + Image aDelNm = ::GetImage( xFrame, aSlotURL, FALSE ); for ( sal_uInt16 nRow = 0; nRow < EDIT_ROW_COUNT; ++nRow ) { - mpDelButton[nRow]->SetModeImage( aDelNm, BMP_COLOR_NORMAL ); - mpDelButton[nRow]->SetModeImage( aDelHC, BMP_COLOR_HIGHCONTRAST ); + mpDelButton[nRow]->SetModeImage( aDelNm ); } maBtnOpt.SetClickHdl( LINK( this, ScOptSolverDlg, BtnHdl ) ); @@ -843,10 +841,10 @@ bool ScOptSolverDlg::CallSolver() // return true -> close dialog after cal } uno::Sequence<table::CellAddress> aVariables; sal_Int32 nVarPos = 0; - ULONG nRangeCount = aVarRanges.Count(); - for (ULONG nRangePos=0; nRangePos<nRangeCount; ++nRangePos) + + for ( size_t nRangePos=0, nRange = aVarRanges.size(); nRangePos < nRange; ++nRangePos ) { - ScRange aRange(*aVarRanges.GetObject(nRangePos)); + ScRange aRange(*aVarRanges[ nRangePos ] ); aRange.Justify(); SCTAB nTab = aRange.aStart.Tab(); diff --git a/sc/source/ui/miscdlgs/protectiondlg.cxx b/sc/source/ui/miscdlgs/protectiondlg.cxx index d66bd541a174..4a8fbc15b4e7 100644 --- a/sc/source/ui/miscdlgs/protectiondlg.cxx +++ b/sc/source/ui/miscdlgs/protectiondlg.cxx @@ -62,8 +62,8 @@ ScTableProtectionDlg::ScTableProtectionDlg(Window* pParent) : maBtnCancel (this, ScResId(BTN_CANCEL)), maBtnHelp (this, ScResId(BTN_HELP)), - maSelectLockedCells(ScResId(ST_SELECT_LOCKED_CELLS)), - maSelectUnlockedCells(ScResId(ST_SELECT_UNLOCKED_CELLS)) + maSelectLockedCells(ScResId(ST_SELECT_PROTECTED_CELLS)), + maSelectUnlockedCells(ScResId(ST_SELECT_UNPROTECTED_CELLS)) { Init(); FreeResource(); diff --git a/sc/source/ui/miscdlgs/protectiondlg.src b/sc/source/ui/miscdlgs/protectiondlg.src index 6b62efb4c784..d009f824580b 100644 --- a/sc/source/ui/miscdlgs/protectiondlg.src +++ b/sc/source/ui/miscdlgs/protectiondlg.src @@ -56,7 +56,7 @@ ModalDialog RID_SCDLG_TABPROTECTION Pos = MAP_APPFONT ( 6 , 6 ) ; Size = MAP_APPFONT ( 150 , 10 ); - Text [ en-US ] = "P~rotect this sheet and the contents of locked cells" ; + Text [ en-US ] = "P~rotect this sheet and the contents of protected cells" ; }; FixedText FT_PASSWORD1 @@ -115,13 +115,13 @@ ModalDialog RID_SCDLG_TABPROTECTION TabStop = TRUE ; }; - String ST_SELECT_LOCKED_CELLS + String ST_SELECT_PROTECTED_CELLS { - Text [ en-US ] = "Select locked cells"; + Text [ en-US ] = "Select protected cells"; }; - String ST_SELECT_UNLOCKED_CELLS + String ST_SELECT_UNPROTECTED_CELLS { - Text [ en-US ] = "Select unlocked cells"; + Text [ en-US ] = "Select unprotected cells"; }; }; diff --git a/sc/source/ui/miscdlgs/retypepassdlg.src b/sc/source/ui/miscdlgs/retypepassdlg.src index 794af9d43ebd..2c3f93a6d6a0 100644 --- a/sc/source/ui/miscdlgs/retypepassdlg.src +++ b/sc/source/ui/miscdlgs/retypepassdlg.src @@ -27,7 +27,6 @@ #include "retypepassdlg.hrc" - ModalDialog RID_SCDLG_RETYPEPASS { Text [ en-US ] = "Re-type Password" ; @@ -309,5 +308,3 @@ ModalDialog RID_SCDLG_RETYPEPASS_INPUT Text [ en-US ] = "Remove password from this protected item." ; }; }; - - diff --git a/sc/source/ui/miscdlgs/scuiautofmt.cxx b/sc/source/ui/miscdlgs/scuiautofmt.cxx index a7637afc5381..943b965e7b69 100644 --- a/sc/source/ui/miscdlgs/scuiautofmt.cxx +++ b/sc/source/ui/miscdlgs/scuiautofmt.cxx @@ -112,7 +112,7 @@ ScAutoFormatDlg::ScAutoFormatDlg( Window* pParent, //------------------------------------------------------------------------ -__EXPORT ScAutoFormatDlg::~ScAutoFormatDlg() +ScAutoFormatDlg::~ScAutoFormatDlg() { delete pWndPreview; } @@ -467,7 +467,7 @@ IMPL_LINK( ScAutoFormatDlg, SelFmtHdl, void *, EMPTYARG ) //------------------------------------------------------------------------ -String __EXPORT ScAutoFormatDlg::GetCurrFormatName() +String ScAutoFormatDlg::GetCurrFormatName() { String aResult; diff --git a/sc/source/ui/miscdlgs/shtabdlg.cxx b/sc/source/ui/miscdlgs/shtabdlg.cxx index 66cf2c8034e7..5cb89a26d32e 100644 --- a/sc/source/ui/miscdlgs/shtabdlg.cxx +++ b/sc/source/ui/miscdlgs/shtabdlg.cxx @@ -104,7 +104,7 @@ IMPL_LINK_INLINE_START( ScShowTabDlg, DblClkHdl, void *, EMPTYARG ) } IMPL_LINK_INLINE_END( ScShowTabDlg, DblClkHdl, void *, EMPTYARG ) -__EXPORT ScShowTabDlg::~ScShowTabDlg() +ScShowTabDlg::~ScShowTabDlg() { } diff --git a/sc/source/ui/miscdlgs/simpref.cxx b/sc/source/ui/miscdlgs/simpref.cxx index 732543394634..f39a9b1fb927 100644 --- a/sc/source/ui/miscdlgs/simpref.cxx +++ b/sc/source/ui/miscdlgs/simpref.cxx @@ -94,7 +94,7 @@ ScSimpleRefDlg::ScSimpleRefDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pP } //---------------------------------------------------------------------------- -__EXPORT ScSimpleRefDlg::~ScSimpleRefDlg() +ScSimpleRefDlg::~ScSimpleRefDlg() { SetDispatcherLock( FALSE ); // Modal-Modus einschalten } @@ -160,7 +160,7 @@ void ScSimpleRefDlg::SetReference( const ScRange& rRef, ScDocument* pDocP ) //---------------------------------------------------------------------------- -BOOL __EXPORT ScSimpleRefDlg::Close() +BOOL ScSimpleRefDlg::Close() { CancelBtnHdl(&aBtnCancel); return TRUE; diff --git a/sc/source/ui/miscdlgs/solverutil.cxx b/sc/source/ui/miscdlgs/solverutil.cxx index fbe2cccfc0ba..9414fc04a94f 100644 --- a/sc/source/ui/miscdlgs/solverutil.cxx +++ b/sc/source/ui/miscdlgs/solverutil.cxx @@ -83,13 +83,11 @@ uno::Reference<sheet::XSolver> lcl_CreateSolver( const uno::Reference<uno::XInte return xSolver; } -// static void ScSolverUtil::GetImplementations( uno::Sequence<rtl::OUString>& rImplNames, uno::Sequence<rtl::OUString>& rDescriptions ) { rImplNames.realloc(0); // clear rDescriptions.realloc(0); - sal_Int32 nCount = 0; uno::Reference<uno::XComponentContext> xCtx; uno::Reference<lang::XMultiServiceFactory> xMSF = comphelper::getProcessServiceFactory(); @@ -109,6 +107,7 @@ void ScSolverUtil::GetImplementations( uno::Sequence<rtl::OUString>& rImplNames, xEnAc->createContentEnumeration( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SCSOLVER_SERVICE)) ); if ( xEnum.is() ) { + sal_Int32 nCount = 0; while ( xEnum->hasMoreElements() ) { uno::Any aAny = xEnum->nextElement(); @@ -142,7 +141,6 @@ void ScSolverUtil::GetImplementations( uno::Sequence<rtl::OUString>& rImplNames, } } -// static uno::Reference<sheet::XSolver> ScSolverUtil::GetSolver( const rtl::OUString& rImplName ) { uno::Reference<sheet::XSolver> xSolver; @@ -188,7 +186,6 @@ uno::Reference<sheet::XSolver> ScSolverUtil::GetSolver( const rtl::OUString& rIm return xSolver; } -// static uno::Sequence<beans::PropertyValue> ScSolverUtil::GetDefaults( const rtl::OUString& rImplName ) { uno::Sequence<beans::PropertyValue> aDefaults; diff --git a/sc/source/ui/miscdlgs/solvrdlg.cxx b/sc/source/ui/miscdlgs/solvrdlg.cxx index 524fcb8420ed..d887b2a68cf6 100644 --- a/sc/source/ui/miscdlgs/solvrdlg.cxx +++ b/sc/source/ui/miscdlgs/solvrdlg.cxx @@ -93,13 +93,13 @@ ScSolverDlg::ScSolverDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent, //---------------------------------------------------------------------------- -__EXPORT ScSolverDlg::~ScSolverDlg() +ScSolverDlg::~ScSolverDlg() { } //---------------------------------------------------------------------------- -void __EXPORT ScSolverDlg::Init() +void ScSolverDlg::Init() { String aStr; @@ -128,7 +128,7 @@ void __EXPORT ScSolverDlg::Init() //---------------------------------------------------------------------------- -BOOL __EXPORT ScSolverDlg::Close() +BOOL ScSolverDlg::Close() { return DoClose( ScSolverDlgWrapper::GetChildWindowId() ); } @@ -212,7 +212,7 @@ BOOL ScSolverDlg::IsRefInputMode() const //---------------------------------------------------------------------------- -BOOL __EXPORT ScSolverDlg::CheckTargetValue( String& rStrVal ) +BOOL ScSolverDlg::CheckTargetValue( String& rStrVal ) { sal_uInt32 n1 = 0; double n2; diff --git a/sc/source/ui/miscdlgs/strindlg.cxx b/sc/source/ui/miscdlgs/strindlg.cxx index f2bcd660bae6..08180d069473 100644 --- a/sc/source/ui/miscdlgs/strindlg.cxx +++ b/sc/source/ui/miscdlgs/strindlg.cxx @@ -100,7 +100,7 @@ void ScStringInputDlg::GetInputString( String& rString ) const rString = aEdInput.GetText(); } -__EXPORT ScStringInputDlg::~ScStringInputDlg() +ScStringInputDlg::~ScStringInputDlg() { } diff --git a/sc/source/ui/miscdlgs/tabopdlg.cxx b/sc/source/ui/miscdlgs/tabopdlg.cxx index 2dce5792232d..ebb951652a4d 100644 --- a/sc/source/ui/miscdlgs/tabopdlg.cxx +++ b/sc/source/ui/miscdlgs/tabopdlg.cxx @@ -91,14 +91,14 @@ ScTabOpDlg::ScTabOpDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent, //---------------------------------------------------------------------------- -__EXPORT ScTabOpDlg::~ScTabOpDlg() +ScTabOpDlg::~ScTabOpDlg() { Hide(); } //---------------------------------------------------------------------------- -void __EXPORT ScTabOpDlg::Init() +void ScTabOpDlg::Init() { aBtnOk. SetClickHdl ( LINK( this, ScTabOpDlg, BtnHdl ) ); aBtnCancel. SetClickHdl ( LINK( this, ScTabOpDlg, BtnHdl ) ); @@ -128,7 +128,7 @@ void __EXPORT ScTabOpDlg::Init() //---------------------------------------------------------------------------- -BOOL __EXPORT ScTabOpDlg::Close() +BOOL ScTabOpDlg::Close() { return DoClose( ScTabOpDlgWrapper::GetChildWindowId() ); } diff --git a/sc/source/ui/miscdlgs/textdlgs.cxx b/sc/source/ui/miscdlgs/textdlgs.cxx index 5af55079dda6..9dddb5997f5a 100644 --- a/sc/source/ui/miscdlgs/textdlgs.cxx +++ b/sc/source/ui/miscdlgs/textdlgs.cxx @@ -66,7 +66,7 @@ ScCharDlg::ScCharDlg( Window* pParent, const SfxItemSet* pAttr, // ----------------------------------------------------------------------- -void __EXPORT ScCharDlg::PageCreated( USHORT nId, SfxTabPage &rPage ) +void ScCharDlg::PageCreated( USHORT nId, SfxTabPage &rPage ) { SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool())); switch( nId ) @@ -112,7 +112,7 @@ ScParagraphDlg::ScParagraphDlg( Window* pParent, const SfxItemSet* pAttr ) : // ----------------------------------------------------------------------- -void __EXPORT ScParagraphDlg::PageCreated( USHORT nId, SfxTabPage &rPage ) +void ScParagraphDlg::PageCreated( USHORT nId, SfxTabPage &rPage ) { switch( nId ) { diff --git a/sc/source/ui/miscdlgs/warnbox.cxx b/sc/source/ui/miscdlgs/warnbox.cxx index acf12cf263b0..8fa78a0f1a1c 100644 --- a/sc/source/ui/miscdlgs/warnbox.cxx +++ b/sc/source/ui/miscdlgs/warnbox.cxx @@ -41,7 +41,10 @@ ScCbWarningBox::ScCbWarningBox( Window* pParent, const String& rMsgStr, bool bDefYes ) : WarningBox( pParent, WB_YES_NO | (bDefYes ? WB_DEF_YES : WB_DEF_NO), rMsgStr ) { - SetDefaultCheckBoxText(); + // By default, the check box is ON, and the user needs to un-check it to + // disable all future warnings. + SetCheckBoxState(true); + SetCheckBoxText(String(ScResId(SCSTR_WARN_ME_IN_FUTURE_CHECK))); } sal_Int16 ScCbWarningBox::Execute() @@ -50,7 +53,7 @@ sal_Int16 ScCbWarningBox::Execute() if( IsDialogEnabled() ) { nRet = WarningBox::Execute(); - if( GetCheckBoxState() ) + if (!GetCheckBoxState()) DisableDialog(); } return nRet; @@ -76,14 +79,14 @@ ScReplaceWarnBox::ScReplaceWarnBox( Window* pParent ) : bool ScReplaceWarnBox::IsDialogEnabled() { - return SC_MOD()->GetInputOptions().GetReplaceCellsWarn() == TRUE; + return SC_MOD()->GetInputOptions().GetReplaceCellsWarn() == true; } void ScReplaceWarnBox::DisableDialog() { ScModule* pScMod = SC_MOD(); ScInputOptions aInputOpt( pScMod->GetInputOptions() ); - aInputOpt.SetReplaceCellsWarn( FALSE ); + aInputOpt.SetReplaceCellsWarn( false ); pScMod->SetInputOptions( aInputOpt ); } diff --git a/sc/source/ui/namedlg/makefile.mk b/sc/source/ui/namedlg/makefile.mk index 7bc7b2653b6a..f9cd60d008a4 100644 --- a/sc/source/ui/namedlg/makefile.mk +++ b/sc/source/ui/namedlg/makefile.mk @@ -41,6 +41,9 @@ CXXFILES = \ namedlg.cxx SLOFILES = \ + $(EXCEPTIONSFILES) + +EXCEPTIONSFILES = \ $(SLO)$/namedlg.obj # --- Tagets ------------------------------------------------------- diff --git a/sc/source/ui/namedlg/namedlg.cxx b/sc/source/ui/namedlg/namedlg.cxx index f0eea3a665ed..5060f4d6aec6 100644 --- a/sc/source/ui/namedlg/namedlg.cxx +++ b/sc/source/ui/namedlg/namedlg.cxx @@ -160,7 +160,7 @@ ScNameDlg::ScNameDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent, //---------------------------------------------------------------------------- -__EXPORT ScNameDlg::~ScNameDlg() +ScNameDlg::~ScNameDlg() { DELETEZ( pSaveObj ); } @@ -168,7 +168,7 @@ __EXPORT ScNameDlg::~ScNameDlg() //---------------------------------------------------------------------------- -void __EXPORT ScNameDlg::Init() +void ScNameDlg::Init() { String aAreaStr; ScRange aRange; @@ -252,7 +252,7 @@ void ScNameDlg::SetReference( const ScRange& rRef, ScDocument* pDocP ) //---------------------------------------------------------------------------- -BOOL __EXPORT ScNameDlg::Close() +BOOL ScNameDlg::Close() { return DoClose( ScNameDlgWrapper::GetChildWindowId() ); } @@ -269,7 +269,7 @@ void ScNameDlg::SetActive() //---------------------------------------------------------------------------- -void __EXPORT ScNameDlg::UpdateChecks() +void ScNameDlg::UpdateChecks() { USHORT nCurPos=0; @@ -314,7 +314,7 @@ void __EXPORT ScNameDlg::UpdateChecks() //---------------------------------------------------------------------------- -void __EXPORT ScNameDlg::UpdateNames() +void ScNameDlg::UpdateNames() { USHORT nRangeCount = aLocalRangeName.GetCount(); @@ -359,7 +359,7 @@ void __EXPORT ScNameDlg::UpdateNames() //---------------------------------------------------------------------------- -void __EXPORT ScNameDlg::CalcCurTableAssign( String& aAssign, USHORT nCurPos ) +void ScNameDlg::CalcCurTableAssign( String& aAssign, USHORT nCurPos ) { ScRangeData* pRangeData = (ScRangeData*)(aLocalRangeName.At( nCurPos )); @@ -424,7 +424,6 @@ IMPL_LINK( ScNameDlg, AddBtnHdl, void *, EMPTYARG ) { ScRangeData* pNewEntry = NULL; RangeType nType = RT_NAME; - USHORT nFoundAt = 0; String theSymbol = aEdAssign.GetText(); String aStrPos; String aStrArea; @@ -449,6 +448,7 @@ IMPL_LINK( ScNameDlg, AddBtnHdl, void *, EMPTYARG ) // in ein Token-Array uebersetzt werden?) if ( 0 == pNewEntry->GetErrCode() ) { + USHORT nFoundAt = 0; // Eintrag bereits vorhanden? Dann vorher entfernen (=Aendern) if ( aLocalRangeName.SearchName( aNewEntry, nFoundAt ) ) { // alten Index uebernehmen diff --git a/sc/source/ui/navipi/content.cxx b/sc/source/ui/navipi/content.cxx index 5b55d47b70cd..78918415c40f 100644 --- a/sc/source/ui/navipi/content.cxx +++ b/sc/source/ui/navipi/content.cxx @@ -128,7 +128,6 @@ ScDocShell* ScContentTree::GetManualOrCurrent() ScContentTree::ScContentTree( Window* pParent, const ResId& rResId ) : SvTreeListBox ( pParent, rResId ), aEntryImages ( ScResId( RID_IMAGELIST_NAVCONT ) ), - aHCEntryImages ( ScResId( RID_IMAGELIST_H_NAVCONT ) ), nRootType ( SC_CONTENT_ROOT ), bHiddenDoc ( FALSE ), pHiddenDocument ( NULL ) @@ -169,10 +168,6 @@ void ScContentTree::InitRoot( USHORT nType ) USHORT nPos = nRootType ? 0 : pPosList[nType]-1; SvLBoxEntry* pNew = InsertEntry( aName, rImage, rImage, NULL, FALSE, nPos ); - const Image& rHCImage = aHCEntryImages.GetImage( nType ); - SetExpandedEntryBmp( pNew, rHCImage, BMP_COLOR_HIGHCONTRAST ); - SetCollapsedEntryBmp( pNew, rHCImage, BMP_COLOR_HIGHCONTRAST ); - pRootNodes[nType] = pNew; } @@ -412,12 +407,12 @@ void ScContentTree::KeyInput( const KeyEvent& rKEvt ) SvTreeListBox::KeyInput(rKEvt); } -//BOOL __EXPORT ScContentTree::Drop( const DropEvent& rEvt ) +//BOOL ScContentTree::Drop( const DropEvent& rEvt ) //{ // return pParentWindow->Drop(rEvt); // Drop auf Navigator //} -//BOOL __EXPORT ScContentTree::QueryDrop( DropEvent& rEvt ) +//BOOL ScContentTree::QueryDrop( DropEvent& rEvt ) //{ // return pParentWindow->QueryDrop(rEvt); // Drop auf Navigator //} @@ -441,7 +436,7 @@ void ScContentTree::DragFinished( sal_Int8 /* nAction */ ) { } -void __EXPORT ScContentTree::Command( const CommandEvent& rCEvt ) +void ScContentTree::Command( const CommandEvent& rCEvt ) { BOOL bDone = FALSE; @@ -536,7 +531,7 @@ void __EXPORT ScContentTree::Command( const CommandEvent& rCEvt ) SvTreeListBox::Command(rCEvt); } -void __EXPORT ScContentTree::RequestHelp( const HelpEvent& rHEvt ) +void ScContentTree::RequestHelp( const HelpEvent& rHEvt ) { BOOL bDone = FALSE; if( rHEvt.GetMode() & HELPMODE_QUICK ) @@ -743,7 +738,7 @@ void ScContentTree::GetDbNames() } } -bool ScContentTree::IsPartOfType( USHORT nContentType, USHORT nObjIdentifier ) // static +bool ScContentTree::IsPartOfType( USHORT nContentType, USHORT nObjIdentifier ) { bool bRet = false; switch ( nContentType ) diff --git a/sc/source/ui/navipi/makefile.mk b/sc/source/ui/navipi/makefile.mk index 992aefcd4f45..1ce4df4b4927 100644 --- a/sc/source/ui/navipi/makefile.mk +++ b/sc/source/ui/navipi/makefile.mk @@ -37,13 +37,13 @@ TARGET=navipi # --- Files -------------------------------------------------------- -SLOFILES = \ - $(SLO)$/navipi.obj \ - $(SLO)$/navcitem.obj \ - $(SLO)$/scenwnd.obj \ - $(SLO)$/content.obj +SLOFILES = \ + $(EXCEPTIONSFILES) -EXCEPTIONSFILES = \ +EXCEPTIONSFILES = \ + $(SLO)$/content.obj \ + $(SLO)$/navcitem.obj \ + $(SLO)$/navipi.obj \ $(SLO)$/scenwnd.obj SRS1NAME=$(TARGET) diff --git a/sc/source/ui/navipi/navcitem.cxx b/sc/source/ui/navipi/navcitem.cxx index c6346ccc32c7..c5cf72b51be0 100644 --- a/sc/source/ui/navipi/navcitem.cxx +++ b/sc/source/ui/navipi/navcitem.cxx @@ -56,7 +56,7 @@ ScNavigatorControllerItem::ScNavigatorControllerItem( USHORT nIdP, //------------------------------------------------------------------------ -void __EXPORT ScNavigatorControllerItem::StateChanged( USHORT /* nSID */, SfxItemState /* eState */, +void ScNavigatorControllerItem::StateChanged( USHORT /* nSID */, SfxItemState /* eState */, const SfxPoolItem* pItem ) { switch( GetId() ) diff --git a/sc/source/ui/navipi/navipi.cxx b/sc/source/ui/navipi/navipi.cxx index f3b53f5818a6..d869904da174 100644 --- a/sc/source/ui/navipi/navipi.cxx +++ b/sc/source/ui/navipi/navipi.cxx @@ -77,7 +77,6 @@ static const xub_StrLen SCNAV_COLLETTERS = ::ScColToAlpha(SCNAV_MAXCOL).Len(); //------------------------------------------------------------------------ -// static void ScNavigatorDlg::ReleaseFocus() { SfxViewShell* pCurSh = SfxViewShell::Current(); @@ -105,13 +104,13 @@ ColumnEdit::ColumnEdit( ScNavigatorDlg* pParent, const ResId& rResId ) //------------------------------------------------------------------------ -__EXPORT ColumnEdit::~ColumnEdit() +ColumnEdit::~ColumnEdit() { } //------------------------------------------------------------------------ -long __EXPORT ColumnEdit::Notify( NotifyEvent& rNEvt ) +long ColumnEdit::Notify( NotifyEvent& rNEvt ) { long nHandled = SpinField::Notify( rNEvt ); @@ -143,7 +142,7 @@ long __EXPORT ColumnEdit::Notify( NotifyEvent& rNEvt ) //------------------------------------------------------------------------ -void __EXPORT ColumnEdit::LoseFocus() +void ColumnEdit::LoseFocus() { EvalText(); } @@ -151,7 +150,7 @@ void __EXPORT ColumnEdit::LoseFocus() //------------------------------------------------------------------------ -void __EXPORT ColumnEdit::Up() +void ColumnEdit::Up() { nCol++; @@ -168,7 +167,7 @@ void __EXPORT ColumnEdit::Up() //------------------------------------------------------------------------ -void __EXPORT ColumnEdit::Down() +void ColumnEdit::Down() { if ( nCol>1 ) SetCol( nCol-1 ); @@ -180,7 +179,7 @@ void __EXPORT ColumnEdit::Down() //------------------------------------------------------------------------ -void __EXPORT ColumnEdit::First() +void ColumnEdit::First() { nCol = 1; SetText( 'A' ); @@ -188,7 +187,7 @@ void __EXPORT ColumnEdit::First() //------------------------------------------------------------------------ -void __EXPORT ColumnEdit::Last() +void ColumnEdit::Last() { String aStr; nCol = NumToAlpha( SCNAV_MAXCOL, aStr ); @@ -316,13 +315,13 @@ RowEdit::RowEdit( ScNavigatorDlg* pParent, const ResId& rResId ) //------------------------------------------------------------------------ -__EXPORT RowEdit::~RowEdit() +RowEdit::~RowEdit() { } //------------------------------------------------------------------------ -long __EXPORT RowEdit::Notify( NotifyEvent& rNEvt ) +long RowEdit::Notify( NotifyEvent& rNEvt ) { long nHandled = NumericField::Notify( rNEvt ); @@ -343,7 +342,7 @@ long __EXPORT RowEdit::Notify( NotifyEvent& rNEvt ) //------------------------------------------------------------------------ -void __EXPORT RowEdit::LoseFocus() +void RowEdit::LoseFocus() { } @@ -370,13 +369,13 @@ ScDocListBox::ScDocListBox( ScNavigatorDlg* pParent, const ResId& rResId ) //------------------------------------------------------------------------ -__EXPORT ScDocListBox::~ScDocListBox() +ScDocListBox::~ScDocListBox() { } //------------------------------------------------------------------------ -void __EXPORT ScDocListBox::Select() +void ScDocListBox::Select() { ScNavigatorDlg::ReleaseFocus(); @@ -397,13 +396,11 @@ CommandToolBox::CommandToolBox( ScNavigatorDlg* pParent, const ResId& rResId ) SetSizePixel( CalcWindowSizePixel() ); SetDropdownClickHdl( LINK(this, CommandToolBox, ToolBoxDropdownClickHdl) ); SetItemBits( IID_DROPMODE, GetItemBits( IID_DROPMODE ) | TIB_DROPDOWNONLY ); -// EnableItem( IID_UP, FALSE ); -// EnableItem( IID_DOWN, FALSE ); } //------------------------------------------------------------------------ -__EXPORT CommandToolBox::~CommandToolBox() +CommandToolBox::~CommandToolBox() { } @@ -447,7 +444,6 @@ void CommandToolBox::Select( USHORT nSelId ) case IID_DOWN: rDlg.EndOfDataArea(); break; - // IID_DROPMODE ist in Click case IID_CHANGEROOT: rDlg.aLbEntries.ToggleRoot(); UpdateButtons(); @@ -455,14 +451,14 @@ void CommandToolBox::Select( USHORT nSelId ) } } -void __EXPORT CommandToolBox::Select() +void CommandToolBox::Select() { Select( GetCurItemId() ); } //------------------------------------------------------------------------ -void __EXPORT CommandToolBox::Click() +void CommandToolBox::Click() { } @@ -515,23 +511,19 @@ void CommandToolBox::UpdateButtons() CheckItem( IID_CHANGEROOT, bRootSet ); } - BOOL bHC = GetSettings().GetStyleSettings().GetHighContrastMode(); - USHORT nImageId = 0; switch ( rDlg.nDropMode ) { - case SC_DROPMODE_URL: nImageId = bHC ? RID_IMG_H_DROP_URL : RID_IMG_DROP_URL; break; - case SC_DROPMODE_LINK: nImageId = bHC ? RID_IMG_H_DROP_LINK : RID_IMG_DROP_LINK; break; - case SC_DROPMODE_COPY: nImageId = bHC ? RID_IMG_H_DROP_COPY : RID_IMG_DROP_COPY; break; + case SC_DROPMODE_URL: nImageId = RID_IMG_DROP_URL; break; + case SC_DROPMODE_LINK: nImageId = RID_IMG_DROP_LINK; break; + case SC_DROPMODE_COPY: nImageId = RID_IMG_DROP_COPY; break; } SetItemImage( IID_DROPMODE, Image(ScResId(nImageId)) ); } void CommandToolBox::InitImageList() { - BOOL bHC = GetSettings().GetStyleSettings().GetHighContrastMode(); - - ImageList& rImgLst = bHC ? rDlg.aCmdImageListH : rDlg.aCmdImageList; + ImageList& rImgLst = rDlg.aCmdImageList; USHORT nCount = GetItemCount(); for (USHORT i = 0; i < nCount; i++) @@ -632,17 +624,9 @@ ScNavigatorDialogWrapper::ScNavigatorDialogWrapper( } pNavigator->bFirstBig = ( nCmdId == 0 ); // dann spaeter - -/*??? - FloatingWindow* pFloat = GetFloatingWindow(); - if ( pFloat ) - pFloat->SetMinOutputSizePixel( pNavigator->GetMinOutputSizePixel() ); -*/ - -//!? pNavigator->Show(); } -void __EXPORT ScNavigatorDialogWrapper::Resizing( Size& rSize ) +void ScNavigatorDialogWrapper::Resizing( Size& rSize ) { ((ScNavigatorDlg*)GetWindow())->Resizing(rSize); } @@ -660,7 +644,6 @@ ScNavigatorDlg::ScNavigatorDlg( SfxBindings* pB, SfxChildWindowContext* pCW, Win Window( pParent, ScResId(RID_SCDLG_NAVIGATOR) ), rBindings ( *pB ), // is used in CommandToolBox ctor aCmdImageList( ScResId( IL_CMD ) ), - aCmdImageListH( ScResId( ILH_CMD ) ), aFtCol ( this, ScResId( FT_COL ) ), aEdCol ( this, ScResId( ED_COL ) ), aFtRow ( this, ScResId( FT_ROW ) ), @@ -716,12 +699,6 @@ ScNavigatorDlg::ScNavigatorDlg( SfxBindings* pB, SfxChildWindowContext* pCW, Win nListModeHeight = aInitSize.Height() + nInitListHeight; - // kein Resize, eh der ganze Kontext-Kram initialisiert ist! -// SetOutputSizePixel( aInitSize ); //??? -/*! FloatingWindow* pFloat = pContextWin->GetFloatingWindow(); - if ( pFloat) - pFloat->SetMinOutputSizePixel( aInitSize ); -*/ ppBoundItems = new ScNavigatorControllerItem* [CTRL_ITEMS]; rBindings.ENTERREGISTRATIONS(); @@ -771,7 +748,7 @@ ScNavigatorDlg::ScNavigatorDlg( SfxBindings* pB, SfxChildWindowContext* pCW, Win //------------------------------------------------------------------------ -__EXPORT ScNavigatorDlg::~ScNavigatorDlg() +ScNavigatorDlg::~ScNavigatorDlg() { aContentTimer.Stop(); @@ -788,7 +765,7 @@ __EXPORT ScNavigatorDlg::~ScNavigatorDlg() //------------------------------------------------------------------------ -void __EXPORT ScNavigatorDlg::Resizing( Size& rNewSize ) // Size = Outputsize? +void ScNavigatorDlg::Resizing( Size& rNewSize ) // Size = Outputsize? { FloatingWindow* pFloat = pContextWin->GetFloatingWindow(); if ( pFloat ) @@ -806,8 +783,6 @@ void __EXPORT ScNavigatorDlg::Resizing( Size& rNewSize ) // Size = Outputsize? rNewSize.Height() = aMinOut.Height(); } } -// else -// SfxDockingWindow::Resizing(rNewSize); } @@ -838,7 +813,7 @@ void ScNavigatorDlg::DataChanged( const DataChangedEvent& rDCEvt ) //------------------------------------------------------------------------ -void __EXPORT ScNavigatorDlg::Resize() +void ScNavigatorDlg::Resize() { DoResize(); } @@ -870,7 +845,6 @@ void ScNavigatorDlg::DoResize() // auch wenn die Inhalte nicht sichtbar sind, die Groessen anpassen, // damit die Breite stimmt - //@@ 03.11.97 changes begin Point aEntryPos = aLbEntries.GetPosPixel(); Point aListPos = aLbDocuments.GetPosPixel(); aNewSize.Width() -= 2*nBorderOffset; @@ -894,8 +868,6 @@ void ScNavigatorDlg::DoResize() aWndScenarios.SetSizePixel( aNewSize ); aLbDocuments.SetSizePixel( aDocSize ); - //@@ 03.11.97 end - BOOL bListMode = (eListMode != NAV_LMODE_NONE); FloatingWindow* pFloat = pContextWin->GetFloatingWindow(); if ( pFloat && bListMode ) @@ -904,7 +876,7 @@ void ScNavigatorDlg::DoResize() //------------------------------------------------------------------------ -void __EXPORT ScNavigatorDlg::Notify( SfxBroadcaster&, const SfxHint& rHint ) +void ScNavigatorDlg::Notify( SfxBroadcaster&, const SfxHint& rHint ) { if ( rHint.ISA(SfxSimpleHint) ) { @@ -1160,7 +1132,6 @@ void ScNavigatorDlg::UpdateTable( const SCTAB* pTab ) else if ( GetViewData() ) nCurTab = pViewData->GetTabNo(); -// aLbTables.SetTab( nCurTab ); CheckDataArea(); } @@ -1471,7 +1442,7 @@ void ScNavigatorDlg::EndOfDataArea() //------------------------------------------------------------------------ -SfxChildAlignment __EXPORT ScNavigatorDlg::CheckAlignment( +SfxChildAlignment ScNavigatorDlg::CheckAlignment( SfxChildAlignment eActAlign, SfxChildAlignment eAlign ) { SfxChildAlignment eRetAlign; diff --git a/sc/source/ui/navipi/navipi.hrc b/sc/source/ui/navipi/navipi.hrc index 0adb65a5a042..643435655a26 100644 --- a/sc/source/ui/navipi/navipi.hrc +++ b/sc/source/ui/navipi/navipi.hrc @@ -26,8 +26,6 @@ ************************************************************************/ #include "sc.hrc" -//#define RID_SCDLG_NAVIGATOR 256 - #define FT_ROW 1 #define ED_ROW 2 #define FT_COL 3 @@ -41,13 +39,9 @@ #define STR_NOTACTIVE 11 #define STR_HIDDEN 12 #define STR_ACTIVEWIN 13 -//#define IMG_ENTRIES 14 #define STR_QHLP_SCEN_LISTBOX 15 #define STR_QHLP_SCEN_COMMENT 16 #define IL_CMD 17 -#define ILH_CMD 18 - - #define IID_AREAS 1 #define IID_DBAREAS 2 @@ -59,5 +53,3 @@ #define IID_DROPMODE 9 #define IID_CHANGEROOT 10 #define IID_ZOOMOUT 11 - - diff --git a/sc/source/ui/navipi/navipi.src b/sc/source/ui/navipi/navipi.src index c2e9ecb6a4e6..08e57cf4bf3c 100644 --- a/sc/source/ui/navipi/navipi.src +++ b/sc/source/ui/navipi/navipi.src @@ -59,23 +59,13 @@ Window RID_SCDLG_NAVIGATOR { SVLook = TRUE ; HelpId = HID_SC_NAVIGATOR ; - //? Pos = MAP_APPFONT( 0, 0 ); Size = MAP_APPFONT ( 115 , 116 ) ; OutputSize = TRUE ; DialogControl = TRUE ; Hide = TRUE ; Text [ en-US ] = "Navigator" ; - // Closeable = TRUE ; - // Moveable = TRUE ; - // Zoomable = TRUE ; - // Sizeable = TRUE ; - // EnableResizing = TRUE ; - // HideWhenDeactivate = TRUE ; - // Border = TRUE ; - // Dockable = TRUE ; FixedText FT_ROW { - // Pos = MAP_APPFONT( 2, 20 ); Pos = MAP_APPFONT ( 2 , 19 ) ; // an kleinere Toolbox-Bitmaps angepasst Size = MAP_APPFONT ( 19 , 10 ) ; @@ -85,7 +75,6 @@ Window RID_SCDLG_NAVIGATOR { HelpId = HID_SC_NAVIPI_ROW ; Border = TRUE ; - // Pos = MAP_APPFONT( 31, 19 ); Pos = MAP_APPFONT ( 31 , 18 ) ; // an kleinere Toolbox-Bitmaps angepasst Size = MAP_APPFONT ( 30 , 12 ) ; @@ -119,7 +108,6 @@ Window RID_SCDLG_NAVIGATOR // "Control" braucht immer eigene HelpId HelpId = HID_SC_NAVIPI_ENTRIES ; Border = TRUE ; - // Pos = MAP_APPFONT( 2, 52 ); Pos = MAP_APPFONT ( 2 , 35 ) ; Size = MAP_APPFONT ( 110 , 100 ) ; TabStop = TRUE ; @@ -128,7 +116,6 @@ Window RID_SCDLG_NAVIGATOR { HelpId = HID_SC_NAVIPI_DOC ; Border = TRUE ; - // Pos = MAP_APPFONT( 2, 35 ); Pos = MAP_APPFONT ( 2 , 89 ) ; Size = MAP_APPFONT ( 82 , 50 ) ; TabStop = TRUE ; @@ -141,12 +128,6 @@ Window RID_SCDLG_NAVIGATOR MaskColor = STD_MASKCOLOR ; SC_NAVI_CMD_IDLIST }; - ImageList ILH_CMD - { - Prefix = "nah"; - MaskColor = SC_HC_MASKCOLOR ; - SC_NAVI_CMD_IDLIST - }; ToolBox TBX_CMD { Pos = MAP_APPFONT ( 66 , 3 ) ; @@ -244,50 +225,30 @@ Window RID_SCDLG_NAVIGATOR }; - ImageList RID_IMAGELIST_NAVCONT { Prefix = "nc"; MaskColor = STD_MASKCOLOR ; SC_NAVI_CONT_IDLIST }; -ImageList RID_IMAGELIST_H_NAVCONT -{ - Prefix = "nch"; - MaskColor = SC_HC_MASKCOLOR ; - SC_NAVI_CONT_IDLIST -}; Image RID_IMG_DROP_URL { - ImageBitmap = Bitmap { File = "dropurl.bmp" ; }; + ImageBitmap = Bitmap { File = "dropurl.png" ; }; MaskColor = STD_MASKCOLOR ; }; + Image RID_IMG_DROP_LINK { - ImageBitmap = Bitmap { File = "droplink.bmp" ; }; + ImageBitmap = Bitmap { File = "droplink.png" ; }; MaskColor = STD_MASKCOLOR ; }; + Image RID_IMG_DROP_COPY { - ImageBitmap = Bitmap { File = "dropcopy.bmp" ; }; + ImageBitmap = Bitmap { File = "dropcopy.png" ; }; MaskColor = STD_MASKCOLOR ; }; -Image RID_IMG_H_DROP_URL -{ - ImageBitmap = Bitmap { File = "dropurl_h.bmp" ; }; - MaskColor = SC_HC_MASKCOLOR ; -}; -Image RID_IMG_H_DROP_LINK -{ - ImageBitmap = Bitmap { File = "droplink_h.bmp" ; }; - MaskColor = SC_HC_MASKCOLOR ; -}; -Image RID_IMG_H_DROP_COPY -{ - ImageBitmap = Bitmap { File = "dropcopy_h.bmp" ; }; - MaskColor = SC_HC_MASKCOLOR ; -}; // content description strings are also used in ScLinkTargetsObj @@ -295,38 +256,47 @@ String SCSTR_CONTENT_ROOT { Text [ en-US ] = "Contents" ; }; + String SCSTR_CONTENT_TABLE { Text [ en-US ] = "Sheets" ; }; + String SCSTR_CONTENT_RANGENAME { Text [ en-US ] = "Range names" ; }; + String SCSTR_CONTENT_DBAREA { Text [ en-US ] = "Database Ranges" ; }; + String SCSTR_CONTENT_GRAPHIC { Text [ en-US ] = "Graphics" ; }; + String SCSTR_CONTENT_OLEOBJECT { Text [ en-US ] = "OLE objects" ; }; + String SCSTR_CONTENT_NOTE { Text [ en-US ] = "Comments" ; }; + String SCSTR_CONTENT_AREALINK { Text [ en-US ] = "Linked areas" ; }; + String SCSTR_CONTENT_DRAWING { Text [ en-US ] = "Drawing objects"; }; + // PopupMenu ------------------------------------------------------------- Menu RID_POPUP_DROPMODE { @@ -352,6 +322,7 @@ Menu RID_POPUP_DROPMODE }; }; }; + Menu RID_POPUP_NAVIPI_SCENARIO { ItemList = @@ -370,45 +341,3 @@ Menu RID_POPUP_NAVIPI_SCENARIO }; }; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/optdlg/makefile.mk b/sc/source/ui/optdlg/makefile.mk index 9c816f56f7b8..b2be3b5c02ad 100644 --- a/sc/source/ui/optdlg/makefile.mk +++ b/sc/source/ui/optdlg/makefile.mk @@ -45,20 +45,17 @@ CXXFILES = \ tpprint.cxx \ opredlin.cxx -EXCEPTIONSFILES= \ - $(SLO)$/tpcompatibility.obj - SLOFILES = \ - $(SLO)$/tpusrlst.obj \ - $(SLO)$/tpview.obj \ - $(SLO)$/tpcalc.obj \ - $(SLO)$/tpformula.obj \ - $(SLO)$/tpcompatibility.obj \ - $(SLO)$/tpprint.obj \ - $(SLO)$/opredlin.obj + $(EXCEPTIONSFILES) EXCEPTIONSFILES= \ - $(SLO)$/tpcompatibility.obj \ + $(SLO)$/opredlin.obj \ + $(SLO)$/tpcalc.obj \ + $(SLO)$/tpcompatibility.obj \ + $(SLO)$/tpformula.obj \ + $(SLO)$/tpprint.obj \ + $(SLO)$/tpusrlst.obj \ + $(SLO)$/tpview.obj # --- Tagets ------------------------------------------------------- diff --git a/sc/source/ui/optdlg/opredlin.cxx b/sc/source/ui/optdlg/opredlin.cxx index f438b3cdfcbc..05e6fc3d855c 100644 --- a/sc/source/ui/optdlg/opredlin.cxx +++ b/sc/source/ui/optdlg/opredlin.cxx @@ -81,28 +81,16 @@ ScRedlineOptionsTabPage::ScRedlineOptionsTabPage( Window* pParent, aRemoveColorLB.SetSelectHdl( aLk ); } -/*----------------------------------------------------------------------- - Beschreibung: - -----------------------------------------------------------------------*/ - -__EXPORT ScRedlineOptionsTabPage::~ScRedlineOptionsTabPage() +ScRedlineOptionsTabPage::~ScRedlineOptionsTabPage() { } -/*----------------------------------------------------------------------- - Beschreibung: - -----------------------------------------------------------------------*/ - -SfxTabPage* __EXPORT ScRedlineOptionsTabPage::Create( Window* pParent, const SfxItemSet& rSet ) +SfxTabPage* ScRedlineOptionsTabPage::Create( Window* pParent, const SfxItemSet& rSet ) { return new ScRedlineOptionsTabPage( pParent, rSet ); } -/*----------------------------------------------------------------------- - Beschreibung: - -----------------------------------------------------------------------*/ - -BOOL __EXPORT ScRedlineOptionsTabPage::FillItemSet( SfxItemSet& /* rSet */ ) +BOOL ScRedlineOptionsTabPage::FillItemSet( SfxItemSet& /* rSet */ ) { ScAppOptions aAppOptions=SC_MOD()->GetAppOptions(); @@ -169,11 +157,7 @@ BOOL __EXPORT ScRedlineOptionsTabPage::FillItemSet( SfxItemSet& /* rSet */ ) return FALSE; } -/*----------------------------------------------------------------------- - Beschreibung: - -----------------------------------------------------------------------*/ - -void __EXPORT ScRedlineOptionsTabPage::Reset( const SfxItemSet& /* rSet */ ) +void ScRedlineOptionsTabPage::Reset( const SfxItemSet& /* rSet */ ) { XColorTable* pColorTbl = XColorTable::GetStdColorTable(); @@ -237,54 +221,6 @@ void __EXPORT ScRedlineOptionsTabPage::Reset( const SfxItemSet& /* rSet */ ) IMPL_LINK( ScRedlineOptionsTabPage, ColorHdl, ColorListBox *, EMPTYARG ) { -/* - SvxFontPrevWindow *pPrev; - ListBox *pLB; - - if (pColorLB == &aInsertColorLB) - { - pPrev = &aInsertPreviewWN; - pLB = &aInsertLB; - } - else - { - pPrev = &aDeletedPreviewWN; - pLB = &aDeletedLB; - } - - SvxFont& rFont = pPrev->GetFont(); - USHORT nPos = pLB->GetSelectEntryPos(); - if (nPos == LISTBOX_ENTRY_NOTFOUND) - nPos = 0; - - CharAttr *pAttr = (CharAttr *)pLB->GetEntryData(nPos); - - if (pAttr->nItemId == SID_ATTR_BRUSH) - { - rFont.SetColor(Color(COL_BLACK)); - nPos = pColorLB->GetSelectEntryPos(); - if (nPos && nPos != LISTBOX_ENTRY_NOTFOUND) - { - Brush aBrush(Color(pColorLB->GetSelectEntryColor())); - pPrev->SetBrush(aBrush); - } - else - { - Brush aBrush(Color(COL_LIGHTGRAY)); - pPrev->SetBrush(aBrush); - } - } - else - { - nPos = pColorLB->GetSelectEntryPos(); - if (nPos && nPos != LISTBOX_ENTRY_NOTFOUND) - rFont.SetColor(pColorLB->GetEntryColor(nPos)); - else - rFont.SetColor(Color(COL_RED)); - } - - pPrev->Invalidate(); -*/ return 0; } diff --git a/sc/source/ui/optdlg/tpcalc.cxx b/sc/source/ui/optdlg/tpcalc.cxx index 7d56184d014e..143cb41d4ea2 100644 --- a/sc/source/ui/optdlg/tpcalc.cxx +++ b/sc/source/ui/optdlg/tpcalc.cxx @@ -83,7 +83,6 @@ ScTpCalcOptions::ScTpCalcOptions( Window* pParent, aBtnDateStd ( this, ScResId( BTN_DATESTD ) ), aBtnDateSc10 ( this, ScResId( BTN_DATESC10 ) ), aBtnDate1904 ( this, ScResId( BTN_DATE1904 ) ), - aHSeparatorFL ( this, ScResId( FL_H_SEPARATOR ) ), aBtnCase ( this, ScResId( BTN_CASE ) ), aBtnCalc ( this, ScResId( BTN_CALC ) ), aBtnMatch ( this, ScResId( BTN_MATCH ) ), @@ -107,7 +106,7 @@ ScTpCalcOptions::ScTpCalcOptions( Window* pParent, //----------------------------------------------------------------------- -__EXPORT ScTpCalcOptions::~ScTpCalcOptions() +ScTpCalcOptions::~ScTpCalcOptions() { delete pOldOptions; delete pLocalOptions; @@ -126,21 +125,21 @@ void ScTpCalcOptions::Init() //----------------------------------------------------------------------- -USHORT* __EXPORT ScTpCalcOptions::GetRanges() +USHORT* ScTpCalcOptions::GetRanges() { return pCalcOptRanges; } //----------------------------------------------------------------------- -SfxTabPage* __EXPORT ScTpCalcOptions::Create( Window* pParent, const SfxItemSet& rAttrSet ) +SfxTabPage* ScTpCalcOptions::Create( Window* pParent, const SfxItemSet& rAttrSet ) { return ( new ScTpCalcOptions( pParent, rAttrSet ) ); } //----------------------------------------------------------------------- -void __EXPORT ScTpCalcOptions::Reset( const SfxItemSet& /* rCoreAttrs */ ) +void ScTpCalcOptions::Reset( const SfxItemSet& /* rCoreAttrs */ ) { USHORT d,m,y; @@ -191,7 +190,7 @@ void __EXPORT ScTpCalcOptions::Reset( const SfxItemSet& /* rCoreAttrs */ ) //----------------------------------------------------------------------- -BOOL __EXPORT ScTpCalcOptions::FillItemSet( SfxItemSet& rCoreAttrs ) +BOOL ScTpCalcOptions::FillItemSet( SfxItemSet& rCoreAttrs ) { // alle weiteren Optionen werden in den Handlern aktualisiert pLocalOptions->SetIterCount( (USHORT)aEdSteps.GetValue() ); @@ -218,7 +217,7 @@ BOOL __EXPORT ScTpCalcOptions::FillItemSet( SfxItemSet& rCoreAttrs ) //------------------------------------------------------------------------ -int __EXPORT ScTpCalcOptions::DeactivatePage( SfxItemSet* pSetP ) +int ScTpCalcOptions::DeactivatePage( SfxItemSet* pSetP ) { int nReturn = KEEP_PAGE; diff --git a/sc/source/ui/optdlg/tpformula.cxx b/sc/source/ui/optdlg/tpformula.cxx index 8d7dd7daff95..9be3f8a0f139 100644 --- a/sc/source/ui/optdlg/tpformula.cxx +++ b/sc/source/ui/optdlg/tpformula.cxx @@ -213,7 +213,6 @@ IMPL_LINK( ScTpFormulaOptions, SepEditOnFocusHdl, Edit*, pEdit ) return 0; } -// static SfxTabPage* ScTpFormulaOptions::Create(Window* pParent, const SfxItemSet& rCoreSet) { return new ScTpFormulaOptions(pParent, rCoreSet); diff --git a/sc/source/ui/optdlg/tpusrlst.cxx b/sc/source/ui/optdlg/tpusrlst.cxx index da188c65470b..5da25e2e260e 100644 --- a/sc/source/ui/optdlg/tpusrlst.cxx +++ b/sc/source/ui/optdlg/tpusrlst.cxx @@ -115,7 +115,7 @@ ScTpUserLists::ScTpUserLists( Window* pParent, // ----------------------------------------------------------------------- -__EXPORT ScTpUserLists::~ScTpUserLists() +ScTpUserLists::~ScTpUserLists() { delete pUserLists; delete pRangeUtil; @@ -173,21 +173,21 @@ void ScTpUserLists::Init() // ----------------------------------------------------------------------- -USHORT* __EXPORT ScTpUserLists::GetRanges() +USHORT* ScTpUserLists::GetRanges() { return pUserListsRanges; } // ----------------------------------------------------------------------- -SfxTabPage* __EXPORT ScTpUserLists::Create( Window* pParent, const SfxItemSet& rAttrSet ) +SfxTabPage* ScTpUserLists::Create( Window* pParent, const SfxItemSet& rAttrSet ) { return ( new ScTpUserLists( pParent, rAttrSet ) ); } // ----------------------------------------------------------------------- -void __EXPORT ScTpUserLists::Reset( const SfxItemSet& rCoreAttrs ) +void ScTpUserLists::Reset( const SfxItemSet& rCoreAttrs ) { const ScUserListItem& rUserListItem = (const ScUserListItem&) rCoreAttrs.Get( nWhichUserLists ); @@ -238,7 +238,7 @@ void __EXPORT ScTpUserLists::Reset( const SfxItemSet& rCoreAttrs ) // ----------------------------------------------------------------------- -BOOL __EXPORT ScTpUserLists::FillItemSet( SfxItemSet& rCoreAttrs ) +BOOL ScTpUserLists::FillItemSet( SfxItemSet& rCoreAttrs ) { // Modifikationen noch nicht uebernommen? // -> Click auf Add-Button simulieren @@ -279,7 +279,7 @@ BOOL __EXPORT ScTpUserLists::FillItemSet( SfxItemSet& rCoreAttrs ) // ----------------------------------------------------------------------- -int __EXPORT ScTpUserLists::DeactivatePage( SfxItemSet* pSetP ) +int ScTpUserLists::DeactivatePage( SfxItemSet* pSetP ) { if ( pSetP ) FillItemSet( *pSetP ); diff --git a/sc/source/ui/optdlg/tpview.cxx b/sc/source/ui/optdlg/tpview.cxx index 7c49d6d2d54c..d408fb093bc5 100644 --- a/sc/source/ui/optdlg/tpview.cxx +++ b/sc/source/ui/optdlg/tpview.cxx @@ -57,10 +57,6 @@ -/*-----------------11.01.97 10.52------------------- - Optionen Inhalte ---------------------------------------------------*/ - ScTpContentOptions::ScTpContentOptions( Window* pParent, const SfxItemSet& rArgSet ) : SfxTabPage(pParent, ScResId( RID_SCPAGE_CONTENT ), rArgSet), @@ -133,26 +129,18 @@ ScTpContentOptions::ScTpContentOptions( Window* pParent, aGridCB .SetClickHdl( LINK( this, ScTpContentOptions, GridHdl ) ); } -/*-----------------11.01.97 10.52------------------- - ---------------------------------------------------*/ ScTpContentOptions::~ScTpContentOptions() { delete pLocalOptions; } -/*-----------------11.01.97 10.52------------------- - ---------------------------------------------------*/ SfxTabPage* ScTpContentOptions::Create( Window* pParent, const SfxItemSet& rCoreSet ) { return new ScTpContentOptions(pParent, rCoreSet); } -/*-----------------11.01.97 10.52------------------- ---------------------------------------------------*/ BOOL ScTpContentOptions::FillItemSet( SfxItemSet& rCoreSet ) { BOOL bRet = FALSE; @@ -196,9 +184,6 @@ BOOL ScTpContentOptions::FillItemSet( SfxItemSet& rCoreSet ) return bRet; } -/*-----------------11.01.97 10.53------------------- - ---------------------------------------------------*/ void ScTpContentOptions::Reset( const SfxItemSet& rCoreSet ) { @@ -261,9 +246,6 @@ void ScTpContentOptions::Reset( const SfxItemSet& rCoreSet ) aHandleCB .SaveValue(); aBigHandleCB .SaveValue(); } -/*-----------------11.01.97 12.45------------------- - ---------------------------------------------------*/ void ScTpContentOptions::ActivatePage( const SfxItemSet& rSet) { @@ -271,9 +253,6 @@ void ScTpContentOptions::ActivatePage( const SfxItemSet& rSet) if(SFX_ITEM_SET == rSet.GetItemState(SID_SCVIEWOPTIONS, FALSE , &pItem)) *pLocalOptions = ((const ScTpViewItem*)pItem)->GetViewOptions(); } -/*-----------------11.01.97 12.45------------------- - ---------------------------------------------------*/ int ScTpContentOptions::DeactivatePage( SfxItemSet* pSetP ) { @@ -281,9 +260,6 @@ int ScTpContentOptions::DeactivatePage( SfxItemSet* pSetP ) FillItemSet(*pSetP); return SfxTabPage::LEAVE_PAGE; } -/*-----------------11.01.97 13.43------------------- - ---------------------------------------------------*/ IMPL_LINK( ScTpContentOptions, SelLbObjHdl, ListBox*, pLb ) { @@ -301,10 +277,6 @@ IMPL_LINK( ScTpContentOptions, SelLbObjHdl, ListBox*, pLb ) return 0; } -/*-----------------11.01.97 14.25------------------- - ---------------------------------------------------*/ - IMPL_LINK( ScTpContentOptions, CBHdl, CheckBox*, pBtn ) { ScViewOption eOption = VOPT_FORMULAS; @@ -335,9 +307,6 @@ IMPL_LINK( ScTpContentOptions, CBHdl, CheckBox*, pBtn ) return 0; } -/*-----------------11.01.97 13.13------------------- - ---------------------------------------------------*/ void ScTpContentOptions::InitGridOpt() { @@ -407,9 +376,6 @@ void ScTpContentOptions::InitGridOpt() else aColorLB.SelectEntryPos( aColorLB.InsertEntry( aCol, aName ) ); } -/*-----------------11.01.97 13.40------------------- - ---------------------------------------------------*/ IMPL_LINK( ScTpContentOptions, GridHdl, CheckBox*, pBox ) { @@ -419,9 +385,6 @@ IMPL_LINK( ScTpContentOptions, GridHdl, CheckBox*, pBox ) pLocalOptions->SetOption( VOPT_GRID, bChecked ); return 0; } -/*-----------------11.01.97 10.53------------------- - ---------------------------------------------------*/ ScTpLayoutOptions::ScTpLayoutOptions( Window* pParent, const SfxItemSet& rArgSet ) : @@ -485,16 +448,10 @@ ScTpLayoutOptions::ScTpLayoutOptions( Window* pParent, } } -/*-----------------11.01.97 10.53------------------- - ---------------------------------------------------*/ ScTpLayoutOptions::~ScTpLayoutOptions() { } -/*-----------------11.01.97 10.53------------------- - ---------------------------------------------------*/ SfxTabPage* ScTpLayoutOptions::Create( Window* pParent, const SfxItemSet& rCoreSet ) @@ -506,9 +463,6 @@ SfxTabPage* ScTpLayoutOptions::Create( Window* pParent, pNew->SetDocument(pDocSh->GetDocument()); return pNew; } -/*-----------------11.01.97 10.53------------------- - ---------------------------------------------------*/ BOOL ScTpLayoutOptions::FillItemSet( SfxItemSet& rCoreSet ) { @@ -601,9 +555,6 @@ BOOL ScTpLayoutOptions::FillItemSet( SfxItemSet& rCoreSet ) return bRet; } -/*-----------------11.01.97 10.53------------------- - ---------------------------------------------------*/ void ScTpLayoutOptions::Reset( const SfxItemSet& rCoreSet ) { @@ -697,16 +648,9 @@ void ScTpLayoutOptions::Reset( const SfxItemSet& rCoreSet ) aRequestRB.SaveValue(); } -/*-----------------11.01.97 12.46------------------- - ---------------------------------------------------*/ - void ScTpLayoutOptions::ActivatePage( const SfxItemSet& /* rCoreSet */ ) { } -/*-----------------11.01.97 12.46------------------- - ---------------------------------------------------*/ int ScTpLayoutOptions::DeactivatePage( SfxItemSet* pSetP ) { @@ -715,11 +659,6 @@ int ScTpLayoutOptions::DeactivatePage( SfxItemSet* pSetP ) return SfxTabPage::LEAVE_PAGE; } - -/*-----------------13.01.97 14.44------------------- - Metric des Deftabstops umschalten ---------------------------------------------------*/ - IMPL_LINK(ScTpLayoutOptions, MetricHdl, ListBox*, EMPTYARG) { const USHORT nMPos = aUnitLB.GetSelectEntryPos(); @@ -734,9 +673,7 @@ IMPL_LINK(ScTpLayoutOptions, MetricHdl, ListBox*, EMPTYARG) return 0; } -/*-----------------11.01.97 15.30------------------- ---------------------------------------------------*/ IMPL_LINK( ScTpLayoutOptions, AlignHdl, CheckBox*, pBox ) { aAlignLB.Enable(pBox->IsChecked()); diff --git a/sc/source/ui/pagedlg/areasdlg.cxx b/sc/source/ui/pagedlg/areasdlg.cxx index d80e5062f2e9..5a489825aad7 100644 --- a/sc/source/ui/pagedlg/areasdlg.cxx +++ b/sc/source/ui/pagedlg/areasdlg.cxx @@ -211,9 +211,6 @@ void ScPrintAreasDlg::SetReference( const ScRange& rRef, ScDocument* /* pDoc */ if ( &aEdPrintArea == pRefInputEdit ) { rRef.Format( aStr, SCR_ABS, pDoc, eConv ); - -// aEdPrintArea.ReplaceSelected( aStr ); - String aVal = aEdPrintArea.GetText(); Selection aSel = aEdPrintArea.GetSelection(); aSel.Justify(); @@ -390,7 +387,6 @@ BOOL ScPrintAreasDlg::Impl_CheckRefStrings() const USHORT nValidRange = nValidAddr | SCA_VALID_ROW2 | SCA_VALID_COL2; const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention(); const sal_Unicode sep = ScCompiler::GetNativeSymbol(ocSep).GetChar(0); - // const sal_Unicode rsep = ScCompiler::GetNativeSymbol(ocRange).GetChar(0); ScAddress aAddr; ScRange aRange; @@ -429,7 +425,11 @@ BOOL ScPrintAreasDlg::Impl_CheckRefStrings() else if ( !bRepeatColOk ) pEd = &aEdRepeatCol; ERRORBOX( STR_INVALID_TABREF ); - pEd->GrabFocus(); + + OSL_ASSERT(pEd); + + if (pEd) + pEd->GrabFocus(); } return bOk; @@ -473,7 +473,6 @@ void ScPrintAreasDlg::Impl_FillLists() { String aName; String aSymbol; -// ScRange aRange; ScRangeData* pData = NULL; for ( USHORT i=0; i<nCount; i++ ) diff --git a/sc/source/ui/pagedlg/hfedtdlg.cxx b/sc/source/ui/pagedlg/hfedtdlg.cxx index 3fa032989dfc..8ba49db77dfc 100644 --- a/sc/source/ui/pagedlg/hfedtdlg.cxx +++ b/sc/source/ui/pagedlg/hfedtdlg.cxx @@ -168,13 +168,13 @@ ScHFEditDlg::ScHFEditDlg( SfxViewFrame* pFrameP, // ----------------------------------------------------------------------- -__EXPORT ScHFEditDlg::~ScHFEditDlg() +ScHFEditDlg::~ScHFEditDlg() { } // ----------------------------------------------------------------------- -void __EXPORT ScHFEditDlg::PageCreated( USHORT /* nId */, SfxTabPage& rPage ) +void ScHFEditDlg::PageCreated( USHORT /* nId */, SfxTabPage& rPage ) { // kann ja nur ne ScHFEditPage sein... diff --git a/sc/source/ui/pagedlg/hfedtdlg.hrc b/sc/source/ui/pagedlg/hfedtdlg.hrc index 30e6f8ecae63..f18cc50ce7b4 100644 --- a/sc/source/ui/pagedlg/hfedtdlg.hrc +++ b/sc/source/ui/pagedlg/hfedtdlg.hrc @@ -27,9 +27,6 @@ #include "sc.hrc" -//#define RID_SCPAGE_HFEDIT 256 -//#define RID_SCDLG_HFEDIT 256 - #define FT_LEFT 1 #define FT_CENTER 2 #define FT_RIGHT 3 @@ -52,13 +49,6 @@ #define FL_INFO 14 -#define IMG_TEXT_H 21 -#define IMG_PAGE_H 22 -#define IMG_PAGES_H 23 -#define IMG_DATE_H 24 -#define IMG_TIME_H 25 -#define IMG_FILE_H 26 -#define IMG_TABLE_H 27 #define FT_HF_DEFINED 28 #define LB_DEFINED 29 #define FT_HF_CUSTOM 30 diff --git a/sc/source/ui/pagedlg/hfedtdlg.src b/sc/source/ui/pagedlg/hfedtdlg.src index 1445636e8cc6..b82497877763 100644 --- a/sc/source/ui/pagedlg/hfedtdlg.src +++ b/sc/source/ui/pagedlg/hfedtdlg.src @@ -81,6 +81,7 @@ TabDialog RID_SCDLG_HFED_HEADER }; }; }; + TabDialog RID_SCDLG_HFED_FOOTER { OutputSize = TRUE ; @@ -112,6 +113,7 @@ TabDialog RID_SCDLG_HFED_FOOTER }; }; }; + //------------------------------------------------------------------------ // Bearbeiten/Kopf-Fusszeile: //------------------------------------------------------------------------ @@ -158,6 +160,7 @@ TabDialog RID_SCDLG_HFEDIT_ALL }; }; }; + TabDialog RID_SCDLG_HFEDIT_SHDR { OutputSize = TRUE ; @@ -195,6 +198,7 @@ TabDialog RID_SCDLG_HFEDIT_SHDR }; }; }; + TabDialog RID_SCDLG_HFEDIT_SFTR { OutputSize = TRUE ; @@ -232,6 +236,7 @@ TabDialog RID_SCDLG_HFEDIT_SFTR }; }; }; + TabDialog RID_SCDLG_HFEDIT { OutputSize = TRUE ; @@ -263,6 +268,7 @@ TabDialog RID_SCDLG_HFEDIT }; }; }; + TabDialog RID_SCDLG_HFEDIT_HEADER { OutputSize = TRUE ; @@ -294,6 +300,7 @@ TabDialog RID_SCDLG_HFEDIT_HEADER }; }; }; + TabDialog RID_SCDLG_HFEDIT_FOOTER { OutputSize = TRUE ; @@ -325,6 +332,7 @@ TabDialog RID_SCDLG_HFEDIT_FOOTER }; }; }; + TabDialog RID_SCDLG_HFEDIT_RIGHTHEADER { OutputSize = TRUE ; @@ -350,6 +358,7 @@ TabDialog RID_SCDLG_HFEDIT_RIGHTHEADER }; }; }; + TabDialog RID_SCDLG_HFEDIT_LEFTHEADER { OutputSize = TRUE ; @@ -375,6 +384,7 @@ TabDialog RID_SCDLG_HFEDIT_LEFTHEADER }; }; }; + TabDialog RID_SCDLG_HFEDIT_RIGHTFOOTER { OutputSize = TRUE ; @@ -400,6 +410,7 @@ TabDialog RID_SCDLG_HFEDIT_RIGHTFOOTER }; }; }; + TabDialog RID_SCDLG_HFEDIT_LEFTFOOTER { OutputSize = TRUE ; @@ -425,6 +436,7 @@ TabDialog RID_SCDLG_HFEDIT_LEFTFOOTER }; }; }; + //------------------------------------------------------------------------ // ScTpHFEdit //------------------------------------------------------------------------ @@ -440,45 +452,18 @@ TabPage RID_HFBASE Size = MAP_APPFONT ( 75 , 10 ) ; Text [ en-US ] = "~Left area" ; }; - /* "Control" braucht eigene HelpId, darum in der Ableitung: - Control WND_LEFT - { - Border = TRUE ; - Pos = MAP_APPFONT ( 6 , 18 ) ; - Size = MAP_APPFONT ( 80 , 72 ) ; - TabStop = TRUE ; - }; -*/ FixedText FT_CENTER { Pos = MAP_APPFONT ( 90 , 6 ) ; Size = MAP_APPFONT ( 75 , 10 ) ; Text [ en-US ] = "~Center area" ; }; - /* "Control" braucht eigene HelpId, darum in der Ableitung: - Control WND_CENTER - { - Border = TRUE ; - Pos = MAP_APPFONT ( 90 , 18 ) ; - Size = MAP_APPFONT ( 80 , 72 ) ; - TabStop = TRUE ; - }; -*/ FixedText FT_RIGHT { Pos = MAP_APPFONT ( 174 , 6 ) ; Size = MAP_APPFONT ( 75 , 10 ) ; Text [ en-US ] = "R~ight area" ; }; - /* "Control" braucht eigene HelpId, darum in der Ableitung: - Control WND_RIGHT - { - Border = TRUE ; - Pos = MAP_APPFONT ( 174 , 18 ) ; - Size = MAP_APPFONT ( 80 , 72 ) ; - TabStop = TRUE ; - }; -*/ FixedText FT_HF_DEFINED { Pos = MAP_APPFONT ( 12 , 102 ) ; @@ -486,17 +471,6 @@ TabPage RID_HFBASE Text [ en-US ] = "Hea~der" ; }; - /* #i84123# list box needs own help id, which is set in the derived tab pages - ListBox LB_DEFINED - { - Border = TRUE ; - Pos = MAP_APPFONT ( 90 , 100 ) ; - Size = MAP_APPFONT ( 130 , 80 ) ; - DropDown = TRUE ; - TabStop = TRUE ; - }; - */ - FixedText FT_HF_CUSTOM { Pos = MAP_APPFONT ( 12 , 124 ) ; @@ -513,15 +487,11 @@ TabPage RID_HFBASE QuickHelpText [ en-US ] = "Text Attributes" ; ButtonImage = Image { - ImageBitmap = Bitmap { File = "text.bmp" ; }; + ImageBitmap = Bitmap { File = "text.png" ; }; MaskColor = STD_MASKCOLOR ; }; }; - Image IMG_TEXT_H - { - ImageBitmap = Bitmap { File = "text_h.bmp" ; }; - MaskColor = SC_HC_MASKCOLOR; - }; + ImageButton BTN_FILE { HelpId = HID_SC_HF_FILE ; @@ -531,15 +501,10 @@ TabPage RID_HFBASE QuickHelpText [ en-US ] = "Title" ; ButtonImage = Image { - ImageBitmap = Bitmap { File = "file.bmp" ; }; + ImageBitmap = Bitmap { File = "file.png" ; }; MaskColor = STD_MASKCOLOR ; }; }; - Image IMG_FILE_H - { - ImageBitmap = Bitmap { File = "file_h.bmp" ; }; - MaskColor = SC_HC_MASKCOLOR; - }; Menu RID_POPUP_FCOMMAND { @@ -577,15 +542,11 @@ TabPage RID_HFBASE QuickHelpText [ en-US ] = "Sheet Name" ; ButtonImage = Image { - ImageBitmap = Bitmap { File = "table.bmp" ; }; + ImageBitmap = Bitmap { File = "table.png" ; }; MaskColor = STD_MASKCOLOR; }; }; - Image IMG_TABLE_H - { - ImageBitmap = Bitmap { File = "table_h.bmp" ; }; - MaskColor = SC_HC_MASKCOLOR; - }; + ImageButton BTN_PAGE { HelpId = HID_SC_HF_PAGE ; @@ -595,15 +556,11 @@ TabPage RID_HFBASE QuickHelpText [ en-US ] = "Page" ; ButtonImage = Image { - ImageBitmap = Bitmap { File = "page.bmp" ; }; + ImageBitmap = Bitmap { File = "page.png" ; }; MaskColor = STD_MASKCOLOR ; }; }; - Image IMG_PAGE_H - { - ImageBitmap = Bitmap { File = "page_h.bmp" ; }; - MaskColor = SC_HC_MASKCOLOR; - }; + ImageButton BTN_PAGES { HelpId = HID_SC_HF_PAGES ; @@ -613,15 +570,11 @@ TabPage RID_HFBASE QuickHelpText [ en-US ] = "Pages" ; ButtonImage = Image { - ImageBitmap = Bitmap { File = "pages.bmp" ; }; + ImageBitmap = Bitmap { File = "pages.png" ; }; MaskColor = STD_MASKCOLOR ; }; }; - Image IMG_PAGES_H - { - ImageBitmap = Bitmap { File = "pages_h.bmp" ; }; - MaskColor = SC_HC_MASKCOLOR; - }; + ImageButton BTN_DATE { HelpId = HID_SC_HF_DATE ; @@ -631,15 +584,11 @@ TabPage RID_HFBASE QuickHelpText [ en-US ] = "Date" ; ButtonImage = Image { - ImageBitmap = Bitmap { File = "date.bmp" ; }; + ImageBitmap = Bitmap { File = "date.png" ; }; MaskColor = STD_MASKCOLOR ; }; }; - Image IMG_DATE_H - { - ImageBitmap = Bitmap { File = "date_h.bmp" ; }; - MaskColor = SC_HC_MASKCOLOR; - }; + ImageButton BTN_TIME { HelpId = HID_SC_HF_TIME ; @@ -649,15 +598,11 @@ TabPage RID_HFBASE QuickHelpText [ en-US ] = "Time" ; ButtonImage = Image { - ImageBitmap = Bitmap { File = "time.bmp" ; }; + ImageBitmap = Bitmap { File = "time.png" ; }; MaskColor = STD_MASKCOLOR ; }; }; - Image IMG_TIME_H - { - ImageBitmap = Bitmap { File = "time_h.bmp" ; }; - MaskColor = SC_HC_MASKCOLOR; - }; + FixedText FT_INFO { Pos = MAP_APPFONT ( 12 , 155 ) ; @@ -672,6 +617,7 @@ TabPage RID_HFBASE Text [ en-US ] = "Note" ; }; }; + // Kombinationen: Header/Footer links/rechts // die Eingabefenster jeweils mit eigener ID, sonst aus RID_HFBASE kopiert TabPage RID_SCPAGE_HFED_HL < RID_HFBASE @@ -712,6 +658,7 @@ TabPage RID_SCPAGE_HFED_HL < RID_HFBASE TabStop = TRUE ; }; }; + TabPage RID_SCPAGE_HFED_HR < RID_HFBASE { Hide = TRUE ; @@ -750,6 +697,7 @@ TabPage RID_SCPAGE_HFED_HR < RID_HFBASE TabStop = TRUE ; }; }; + TabPage RID_SCPAGE_HFED_FL < RID_HFBASE { Hide = TRUE ; @@ -788,6 +736,7 @@ TabPage RID_SCPAGE_HFED_FL < RID_HFBASE TabStop = TRUE ; }; }; + TabPage RID_SCPAGE_HFED_FR < RID_HFBASE { Hide = TRUE ; @@ -826,4 +775,3 @@ TabPage RID_SCPAGE_HFED_FR < RID_HFBASE TabStop = TRUE ; }; }; - diff --git a/sc/source/ui/pagedlg/makefile.mk b/sc/source/ui/pagedlg/makefile.mk index 93224ec7cb58..a7984f7d19af 100644 --- a/sc/source/ui/pagedlg/makefile.mk +++ b/sc/source/ui/pagedlg/makefile.mk @@ -39,8 +39,8 @@ LIBTARGET=no # --- Files -------------------------------------------------------- CXXFILES = \ - areasdlg.cxx \ - hfedtdlg.cxx \ + areasdlg.cxx \ + hfedtdlg.cxx \ tptable.cxx \ tphf.cxx \ tphfedit.cxx @@ -48,13 +48,15 @@ CXXFILES = \ SLOFILES = \ - $(SLO)$/areasdlg.obj \ - $(SLO)$/hfedtdlg.obj \ - $(SLO)$/tptable.obj \ - $(SLO)$/tphf.obj \ - $(SLO)$/tphfedit.obj \ - $(SLO)$/scuitphfedit.obj + $(EXCEPTIONSFILES) +EXCEPTIONSFILES = \ + $(SLO)$/areasdlg.obj \ + $(SLO)$/hfedtdlg.obj \ + $(SLO)$/scuitphfedit.obj \ + $(SLO)$/tphf.obj \ + $(SLO)$/tphfedit.obj \ + $(SLO)$/tptable.obj \ SRS1NAME=$(TARGET) SRC1FILES = pagedlg.src \ @@ -65,7 +67,7 @@ LIB1TARGET = $(SLB)$/$(TARGET).lib LIB1OBJFILES = \ $(SLO)$/areasdlg.obj \ - $(SLO)$/tphfedit.obj + $(SLO)$/tphfedit.obj # --- Tagets ------------------------------------------------------- .INCLUDE : target.mk diff --git a/sc/source/ui/pagedlg/pagedlg.hrc b/sc/source/ui/pagedlg/pagedlg.hrc index 2f3593c2f6d1..0c26340599a1 100644 --- a/sc/source/ui/pagedlg/pagedlg.hrc +++ b/sc/source/ui/pagedlg/pagedlg.hrc @@ -71,9 +71,6 @@ #define FT_SCALEPAGEHEIGHT 53 #define FT_SCALEPAGENUM 54 -#define IMG_LEFTRIGHT_H 41 -#define IMG_TOPDOWN_H 42 - // List box entries "Scaling mode" #define SC_TPTABLE_SCALE_PERCENT 0 #define SC_TPTABLE_SCALE_TO 1 diff --git a/sc/source/ui/pagedlg/pagedlg.src b/sc/source/ui/pagedlg/pagedlg.src index d0f95c3d9f6b..d02432d94cd9 100644 --- a/sc/source/ui/pagedlg/pagedlg.src +++ b/sc/source/ui/pagedlg/pagedlg.src @@ -25,6 +25,7 @@ * ************************************************************************/ #include "pagedlg.hrc" + ModelessDialog RID_SCDLG_AREAS { HelpId = HID_SCPAGE_AREAS ; @@ -147,6 +148,7 @@ ModelessDialog RID_SCDLG_AREAS QuickHelpText [ en-US ] = "Shrink" ; }; }; + TabPage RID_SCPAGE_TABLE { Hide = TRUE ; @@ -237,24 +239,14 @@ TabPage RID_SCPAGE_TABLE }; Image IMG_LEFTRIGHT { - ImageBitmap = Bitmap { File = "lftrgt.bmp" ; }; + ImageBitmap = Bitmap { File = "lftrgt.png" ; }; MaskColor = STD_MASKCOLOR; }; - Image IMG_LEFTRIGHT_H - { - ImageBitmap = Bitmap { File = "lftrgt_h.bmp" ; }; - MaskColor = SC_HC_MASKCOLOR; - }; Image IMG_TOPDOWN { - ImageBitmap = Bitmap { File = "topdown.bmp" ; }; + ImageBitmap = Bitmap { File = "topdown.png" ; }; MaskColor = STD_MASKCOLOR; }; - Image IMG_TOPDOWN_H - { - ImageBitmap = Bitmap { File = "topdown_h.bmp" ; }; - MaskColor = SC_HC_MASKCOLOR; - }; CheckBox BTN_PAGENO { Pos = MAP_APPFONT ( 12 , 46 ) ; @@ -389,28 +381,3 @@ TabPage RID_SCPAGE_TABLE Text [ en-US ] = "Scale" ; }; }; - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/pagedlg/scuitphfedit.cxx b/sc/source/ui/pagedlg/scuitphfedit.cxx index 5ea90ef0d77d..3d57d39bbe17 100644 --- a/sc/source/ui/pagedlg/scuitphfedit.cxx +++ b/sc/source/ui/pagedlg/scuitphfedit.cxx @@ -140,14 +140,6 @@ ScHFEditPage::ScHFEditPage( Window* pParent, aBtnFile .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) ); aBtnTable .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) ); - aBtnText .SetModeImage( Image( ScResId( IMG_TEXT_H ) ), BMP_COLOR_HIGHCONTRAST ); - aBtnFile .SetModeImage( Image( ScResId( IMG_FILE_H ) ), BMP_COLOR_HIGHCONTRAST ); - aBtnTable .SetModeImage( Image( ScResId( IMG_TABLE_H ) ), BMP_COLOR_HIGHCONTRAST ); - aBtnPage .SetModeImage( Image( ScResId( IMG_PAGE_H ) ), BMP_COLOR_HIGHCONTRAST ); - aBtnLastPage.SetModeImage( Image( ScResId( IMG_PAGES_H ) ), BMP_COLOR_HIGHCONTRAST ); - aBtnDate .SetModeImage( Image( ScResId( IMG_DATE_H ) ), BMP_COLOR_HIGHCONTRAST ); - aBtnTime .SetModeImage( Image( ScResId( IMG_TIME_H ) ), BMP_COLOR_HIGHCONTRAST ); - if(!bHeader) { maFtDefinedHF.SetText(ScGlobal::GetRscString( STR_FOOTER )); @@ -180,7 +172,7 @@ ScHFEditPage::ScHFEditPage( Window* pParent, // ----------------------------------------------------------------------- -__EXPORT ScHFEditPage::~ScHFEditPage() +ScHFEditPage::~ScHFEditPage() { } @@ -195,7 +187,7 @@ void ScHFEditPage::SetNumType(SvxNumType eNumType) #define IS_AVAILABLE(w)(rCoreSet.GetItemState( (w) ) >= SFX_ITEM_AVAILABLE) -void __EXPORT ScHFEditPage::Reset( const SfxItemSet& rCoreSet ) +void ScHFEditPage::Reset( const SfxItemSet& rCoreSet ) { if ( IS_AVAILABLE( nWhich ) ) { @@ -216,7 +208,7 @@ void __EXPORT ScHFEditPage::Reset( const SfxItemSet& rCoreSet ) // ----------------------------------------------------------------------- -BOOL __EXPORT ScHFEditPage::FillItemSet( SfxItemSet& rCoreSet ) +BOOL ScHFEditPage::FillItemSet( SfxItemSet& rCoreSet ) { ScPageHFItem aItem( nWhich ); EditTextObject* pLeft = aWndLeft .CreateTextObject(); @@ -708,7 +700,7 @@ void ScHFEditPage::ProcessDefinedListSel(ScHFEntryId eSel, bool bTravelling) ESelection aSel(0,0,0,0); aWndCenter.GetEditEngine()->QuickInsertField(SvxFieldItem( SvxFileField(), EE_FEATURE_FIELD ), aSel ); ++aSel.nEndPos; - String aPageEntry(RTL_CONSTASCII_STRINGPARAM(", ")); + String aPageEntry(RTL_CONSTASCII_USTRINGPARAM(", ")); aPageEntry += ScGlobal::GetRscString( STR_PAGE ) ; aPageEntry += ' '; aWndCenter.GetEditEngine()->QuickInsertText(aPageEntry, ESelection(aSel.nEndPara,aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); @@ -741,7 +733,7 @@ void ScHFEditPage::ProcessDefinedListSel(ScHFEntryId eSel, bool bTravelling) aSel.nEndPos = aPageEntry.Len(); aWndCenter.GetEditEngine()->QuickInsertField(SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); ++aSel.nEndPos; - String aCommaSpace(RTL_CONSTASCII_STRINGPARAM(", ")); + String aCommaSpace(RTL_CONSTASCII_USTRINGPARAM(", ")); aWndCenter.GetEditEngine()->QuickInsertText(aCommaSpace,ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); aSel.nEndPos = sal::static_int_cast<xub_StrLen>( aSel.nEndPos + aCommaSpace.Len() ); aWndCenter.GetEditEngine()->QuickInsertField( SvxFieldItem(SvxTableField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); @@ -762,7 +754,7 @@ void ScHFEditPage::ProcessDefinedListSel(ScHFEntryId eSel, bool bTravelling) aSel.nEndPos = aPageEntry.Len(); aWndCenter.GetEditEngine()->QuickInsertField(SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); ++aSel.nEndPos; - String aCommaSpace(RTL_CONSTASCII_STRINGPARAM(", ")); + String aCommaSpace(RTL_CONSTASCII_USTRINGPARAM(", ")); aWndCenter.GetEditEngine()->QuickInsertText(aCommaSpace,ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); aSel.nEndPos = sal::static_int_cast<xub_StrLen>( aSel.nEndPos + aCommaSpace.Len() ); aWndCenter.GetEditEngine()->QuickInsertField( SvxFieldItem(SvxFileField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); @@ -933,12 +925,12 @@ ScRightHeaderEditPage::ScRightHeaderEditPage( Window* pParent, const SfxItemSet& // ----------------------------------------------------------------------- -USHORT* __EXPORT ScRightHeaderEditPage::GetRanges() +USHORT* ScRightHeaderEditPage::GetRanges() { return pPageRightHeaderRanges; } // ----------------------------------------------------------------------- -SfxTabPage* __EXPORT ScRightHeaderEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet ) +SfxTabPage* ScRightHeaderEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet ) { return ( new ScRightHeaderEditPage( pParent, rCoreSet ) ); }; @@ -953,12 +945,12 @@ ScLeftHeaderEditPage::ScLeftHeaderEditPage( Window* pParent, const SfxItemSet& r // ----------------------------------------------------------------------- -USHORT* __EXPORT ScLeftHeaderEditPage::GetRanges() +USHORT* ScLeftHeaderEditPage::GetRanges() { return pPageLeftHeaderRanges; } // ----------------------------------------------------------------------- -SfxTabPage* __EXPORT ScLeftHeaderEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet ) +SfxTabPage* ScLeftHeaderEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet ) { return ( new ScLeftHeaderEditPage( pParent, rCoreSet ) ); }; //======================================================================== @@ -972,12 +964,12 @@ ScRightFooterEditPage::ScRightFooterEditPage( Window* pParent, const SfxItemSet& // ----------------------------------------------------------------------- -USHORT* __EXPORT ScRightFooterEditPage::GetRanges() +USHORT* ScRightFooterEditPage::GetRanges() { return pPageRightFooterRanges; } // ----------------------------------------------------------------------- -SfxTabPage* __EXPORT ScRightFooterEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet ) +SfxTabPage* ScRightFooterEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet ) { return ( new ScRightFooterEditPage( pParent, rCoreSet ) ); }; //======================================================================== @@ -991,12 +983,12 @@ ScLeftFooterEditPage::ScLeftFooterEditPage( Window* pParent, const SfxItemSet& r // ----------------------------------------------------------------------- -USHORT* __EXPORT ScLeftFooterEditPage::GetRanges() +USHORT* ScLeftFooterEditPage::GetRanges() { return pPageLeftFooterRanges; } // ----------------------------------------------------------------------- -SfxTabPage* __EXPORT ScLeftFooterEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet ) +SfxTabPage* ScLeftFooterEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet ) { return ( new ScLeftFooterEditPage( pParent, rCoreSet ) ); }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/pagedlg/tphf.cxx b/sc/source/ui/pagedlg/tphf.cxx index 96150acf4960..77542e3d6052 100644 --- a/sc/source/ui/pagedlg/tphf.cxx +++ b/sc/source/ui/pagedlg/tphf.cxx @@ -105,13 +105,13 @@ ScHFPage::ScHFPage( Window* pParent, USHORT nResId, //------------------------------------------------------------------ -__EXPORT ScHFPage::~ScHFPage() +ScHFPage::~ScHFPage() { } //------------------------------------------------------------------ -void __EXPORT ScHFPage::Reset( const SfxItemSet& rSet ) +void ScHFPage::Reset( const SfxItemSet& rSet ) { SvxHFPage::Reset( rSet ); TurnOnHdl( 0 ); @@ -119,7 +119,7 @@ void __EXPORT ScHFPage::Reset( const SfxItemSet& rSet ) //------------------------------------------------------------------ -BOOL __EXPORT ScHFPage::FillItemSet( SfxItemSet& rOutSet ) +BOOL ScHFPage::FillItemSet( SfxItemSet& rOutSet ) { BOOL bResult = SvxHFPage::FillItemSet( rOutSet ); @@ -139,7 +139,7 @@ BOOL __EXPORT ScHFPage::FillItemSet( SfxItemSet& rOutSet ) //------------------------------------------------------------------ -void __EXPORT ScHFPage::ActivatePage( const SfxItemSet& rSet ) +void ScHFPage::ActivatePage( const SfxItemSet& rSet ) { USHORT nPageWhich = GetWhich( SID_ATTR_PAGE ); const SvxPageItem& rPageItem = (const SvxPageItem&) @@ -157,7 +157,7 @@ void __EXPORT ScHFPage::ActivatePage( const SfxItemSet& rSet ) //------------------------------------------------------------------ -int __EXPORT ScHFPage::DeactivatePage( SfxItemSet* pSetP ) +int ScHFPage::DeactivatePage( SfxItemSet* pSetP ) { if ( LEAVE_PAGE == SvxHFPage::DeactivatePage( pSetP ) ) if ( pSetP ) @@ -291,14 +291,14 @@ ScHeaderPage::ScHeaderPage( Window* pParent, const SfxItemSet& rSet ) //------------------------------------------------------------------ -SfxTabPage* __EXPORT ScHeaderPage::Create( Window* pParent, const SfxItemSet& rCoreSet ) +SfxTabPage* ScHeaderPage::Create( Window* pParent, const SfxItemSet& rCoreSet ) { return ( new ScHeaderPage( pParent, rCoreSet ) ); } //------------------------------------------------------------------ -USHORT* __EXPORT ScHeaderPage::GetRanges() +USHORT* ScHeaderPage::GetRanges() { return SvxHeaderPage::GetRanges(); } @@ -314,14 +314,14 @@ ScFooterPage::ScFooterPage( Window* pParent, const SfxItemSet& rSet ) //------------------------------------------------------------------ -SfxTabPage* __EXPORT ScFooterPage::Create( Window* pParent, const SfxItemSet& rCoreSet ) +SfxTabPage* ScFooterPage::Create( Window* pParent, const SfxItemSet& rCoreSet ) { return ( new ScFooterPage( pParent, rCoreSet ) ); } //------------------------------------------------------------------ -USHORT* __EXPORT ScFooterPage::GetRanges() +USHORT* ScFooterPage::GetRanges() { return SvxHeaderPage::GetRanges(); } diff --git a/sc/source/ui/pagedlg/tphf.src b/sc/source/ui/pagedlg/tphf.src index b2f59e06da72..d6cda1047cc1 100644 --- a/sc/source/ui/pagedlg/tphf.src +++ b/sc/source/ui/pagedlg/tphf.src @@ -26,6 +26,7 @@ ************************************************************************/ #include "sc.hrc" + PushButton RID_SCBTN_HFEDIT { TabStop = TRUE ; @@ -34,31 +35,3 @@ PushButton RID_SCBTN_HFEDIT Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~Edit..." ; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/pagedlg/tphfedit.cxx b/sc/source/ui/pagedlg/tphfedit.cxx index 52d8d7cad040..5f901b9a4ddd 100644 --- a/sc/source/ui/pagedlg/tphfedit.cxx +++ b/sc/source/ui/pagedlg/tphfedit.cxx @@ -130,7 +130,7 @@ ScEditWindow::ScEditWindow( Window* pParent, const ResId& rResId, ScEditWindowLo // ----------------------------------------------------------------------- -__EXPORT ScEditWindow::~ScEditWindow() +ScEditWindow::~ScEditWindow() { // delete Accessible object before deleting EditEngine and EditView if (pAcc) @@ -153,7 +153,7 @@ void ScEditWindow::SetNumType(SvxNumType eNumType) // ----------------------------------------------------------------------- -EditTextObject* __EXPORT ScEditWindow::CreateTextObject() +EditTextObject* ScEditWindow::CreateTextObject() { // wegen #38841# die Absatzattribute zuruecksetzen // (GetAttribs beim Format-Dialog-Aufruf gibt immer gesetzte Items zurueck) @@ -237,7 +237,7 @@ void ScEditWindow::SetCharAttriutes() // ----------------------------------------------------------------------- -void __EXPORT ScEditWindow::Paint( const Rectangle& rRec ) +void ScEditWindow::Paint( const Rectangle& rRec ) { const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings(); Color aBgColor = rStyleSettings.GetWindowColor(); @@ -253,14 +253,14 @@ void __EXPORT ScEditWindow::Paint( const Rectangle& rRec ) // ----------------------------------------------------------------------- -void __EXPORT ScEditWindow::MouseMove( const MouseEvent& rMEvt ) +void ScEditWindow::MouseMove( const MouseEvent& rMEvt ) { pEdView->MouseMove( rMEvt ); } // ----------------------------------------------------------------------- -void __EXPORT ScEditWindow::MouseButtonDown( const MouseEvent& rMEvt ) +void ScEditWindow::MouseButtonDown( const MouseEvent& rMEvt ) { if ( !HasFocus() ) GrabFocus(); @@ -270,14 +270,14 @@ void __EXPORT ScEditWindow::MouseButtonDown( const MouseEvent& rMEvt ) // ----------------------------------------------------------------------- -void __EXPORT ScEditWindow::MouseButtonUp( const MouseEvent& rMEvt ) +void ScEditWindow::MouseButtonUp( const MouseEvent& rMEvt ) { pEdView->MouseButtonUp( rMEvt ); } // ----------------------------------------------------------------------- -void __EXPORT ScEditWindow::KeyInput( const KeyEvent& rKEvt ) +void ScEditWindow::KeyInput( const KeyEvent& rKEvt ) { USHORT nKey = rKEvt.GetKeyCode().GetModifier() + rKEvt.GetKeyCode().GetCode(); @@ -301,7 +301,7 @@ void ScEditWindow::Command( const CommandEvent& rCEvt ) // ----------------------------------------------------------------------- -void __EXPORT ScEditWindow::GetFocus() +void ScEditWindow::GetFocus() { pActiveEdWnd = this; @@ -314,7 +314,7 @@ void __EXPORT ScEditWindow::GetFocus() pAcc = NULL; } -void __EXPORT ScEditWindow::LoseFocus() +void ScEditWindow::LoseFocus() { ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > xTemp = xAcc; if (xTemp.is() && pAcc) @@ -336,19 +336,16 @@ void __EXPORT ScEditWindow::LoseFocus() case Left: { sName = String(ScResId(STR_ACC_LEFTAREA_NAME)); -// sDescription = String(ScResId(STR_ACC_LEFTAREA_DESCR)); } break; case Center: { sName = String(ScResId(STR_ACC_CENTERAREA_NAME)); -// sDescription = String(ScResId(STR_ACC_CENTERAREA_DESCR)); } break; case Right: { sName = String(ScResId(STR_ACC_RIGHTAREA_NAME)); -// sDescription = String(ScResId(STR_ACC_RIGHTAREA_DESCR)); } break; } @@ -359,38 +356,6 @@ void __EXPORT ScEditWindow::LoseFocus() return pAcc; } -/* -class ScExtIButton : public ImageButton -{ -private: - - Timer aTimer; - ScPopupMenu* pPopupMenu; - - DECL_LINK( TimerHdl, Timer*); - - void DrawArrow(); - -protected: - - virtual void MouseButtonDown( const MouseEvent& rMEvt ); - virtual void MouseButtonUp( const MouseEvent& rMEvt); - - virtual void StartPopup(); - -public: - - ScExtIButton(Window* pParent, const ResId& rResId ); - - void SetPopupMenu(ScPopupMenu* pPopUp); - - USHORT GetSelected(); - - void SetMenuHdl( const Link& rLink ) { aFxLink = rLink; } - const Link& GetMenuHdl() const { return aFxLink; } - -} -*/ ScExtIButton::ScExtIButton(Window* pParent, const ResId& rResId ) : ImageButton(pParent,rResId), pPopupMenu(NULL) @@ -398,8 +363,6 @@ ScExtIButton::ScExtIButton(Window* pParent, const ResId& rResId ) nSelected=0; aTimer.SetTimeout(600); SetDropDown( TRUE); - -// DrawArrow(); } void ScExtIButton::SetPopupMenu(ScPopupMenu* pPopUp) @@ -474,94 +437,5 @@ IMPL_LINK( ScExtIButton, TimerHdl, Timer*, EMPTYARG ) return 0; } -/* -static void ImplDrawToolArrow( ToolBox* pBox, long nX, long nY, BOOL bBlack, - BOOL bLeft = FALSE, BOOL bTop = FALSE ) -{ - Color aOldFillColor = pBox->GetFillColor(); - WindowAlign eAlign = pBox->meAlign; - if ( bLeft ) - eAlign = WINDOWALIGN_RIGHT; - else if ( bTop ) - eAlign = WINDOWALIGN_BOTTOM; - - switch ( eAlign ) - { - case WINDOWALIGN_LEFT: - if ( bBlack ) - pBox->SetFillColor( Color( COL_BLACK ) ); - pBox->DrawRect( Rectangle( nX+0, nY+0, nX+0, nY+6 ) ); - pBox->DrawRect( Rectangle( nX+1, nY+1, nX+1, nY+5 ) ); - pBox->DrawRect( Rectangle( nX+2, nY+2, nX+2, nY+4 ) ); - pBox->DrawRect( Rectangle( nX+3, nY+3, nX+3, nY+3 ) ); - if ( bBlack ) - { - pBox->SetFillColor( aOldFillColor ); - pBox->DrawRect( Rectangle( nX+1, nY+2, nX+1, nY+4 ) ); - pBox->DrawRect( Rectangle( nX+2, nY+3, nX+2, nY+3 ) ); - } - break; - case WINDOWALIGN_TOP: - if ( bBlack ) - pBox->SetFillColor( Color( COL_BLACK ) ); - pBox->DrawRect( Rectangle( nX+0, nY+0, nX+6, nY+0 ) ); - pBox->DrawRect( Rectangle( nX+1, nY+1, nX+5, nY+1 ) ); - pBox->DrawRect( Rectangle( nX+2, nY+2, nX+4, nY+2 ) ); - pBox->DrawRect( Rectangle( nX+3, nY+3, nX+3, nY+3 ) ); - if ( bBlack ) - { - pBox->SetFillColor( aOldFillColor ); - pBox->DrawRect( Rectangle( nX+2, nY+1, nX+4, nY+1 ) ); - pBox->DrawRect( Rectangle( nX+3, nY+2, nX+3, nY+2 ) ); - } - break; - case WINDOWALIGN_RIGHT: - if ( bBlack ) - pBox->SetFillColor( Color( COL_BLACK ) ); - pBox->DrawRect( Rectangle( nX+3, nY+0, nX+3, nY+6 ) ); - pBox->DrawRect( Rectangle( nX+2, nY+1, nX+2, nY+5 ) ); - pBox->DrawRect( Rectangle( nX+1, nY+2, nX+1, nY+4 ) ); - pBox->DrawRect( Rectangle( nX+0, nY+3, nX+0, nY+3 ) ); - if ( bBlack ) - { - pBox->SetFillColor( aOldFillColor ); - pBox->DrawRect( Rectangle( nX+2, nY+2, nX+2, nY+4 ) ); - pBox->DrawRect( Rectangle( nX+1, nY+3, nX+1, nY+3 ) ); - } - break; - case WINDOWALIGN_BOTTOM: - if ( bBlack ) - pBox->SetFillColor( Color( COL_BLACK ) ); - pBox->DrawRect( Rectangle( nX+0, nY+3, nX+6, nY+3 ) ); - pBox->DrawRect( Rectangle( nX+1, nY+2, nX+5, nY+2 ) ); - pBox->DrawRect( Rectangle( nX+2, nY+1, nX+4, nY+1 ) ); - pBox->DrawRect( Rectangle( nX+3, nY+0, nX+3, nY+0 ) ); - if ( bBlack ) - { - pBox->SetFillColor( aOldFillColor ); - pBox->DrawRect( Rectangle( nX+2, nY+2, nX+4, nY+2 ) ); - pBox->DrawRect( Rectangle( nX+3, nY+1, nX+3, nY+1 ) ); - } - break; - } -} -Down - - Timer starten - -Click - - Timer abbrechen - -Timer - if ( ??? ) - { - - SetPressed( TRUE ); - - EndSelection(); - - Menu anzeigen - - SetPressed( FALSE ); - } - - -*/ - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/pagedlg/tptable.cxx b/sc/source/ui/pagedlg/tptable.cxx index a85ef657a3e1..56a37f438717 100644 --- a/sc/source/ui/pagedlg/tptable.cxx +++ b/sc/source/ui/pagedlg/tptable.cxx @@ -126,10 +126,8 @@ ScTablePage::ScTablePage( Window* pParent, const SfxItemSet& rCoreAttrs ) : aBtnTopDown ( this, ScResId( BTN_TOPDOWN ) ), aBtnLeftRight ( this, ScResId( BTN_LEFTRIGHT ) ), aBmpPageDir ( this, ScResId( BMP_PAGEDIR ) ), - aImgLeftRight ( ScResId( IMG_LEFTRIGHT ) ), - aImgTopDown ( ScResId( IMG_TOPDOWN ) ), - aImgLeftRightHC ( ScResId( IMG_LEFTRIGHT_H ) ), - aImgTopDownHC ( ScResId( IMG_TOPDOWN_H ) ), + aImgLeftRight ( ScResId( IMG_LEFTRIGHT ) ), + aImgTopDown ( ScResId( IMG_TOPDOWN ) ), aBtnPageNo ( this, ScResId( BTN_PAGENO ) ), aEdPageNo ( this, ScResId( ED_PAGENO ) ), aFlPrint ( this, ScResId( FL_PRINT ) ), @@ -169,11 +167,8 @@ ScTablePage::ScTablePage( Window* pParent, const SfxItemSet& rCoreAttrs ) : void ScTablePage::ShowImage() { - bool bHC = GetSettings().GetStyleSettings().GetHighContrastMode(); bool bLeftRight = aBtnLeftRight.IsChecked(); - aBmpPageDir.SetImage( bHC ? - (bLeftRight ? aImgLeftRightHC : aImgTopDownHC) : - (bLeftRight ? aImgLeftRight : aImgTopDown) ); + aBmpPageDir.SetImage( (bLeftRight ? aImgLeftRight : aImgTopDown) ); } // ----------------------------------------------------------------------- diff --git a/sc/source/ui/src/attrdlg.src b/sc/source/ui/src/attrdlg.src index ae130f7e8a96..bcdf62261fc2 100644 --- a/sc/source/ui/src/attrdlg.src +++ b/sc/source/ui/src/attrdlg.src @@ -162,42 +162,3 @@ TabPage RID_SCPAGE_PROTECTION Text [ en-US ] = "Print" ; }; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/src/autofmt.src b/sc/source/ui/src/autofmt.src index cb56f6ac85a4..98261b94ef15 100644 --- a/sc/source/ui/src/autofmt.src +++ b/sc/source/ui/src/autofmt.src @@ -169,8 +169,6 @@ ModalDialog RID_SCDLG_AUTOFORMAT String STR_ADD_TITLE { /* ### ACHTUNG: Neuer Text in Resource? AutoFormat hinzufgen : Autoformat hinzufgen */ - /* ### ACHTUNG: Neuer Text in Resource? AutoFormat hinzufgen : Autoformat hinzufgen */ - /* ### ACHTUNG: Neuer Text in Resource? AutoFormat hinzufgen : AutoFormat hinzufgen */ Text [ en-US ] = "Add AutoFormat" ; }; @@ -229,43 +227,3 @@ ModalDialog RID_SCDLG_AUTOFORMAT Text [ en-US ] = "Total" ; }; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/src/condfrmt.src b/sc/source/ui/src/condfrmt.src index 3018cc867e0d..cacfef8298e6 100644 --- a/sc/source/ui/src/condfrmt.src +++ b/sc/source/ui/src/condfrmt.src @@ -26,6 +26,7 @@ ************************************************************************/ #include "condfrmt.hrc" + ModelessDialog RID_SCDLG_CONDFORMAT { OutputSize = TRUE ; @@ -72,6 +73,8 @@ ModelessDialog RID_SCDLG_CONDFORMAT < "not equal to" ; Default ; > ; < "between" ; Default ; > ; < "not between" ; Default ; > ; + < "duplicated values" ; Default ; > ; + < "non duplicated values" ; Default ; > ; }; }; Edit EDT_COND1_1 @@ -174,6 +177,8 @@ ModelessDialog RID_SCDLG_CONDFORMAT < "not equal to" ; Default ; > ; < "between" ; Default ; > ; < "not between" ; Default ; > ; + < "duplicated values" ; Default ; > ; + < "non duplicated values" ; Default ; > ; }; }; Edit EDT_COND2_1 @@ -276,6 +281,8 @@ ModelessDialog RID_SCDLG_CONDFORMAT < "not equal to" ; Default ; > ; < "between" ; Default ; > ; < "not between" ; Default ; > ; + < "duplicated values" ; Default ; > ; + < "non duplicated values" ; Default ; > ; }; }; Edit EDT_COND3_1 @@ -357,42 +364,3 @@ ModelessDialog RID_SCDLG_CONDFORMAT }; Text [ en-US ] = "Conditional Formatting" ; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/src/crnrdlg.src b/sc/source/ui/src/crnrdlg.src index b16a3506bf7b..f3560abede75 100644 --- a/sc/source/ui/src/crnrdlg.src +++ b/sc/source/ui/src/crnrdlg.src @@ -25,6 +25,7 @@ * ************************************************************************/ #include "crnrdlg.hrc" + ModelessDialog RID_SCDLG_COLROWNAMERANGES { OutputSize = TRUE ; @@ -131,36 +132,3 @@ ModelessDialog RID_SCDLG_COLROWNAMERANGES }; Text [ en-US ] = "Define Label Range" ; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/src/dbnamdlg.src b/sc/source/ui/src/dbnamdlg.src index 50152d95d9d5..c88491341310 100644 --- a/sc/source/ui/src/dbnamdlg.src +++ b/sc/source/ui/src/dbnamdlg.src @@ -175,24 +175,3 @@ ModelessDialog RID_SCDLG_DBNAMES Text [ en-US ] = "Invalid range" ; }; }; - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/src/globstr.src b/sc/source/ui/src/globstr.src index a3fd6d5b7116..9c5caaee81d1 100644 --- a/sc/source/ui/src/globstr.src +++ b/sc/source/ui/src/globstr.src @@ -27,8 +27,6 @@ #include "globstr.hrc" #include "sc.hrc" - - Resource RID_GLOBSTR { String STR_UNDO_INSERTCELLS diff --git a/sc/source/ui/src/hdrcont.src b/sc/source/ui/src/hdrcont.src index e4a82d38ec98..91d83fb3aa13 100644 --- a/sc/source/ui/src/hdrcont.src +++ b/sc/source/ui/src/hdrcont.src @@ -217,40 +217,3 @@ Menu RID_POPUP_COLHEADER }; }; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/src/miscdlgs.src b/sc/source/ui/src/miscdlgs.src index 6d4761c8589c..6da360c708dd 100644 --- a/sc/source/ui/src/miscdlgs.src +++ b/sc/source/ui/src/miscdlgs.src @@ -90,6 +90,7 @@ ModalDialog RID_SCDLG_DELCELL Text [ en-US ] = "Selection" ; }; }; + ModalDialog RID_SCDLG_INSCELL { OutputSize = TRUE ; @@ -432,73 +433,140 @@ ModalDialog RID_SCDLG_INSCONT Size = MAP_APPFONT( 1 , 38 ) ; }; }; + ModalDialog RID_SCDLG_MOVETAB { OutputSize = TRUE ; HelpId = FID_TAB_MOVE ; SVLook = TRUE ; - Size = MAP_APPFONT ( 168 , 130 ) ; + Size = MAP_APPFONT ( 158 , 236 ) ; Text [ en-US ] = "Move/Copy Sheet" ; Moveable = TRUE ; Closeable = FALSE ; OKButton BTN_OK { - Pos = MAP_APPFONT ( 112 , 6 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; + Pos = MAP_APPFONT ( 66 , 216 ) ; + Size = MAP_APPFONT ( 42 , 14 ) ; TabStop = TRUE ; DefButton = TRUE ; }; CancelButton BTN_CANCEL { - Pos = MAP_APPFONT ( 112 , 23 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; + Pos = MAP_APPFONT ( 110 , 216 ) ; + Size = MAP_APPFONT ( 42 , 14 ) ; TabStop = TRUE ; }; HelpButton BTN_HELP { - Pos = MAP_APPFONT ( 112 , 43 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; + Pos = MAP_APPFONT ( 6 , 216 ) ; + Size = MAP_APPFONT ( 42 , 14 ) ; TabStop = TRUE ; }; - FixedText FT_DEST + FixedLine FL_SEP1 + { + Pos = MAP_APPFONT ( 0 , 208 ) ; + Size = MAP_APPFONT (168 , 4 ) ; + }; + FixedLine FL_ACTION { Pos = MAP_APPFONT ( 6 , 6 ) ; + Size = MAP_APPFONT ( 146 , 8 ) ; + Text [ en-US ] = "Action" ; + }; + RadioButton BTN_MOVE + { + Pos = MAP_APPFONT ( 12 , 17 ) ; + Size = MAP_APPFONT ( 114 , 10 ) ; + Text [ en-US ] = "~Move" ; + TabStop = TRUE ; + }; + RadioButton BTN_COPY + { + Pos = MAP_APPFONT ( 12 , 30 ) ; + Size = MAP_APPFONT ( 114 , 10 ) ; + Text [ en-US ] = "~Copy" ; + TabStop = TRUE ; + }; + FixedLine FL_LOCATION + { + Pos = MAP_APPFONT ( 6 , 43 ) ; + Size = MAP_APPFONT ( 146 , 8 ) ; + Text [ en-US ] = "Location" ; + }; + FixedText FT_DEST + { + Pos = MAP_APPFONT ( 12 , 54 ) ; Size = MAP_APPFONT ( 100 , 8 ) ; Text [ en-US ] = "To ~document" ; }; ListBox LB_DEST { Border = TRUE ; - Pos = MAP_APPFONT ( 6 , 17 ) ; - Size = MAP_APPFONT ( 100 , 60 ) ; + Pos = MAP_APPFONT ( 12 , 65 ) ; + Size = MAP_APPFONT ( 134 , 60 ) ; TabStop = TRUE ; DropDown = TRUE ; }; FixedText FT_INSERT { - Pos = MAP_APPFONT ( 6 , 35 ) ; + Pos = MAP_APPFONT ( 12 , 83 ) ; Size = MAP_APPFONT ( 100 , 8 ) ; Text [ en-US ] = "~Insert before" ; }; ListBox LB_INSERT { Border = TRUE ; - Pos = MAP_APPFONT ( 6 , 46 ) ; - Size = MAP_APPFONT ( 100 , 62 ) ; + Pos = MAP_APPFONT ( 12 , 93 ) ; + Size = MAP_APPFONT ( 134 , 62 ) ; TabStop = TRUE ; }; - CheckBox BTN_COPY + FixedLine FL_NAME { - Pos = MAP_APPFONT ( 6 , 114 ) ; - Size = MAP_APPFONT ( 100 , 10 ) ; - Text [ en-US ] = "~Copy" ; + Pos = MAP_APPFONT ( 6 , 162 ) ; + Size = MAP_APPFONT ( 146 , 8 ) ; + Text [ en-US ] = "Name" ; + }; + FixedText FT_TABNAME + { + Pos = MAP_APPFONT ( 12 , 173 ) ; + Size = MAP_APPFONT ( 100 , 8 ) ; + Text [ en-US ] = "New ~name" ; + }; + Edit ED_INPUT + { + Border = TRUE ; + Pos = MAP_APPFONT ( 12 , 183 ) ; + Size = MAP_APPFONT ( 134 , 12 ) ; TabStop = TRUE ; }; + FixedText FT_TABNAME_WARN + { + Pos = MAP_APPFONT ( 12 , 197 ) ; + Size = MAP_APPFONT ( 134 , 8 ) ; + Text [ en-US ] = "..." ; + }; + String STR_CURRENTDOC + { + Text [ en-US ] = "(current document)" ; + }; String STR_NEWDOC { Text [ en-US ] = "- new document -" ; }; + String STR_TABNAME_WARN_USED + { + Text [ en-US ] = "This name is already used." ; + }; + String STR_TABNAME_WARN_EMPTY + { + Text [ en-US ] = "Name is empty." ; + }; + String STR_TABNAME_WARN_INVALID + { + Text [ en-US ] = "Name contains one or more invalid characters." ; + }; }; + ModalDialog RID_SCDLG_STRINPUT { OutputSize = TRUE ; @@ -538,6 +606,7 @@ ModalDialog RID_SCDLG_STRINPUT Size = MAP_APPFONT ( 110 , 8 ) ; }; }; + ModalDialog RID_SCDLG_TAB_BG_COLOR { OutputSize = TRUE ; @@ -582,105 +651,6 @@ ModalDialog RID_SCDLG_TAB_BG_COLOR DefButton = FALSE ; }; }; -/* -ModalDialog RID_SCDLG_TAB_BG_COLOR -{ - OutputSize = TRUE ; - SVLook = TRUE ; - Size = MAP_APPFONT ( 180 , 150 ) ; - Moveable = TRUE ; - Closeable = TRUE ; - Control TAB_BG_COLOR_CT_BORDER - { - Border = TRUE ; - Pos = MAP_APPFONT ( 1 , 1 ) ; //12, 32 - Size = MAP_APPFONT ( 116+2 , 145+2 ) ; - DialogControl = TRUE; - }; - Control TAB_BG_COLOR_SET_BGDCOLOR - { - // * HelpId = HID_BACKGROUND_CTL_BGDCOLORSET ; - Hide = FALSE ; - Pos = MAP_APPFONT ( 0 , 0 ) ; - Size = MAP_APPFONT ( 116 , 145 ) ; - TabStop = TRUE ; - }; - OKButton BTN_OK - { - Pos = MAP_APPFONT ( 125 , 50 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - DefButton = TRUE ; - }; - CancelButton BTN_CANCEL - { - Pos = MAP_APPFONT ( 125 , 67 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - DefButton = FALSE ; - }; - HelpButton BTN_HELP - { - Pos = MAP_APPFONT ( 125 , 84 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - DefButton = FALSE ; - }; -}; -*/ -/* -ModalDialog RID_SCDLG_MTRINPUT -{ - OutputSize = TRUE ; - SVLook = TRUE ; - Size = MAP_APPFONT ( 190 , 63 ) ; - Moveable = TRUE ; - Closeable = FALSE ; - OKButton BTN_OK - { - Pos = MAP_APPFONT ( 136 , 6 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - DefButton = TRUE ; - }; - CancelButton BTN_CANCEL - { - Pos = MAP_APPFONT ( 136 , 23 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - HelpButton BTN_HELP - { - Pos = MAP_APPFONT ( 136 , 43 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - FixedText FT_LABEL - { - Pos = MAP_APPFONT ( 6 , 8 ) ; - Size = MAP_APPFONT ( 60 , 10 ) ; - }; - MetricField ED_VALUE - { - // HelpID, weil die generierten aus den Ableitungen nicht in die hid.lst kommen - HelpId = HID_SC_MTRIN_VAL ; - Border = TRUE ; - Pos = MAP_APPFONT ( 70 , 6 ) ; - Size = MAP_APPFONT ( 60 , 12 ) ; - TabStop = TRUE ; - Repeat = TRUE ; - Spin = TRUE ; - }; - CheckBox BTN_DEFVAL - { - // HelpID, weil die generierten aus den Ableitungen nicht in die hid.lst kommen - TabStop = TRUE ; - Pos = MAP_APPFONT ( 70 , 24 ) ; - Size = MAP_APPFONT ( 58 , 10 ) ; - Text [ en-US ] = "~Default value" ; - }; -}; -*/ ModalDialog RID_SCDLG_COL_MAN { @@ -1458,6 +1428,3 @@ ModalDialog RID_SCDLG_CHARTCOLROW }; Text [ en-US ] = "Change Source Data Range" ; }; - - - diff --git a/sc/source/ui/src/opredlin.src b/sc/source/ui/src/opredlin.src index a8c2daf4892a..86a5fc6498d4 100644 --- a/sc/source/ui/src/opredlin.src +++ b/sc/source/ui/src/opredlin.src @@ -97,40 +97,3 @@ TabPage RID_SCPAGE_OPREDLINE Text [ en-US ] = "By author" ; }; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/src/optdlg.src b/sc/source/ui/src/optdlg.src index 39fae40428e3..dcdc1adaabdb 100644 --- a/sc/source/ui/src/optdlg.src +++ b/sc/source/ui/src/optdlg.src @@ -114,11 +114,6 @@ TabPage RID_SCPAGE_CALC Size = MAP_APPFONT ( 121 , 8 ) ; Text [ en-US ] = "Date" ; }; - FixedLine FL_H_SEPARATOR - { - Pos = MAP_APPFONT ( 6 , 64 ) ; - Size = MAP_APPFONT ( 248 , 8 ) ; - }; CheckBox BTN_CASE { Pos = MAP_APPFONT ( 12 , 77 ) ; diff --git a/sc/source/ui/src/optsolver.src b/sc/source/ui/src/optsolver.src index 2fc5cf3a3c54..5ce6fa724475 100644 --- a/sc/source/ui/src/optsolver.src +++ b/sc/source/ui/src/optsolver.src @@ -402,8 +402,6 @@ ModelessDialog RID_SCDLG_OPTSOLVER DefButton = TRUE ; }; - // IMG_DEL_H not used - image is set dynamically - String STR_INVALIDINPUT { Text [ en-US ] = "Invalid input." ; diff --git a/sc/source/ui/src/pseudo.src b/sc/source/ui/src/pseudo.src index e3d27edf0ecb..73f78d1be0b8 100644 --- a/sc/source/ui/src/pseudo.src +++ b/sc/source/ui/src/pseudo.src @@ -25,38 +25,4 @@ * ************************************************************************/ - - - - - - - - - - - - - - - - #include <svx/svxids.hrc> - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/src/sc.src b/sc/source/ui/src/sc.src index dae422e15cd0..62da4f53488b 100644 --- a/sc/source/ui/src/sc.src +++ b/sc/source/ui/src/sc.src @@ -27,8 +27,6 @@ #include "sc.hrc" // -> #include <sfx.hrc> - - // App-Titel------------------------------------------------------ String RID_APPTITLE @@ -41,8 +39,6 @@ String RID_APPTITLE // Icons & Bitmaps: ---------------------------------------------------------- - - // ??? String 30001 { Text = "Dummy1" ; }; String 30002 { Text = "Dummy2" ; }; diff --git a/sc/source/ui/src/scerrors.src b/sc/source/ui/src/scerrors.src index bdb76b2b710c..2a2e2ad47169 100644 --- a/sc/source/ui/src/scerrors.src +++ b/sc/source/ui/src/scerrors.src @@ -132,7 +132,7 @@ Resource RID_ERRHDLSC }; String SCWARN_IMPORT_SHEET_OVERFLOW & ERRCODE_RES_MASK { - Text [ en-US ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded." ; + Text [ en-US ] = "Not all sheets have been loaded because the maximum number of sheets was exceeded.\n\nPlease be warned that re-saving this document will permanently delete those sheets that have not been loaded!" ; }; String SCWARN_IMPORT_OPEN_FM3 & ERRCODE_RES_MASK { @@ -167,4 +167,3 @@ Resource RID_ERRHDLSC Text [ en-US ] = "Format error discovered in the file in sub-document $(ARG1) at $(ARG2)(row,col)."; }; }; - diff --git a/sc/source/ui/src/scstring.src b/sc/source/ui/src/scstring.src index 9c47a42239cc..ac1458b66a61 100644 --- a/sc/source/ui/src/scstring.src +++ b/sc/source/ui/src/scstring.src @@ -24,6 +24,7 @@ * for a copy of the LGPLv3 License. * ************************************************************************/ + #include "sc.hrc" // -> #include <sfx.hrc> // Strings fuer Interface-Namen ------------------------------------------ @@ -32,38 +33,47 @@ String SCSTR_APPLICATION { Text [ en-US ] = "%PRODUCTNAME Calc 6.0"; }; + String SCSTR_50_APPLICATION { Text [ en-US ] = "StarCalc 5.0" ; }; + String SCSTR_40_APPLICATION { Text [ en-US ] = "StarCalc 4.0" ; }; + String SCSTR_30_APPLICATION { Text [ en-US ] = "StarCalc 3.0" ; }; + String SCSTR_LONG_SCDOC_NAME { Text [ en-US ] = "%PRODUCTNAME %PRODUCTVERSION Spreadsheet"; }; + String SCSTR_50_LONG_DOCNAME { Text [ en-US ] = "%PRODUCTNAME 5.0 Spreadsheet" ; }; + String SCSTR_40_LONG_DOCNAME { Text [ en-US ] = "%PRODUCTNAME 4.0 Spreadsheet" ; }; + String SCSTR_30_LONG_DOCNAME { Text [ en-US ] = "StarCalc 3.0 Spreadsheet" ; }; + String SCSTR_SHORT_SCDOC_NAME { Text [ en-US ] = "Spreadsheet" ; }; + String SCSTR_HUMAN_SCDOC_NAME { Text [ en-US ] = "Spreadsheet" ; @@ -89,7 +99,6 @@ String SCSTR_FORMATSHELL Text [ en-US ] = "Formats for Cells"; }; - String SCSTR_DRAWSHELL { Text [ en-US ] = "Graphics objects" ; @@ -119,6 +128,7 @@ String SCSTR_GRAPHICSHELL { Text [ en-US ] = "Graphics"; }; + String SCSTR_PAGEBREAKSHELL { Text [ en-US ] = "Pagebreak"; @@ -150,148 +160,182 @@ String STR_ROWHEIGHT { Text [ en-US ] = "Height" ; }; + String STR_OPT_ROWHEIGHT { Text [ en-US ] = "Add" ; }; + String STR_ROWHEIGHT_TITLE { Text [ en-US ] = "Row Height" ; }; + String STR_OPT_ROWHEIGHT_TITLE { Text [ en-US ] = "Optimal Row Height" ; }; + String STR_COLWIDTH { Text [ en-US ] = "Width" ; }; + String STR_OPT_COLWIDTH { Text [ en-US ] = "Add" ; }; + String STR_COLWIDTH_TITLE { Text [ en-US ] = "Column Width" ; }; + String STR_OPT_COLWIDTH_TITLE { Text [ en-US ] = "Optimal Column Width" ; }; + String SCSTR_UNDEFINED { Text [ en-US ] = "- undefined -" ; }; + String SCSTR_NONE { Text [ en-US ] = "- none -" ; }; + String SCSTR_EMPTY { Text [ en-US ] = "- empty -" ; }; + String SCSTR_NOTEMPTY { Text [ en-US ] = "- not empty -" ; }; + String SCSTR_NEWTABLE { Text [ en-US ] = "- new sheet -" ; }; + String SCSTR_ALL { Text [ en-US ] = "- all -" ; }; + String SCSTR_STDFILTER { Text [ en-US ] = "Standard Filter..." ; }; + String SCSTR_TOP10FILTER { Text [ en-US ] = "Top 10" ; }; + String SCSTR_NONAME { Text [ en-US ] = "unnamed" ; }; + String SCSTR_COLUMN { Text [ en-US ] = "Column" ; }; + String SCSTR_ROW { Text [ en-US ] = "Row" ; }; + String SCSTR_NEW { Text [ en-US ] = "~New" ; }; + String SCSTR_ADD { Text [ en-US ] = "~Add" ; }; + String SCSTR_REMOVE { Text [ en-US ] = "~Delete" ; }; + String SCSTR_CANCEL { Text [ en-US ] = "Cance~l" ; }; + String SCSTR_MODIFY { Text [ en-US ] = "Modif~y" ; }; - String SCSTR_SHOWTABLE { Text [ en-US ] = "Show Sheet" ; }; + String SCSTR_HIDDENTABLES { Text [ en-US ] = "Hidden Sheets" ; }; + String SCSTR_SELECTDB { Text [ en-US ] = "Select Database Range" ; }; + String SCSTR_AREAS { Text [ en-US ] = "Ranges" ; }; + String SCSTR_TABLE { Text [ en-US ] = "Sheet" ; }; + String SCSTR_NAME { Text [ en-US ] = "Name" ; }; + String SCSTR_INSTABLE { Text [ en-US ] = "Insert Sheet" ; }; + String SCSTR_APDTABLE { Text [ en-US ] = "Append Sheet" ; }; + String SCSTR_RENAMETAB { Text [ en-US ] = "Rename Sheet" ; }; + String SCSTR_SET_TAB_BG_COLOR { Text [ en-US ] = "Tab Color" ; }; + String SCSTR_NO_TAB_BG_COLOR { Text [ en-US ] = "Default" ; }; + String SCSTR_RENAMEOBJECT { Text [ en-US ] = "Name Object"; }; + String STR_INSERTGRAPHIC { Text [ en-US ] = "Insert Picture" ; @@ -303,50 +347,62 @@ String SCSTR_HOR_JUSTIFY_LEFT { Text [ en-US ] = "Align left" ; }; + String SCSTR_HOR_JUSTIFY_CENTER { Text [ en-US ] = "Centered horizontally" ; }; + String SCSTR_HOR_JUSTIFY_RIGHT { Text [ en-US ] = "Align right" ; }; + String SCSTR_HOR_JUSTIFY_BLOCK { Text [ en-US ] = "Justify" ; }; + String SCSTR_HOR_JUSTIFY_REPEAT { Text [ en-US ] = "Repeat alignment" ; }; + String SCSTR_HOR_JUSTIFY_STANDARD { Text [ en-US ] = "Horizontal alignment default" ; }; + String SCSTR_VER_JUSTIFY_TOP { Text [ en-US ] = "Align to top" ; }; + String SCSTR_VER_JUSTIFY_CENTER { Text [ en-US ] = "Centered vertically" ; }; + String SCSTR_VER_JUSTIFY_BOTTOM { Text [ en-US ] = "Align to bottom" ; }; + String SCSTR_VER_JUSTIFY_STANDARD { Text [ en-US ] = "Vertical alignment default" ; }; + String SCSTR_ORIENTATION_TOPBOTTOM { Text [ en-US ] = "Top to bottom" ; }; + String SCSTR_ORIENTATION_BOTTOMTOP { Text [ en-US ] = "Bottom to Top" ; }; + String SCSTR_ORIENTATION_STANDARD { Text [ en-US ] = "Default orientation" ; @@ -356,30 +412,37 @@ String SCSTR_PROTECTDOC { Text [ en-US ] = "Protect Document" ; }; + String SCSTR_UNPROTECTDOC { Text [ en-US ] = "Unprotect document" ; }; + String SCSTR_PROTECTTAB { Text [ en-US ] = "Protect Sheet" ; }; + String SCSTR_UNPROTECTTAB { Text [ en-US ] = "Unprotect sheet" ; }; + String SCSTR_CHG_PROTECT { Text [ en-US ] = "Protect Records" ; }; + String SCSTR_CHG_UNPROTECT { Text [ en-US ] = "Unprotect Records" ; }; + String SCSTR_PASSWORD { Text [ en-US ] = "Password:" ; }; + String SCSTR_PASSWORDOPT { Text [ en-US ] = "Password (optional):" ; @@ -455,18 +518,22 @@ String SCSTR_VALID_MINIMUM { Text [ en-US ] = "~Minimum" ; }; + String SCSTR_VALID_MAXIMUM { Text [ en-US ] = "~Maximum" ; }; + String SCSTR_VALID_VALUE { Text [ en-US ] = "~Value" ; }; + String SCSTR_VALID_RANGE { Text [ en-US ] = "~Source" ; }; + String SCSTR_VALID_LIST { Text [ en-US ] = "~Entries" ; @@ -505,26 +572,32 @@ String SCSTR_GRFILTER_OPENERROR { Text [ en-US ] = "Graphics file can not be opened" ; }; + String SCSTR_GRFILTER_IOERROR { Text [ en-US ] = "Graphics file can not be read" ; }; + String SCSTR_GRFILTER_FORMATERROR { Text [ en-US ] = "Unknown graphic format" ; }; + String SCSTR_GRFILTER_VERSIONERROR { Text [ en-US ] = "This graphic file version is not supported" ; }; + String SCSTR_GRFILTER_FILTERERROR { Text [ en-US ] = "Graphics filter not found" ; }; + String SCSTR_GRFILTER_TOOBIG { Text [ en-US ] = "Not enough memory available to insert graphics." ; }; + String SCSTR_UNDO_GRAFFILTER { Text [ en-US ] = "Graphics Filter" ; @@ -723,6 +796,11 @@ String STR_ACC_DATAPILOT_SEL_DESCR Text [ en-US ] = "Lists the fields that you can drag to one of the other three areas."; }; +String STR_ACC_DATAPILOT_PAGE_DESCR +{ + Text [ en-US ] = "Fields that you drop here will be available as filter lists at the top of the final DataPilot table."; +}; + String SCSTR_MEDIASHELL { Text [ en-US ] = "Media Playback"; @@ -769,3 +847,7 @@ StringArray SCSTR_PRINT_OPTIONS }; }; +String SCSTR_WARN_ME_IN_FUTURE_CHECK +{ + Text [ en-US ] = "Warn me about this in the future."; +}; diff --git a/sc/source/ui/src/scwarngs.src b/sc/source/ui/src/scwarngs.src index 9cd22567d77c..15792a596e46 100644 --- a/sc/source/ui/src/scwarngs.src +++ b/sc/source/ui/src/scwarngs.src @@ -28,8 +28,6 @@ #include "scwarngs.hxx" #include "sc.hrc" - - #define SH_MAX 0x7fff Resource RID_WRNHDLSC @@ -43,41 +41,4 @@ Resource RID_WRNHDLSC /* ### ACHTUNG: Neuer Text in Resource? Die Maximalanzahl von Zeilen wurde berschritten. berzhlige Zeilen wurden nicht mitimportiert! : Die Maximalanzahl von Zeilen wurde berschritten. berzhlige Zeilen wurden nicht mitimportiert! */ Text [ en-US ] = "The number of rows exceeded the maximum. Additional rows were not imported!" ; }; - /* - String ERRCODE_SC_ & SH_MAX - { - Text = ""; - }; -*/ }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/src/simpref.src b/sc/source/ui/src/simpref.src index 03f41c1a56aa..2c8dfd665fcb 100644 --- a/sc/source/ui/src/simpref.src +++ b/sc/source/ui/src/simpref.src @@ -26,16 +26,15 @@ ************************************************************************/ #include "simpref.hrc" + ModelessDialog RID_SCDLG_SIMPLEREF { OutputSize = TRUE ; - //HelpId = SID_DEFINE_DBNAME ; Hide = TRUE ; SVLook = TRUE ; Size = MAP_APPFONT ( 222 , 60 ) ; Text = "Bereich festlegen" ; Moveable = TRUE ; - // Closeable = TRUE; // Dieser Dialog hat einen Cancel-Button ! FixedText FT_ASSIGN { Pos = MAP_APPFONT ( 6 , 6 ) ; @@ -76,30 +75,3 @@ ModelessDialog RID_SCDLG_SIMPLEREF TabStop = TRUE ; }; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/src/solveroptions.src b/sc/source/ui/src/solveroptions.src index 0a3432344f35..87c75277f413 100644 --- a/sc/source/ui/src/solveroptions.src +++ b/sc/source/ui/src/solveroptions.src @@ -95,7 +95,6 @@ ModalDialog RID_SCDLG_SOLVEROPTIONS Text [ en-US ] = "Options" ; }; - ModalDialog RID_SCDLG_SOLVER_INTEGER { OutputSize = TRUE ; @@ -186,4 +185,3 @@ ModalDialog RID_SCDLG_SOLVER_DOUBLE }; Text [ en-US ] = "Edit Setting" ; }; - diff --git a/sc/source/ui/src/solvrdlg.src b/sc/source/ui/src/solvrdlg.src index 6a8a3d955644..2dc1a8ef01c1 100644 --- a/sc/source/ui/src/solvrdlg.src +++ b/sc/source/ui/src/solvrdlg.src @@ -26,6 +26,7 @@ ************************************************************************/ #include "solvrdlg.hrc" + ModelessDialog RID_SCDLG_SOLVER { OutputSize = TRUE ; diff --git a/sc/source/ui/src/sortdlg.src b/sc/source/ui/src/sortdlg.src index 1062eb58e1dc..3eb7e43585d0 100644 --- a/sc/source/ui/src/sortdlg.src +++ b/sc/source/ui/src/sortdlg.src @@ -25,6 +25,7 @@ * ************************************************************************/ #include "sortdlg.hrc" + TabPage RID_SCPAGE_SORT_FIELDS { Hide = TRUE ; @@ -116,6 +117,7 @@ TabPage RID_SCPAGE_SORT_FIELDS Text [ en-US ] = "T~hen by" ; }; }; + TabPage RID_SCPAGE_SORT_OPTIONS { Hide = TRUE ; @@ -158,7 +160,7 @@ TabPage RID_SCPAGE_SORT_OPTIONS Text [ de ] = "Enable ~natural sort" ; Text [ en-US ] = "Enable ~natural sort" ; Text [ cs ] = "Aktivovat přirozené třídění" ; - Text [ sk ] = "Aktivovať prirodzené triedenie" ; + Text [ sk ] = "Aktivovať prirodzené triedenie" ; TabStop = TRUE ; Text [ x-comment ] = " " ; }; @@ -250,15 +252,8 @@ TabPage RID_SCPAGE_SORT_OPTIONS Text [ en-US ] = "L~eft to right (sort columns)" ; TabStop = TRUE ; }; -/* - FixedText FT_AREA_LABEL - { - Pos = MAP_APPFONT ( 6 , 171 ) ; - Size = MAP_APPFONT ( 248 , 8 ) ; - Text [ en-US ] = "Data area:" ; - }; -*/ }; + TabDialog RID_SCDLG_SORT { OutputSize = TRUE ; diff --git a/sc/source/ui/src/subtdlg.src b/sc/source/ui/src/subtdlg.src index c0bcfba1b07b..1fe9bb0d777a 100644 --- a/sc/source/ui/src/subtdlg.src +++ b/sc/source/ui/src/subtdlg.src @@ -181,10 +181,12 @@ TabPage RID_SCPAGE_SUBT_GROUP1 < RID_SUBTBASE { HelpId = HID_SCPAGE_SUBT_GROUP1 ; }; + TabPage RID_SCPAGE_SUBT_GROUP2 < RID_SUBTBASE { HelpId = HID_SCPAGE_SUBT_GROUP2 ; }; + TabPage RID_SCPAGE_SUBT_GROUP3 < RID_SUBTBASE { HelpId = HID_SCPAGE_SUBT_GROUP3 ; @@ -237,55 +239,3 @@ TabDialog RID_SCDLG_SUBTOTALS TabStop = TRUE ; }; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/src/tabopdlg.src b/sc/source/ui/src/tabopdlg.src index 25af654f4147..e4f99ab59596 100644 --- a/sc/source/ui/src/tabopdlg.src +++ b/sc/source/ui/src/tabopdlg.src @@ -26,6 +26,7 @@ ************************************************************************/ #include "tabopdlg.hrc" + ModelessDialog RID_SCDLG_TABOP { OutputSize = TRUE ; diff --git a/sc/source/ui/src/textdlgs.src b/sc/source/ui/src/textdlgs.src index 2b0e408262ba..6b2321ad2017 100644 --- a/sc/source/ui/src/textdlgs.src +++ b/sc/source/ui/src/textdlgs.src @@ -25,8 +25,6 @@ * ************************************************************************/ - - #include <svx/dialogs.hrc> #include "sc.hrc" @@ -112,13 +110,6 @@ TabDialog RID_SCDLG_PARAGRAPH Text [ en-US ] = "Indents & Spacing" ; PageResID = RID_SVXPAGE_STD_PARAGRAPH ; }; - /* - PageItem { - Identifier = RID_SVXPAGE_EXT_PARAGRAPH; - Text [ en-US ] = "Paragraph (Extensions)"; - PageResID = RID_SVXPAGE_EXT_PARAGRAPH; - }; -*/ PageItem { Identifier = RID_SVXPAGE_ALIGN_PARAGRAPH ; @@ -165,33 +156,3 @@ TabDialog RID_SCDLG_PARAGRAPH TabStop = TRUE ; }; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/src/toolbox.src b/sc/source/ui/src/toolbox.src index 6e4b89e5faa0..2834917c4317 100644 --- a/sc/source/ui/src/toolbox.src +++ b/sc/source/ui/src/toolbox.src @@ -260,11 +260,11 @@ FloatingWindow RID_TBXCTL_INSOBJ #define DEFAULT_IDLIST \ IdList = { \ /* Eingabezeile */ \ - SID_INPUT_FUNCTION; /* 20047 */ \ - SID_INPUT_SUM; /* 20048 */ \ - SID_INPUT_EQUAL; /* 20049 */ \ - SID_INPUT_CANCEL; \ - SID_INPUT_OK; \ + SID_INPUT_FUNCTION; /* 26047 */ \ + SID_INPUT_SUM; /* 26048 */ \ + SID_INPUT_EQUAL; /* 26049 */ \ + SID_INPUT_CANCEL; /* 26050 */ \ + SID_INPUT_OK; /* 26051 */ \ }; \ IdCount = { \ 5; \ @@ -283,17 +283,3 @@ ImageList RID_DEFAULTIMAGELIST_LC MaskColor = STD_MASKCOLOR ; DEFAULT_IDLIST }; - -ImageList RID_DEFAULTIMAGELIST_SCH -{ - Prefix = "sch"; - MaskColor = SC_HC_MASKCOLOR ; - DEFAULT_IDLIST -}; - -ImageList RID_DEFAULTIMAGELIST_LCH -{ - Prefix = "lch"; - MaskColor = SC_HC_MASKCOLOR ; - DEFAULT_IDLIST -}; diff --git a/sc/source/ui/styleui/makefile.mk b/sc/source/ui/styleui/makefile.mk index ccbd2e14f34c..16cdb2e7b791 100644 --- a/sc/source/ui/styleui/makefile.mk +++ b/sc/source/ui/styleui/makefile.mk @@ -41,6 +41,9 @@ CXXFILES = \ styledlg.cxx SLOFILES = \ + $(EXCEPTIONSFILES) + +EXCEPTIONSFILES = \ $(SLO)$/styledlg.obj \ SRS1NAME=$(TARGET) diff --git a/sc/source/ui/styleui/scstyles.src b/sc/source/ui/styleui/scstyles.src index 1968b6dca877..b70db0e615e2 100644 --- a/sc/source/ui/styleui/scstyles.src +++ b/sc/source/ui/styleui/scstyles.src @@ -27,6 +27,7 @@ #include "sc.hrc" #include <svl/style.hrc> + #define IMPL_FAMILY(family,filter) \ StyleFamily = family; \ FilterList = { filter } @@ -43,14 +44,15 @@ SfxStyleFamilies DLG_STYLE_DESIGNER < STR_STYLE_FILTER_USED ; SFXSTYLEBIT_USED ; > ; < STR_STYLE_FILTER_USERDEF ; SFXSTYLEBIT_USERDEF ; > ; ) ; Text [ en-US ] = "Cell Styles" ; -}; + }; + SfxStyleFamilyItem { IMPL_FAMILY ( SFX_STYLE_FAMILY_PAGE , < STR_STYLE_FILTER_ALL ; SFXSTYLEBIT_ALL ; > ; < STR_STYLE_FILTER_USERDEF ; SFXSTYLEBIT_USERDEF ; > ; ) ; Text [ en-US ] = "Page Styles" ; -}; + }; }; // style family images are now taken from an ImageList @@ -60,11 +62,5 @@ SfxStyleFamilies DLG_STYLE_DESIGNER Prefix = "sf"; MaskColor = STD_MASKCOLOR ; IdList = { 1; 2; }; -}; - ImageList 2 // == BMP_COLOR_HIGHCONTRAST + 1 - { - Prefix = "sfh"; - MaskColor = SC_HC_MASKCOLOR ; - IdList = { 1; 2; }; -}; + }; }; diff --git a/sc/source/ui/styleui/styledlg.cxx b/sc/source/ui/styleui/styledlg.cxx index bc2d2f2dfdf0..fa3dc6485ec7 100644 --- a/sc/source/ui/styleui/styledlg.cxx +++ b/sc/source/ui/styleui/styledlg.cxx @@ -131,13 +131,13 @@ ScStyleDlg::ScStyleDlg( Window* pParent, // ----------------------------------------------------------------------- -__EXPORT ScStyleDlg::~ScStyleDlg() +ScStyleDlg::~ScStyleDlg() { } // ----------------------------------------------------------------------- -void __EXPORT ScStyleDlg::PageCreated( USHORT nPageId, SfxTabPage& rTabPage ) +void ScStyleDlg::PageCreated( USHORT nPageId, SfxTabPage& rTabPage ) { if ( nDlgRsc == RID_SCDLG_STYLES_PAR ) { @@ -206,7 +206,7 @@ void __EXPORT ScStyleDlg::PageCreated( USHORT nPageId, SfxTabPage& rTabPage ) // ----------------------------------------------------------------------- -const SfxItemSet* __EXPORT ScStyleDlg::GetRefreshedSet() +const SfxItemSet* ScStyleDlg::GetRefreshedSet() { SfxItemSet* pItemSet = GetInputSetImpl(); pItemSet->ClearItem(); diff --git a/sc/source/ui/styleui/styledlg.src b/sc/source/ui/styleui/styledlg.src index 4c862e21ebd0..5fac741b05cb 100644 --- a/sc/source/ui/styleui/styledlg.src +++ b/sc/source/ui/styleui/styledlg.src @@ -27,6 +27,7 @@ #include "sc.hrc" #include "styledlg.hrc" // -> TP_xxx + TabDialog RID_SCDLG_STYLES_PAR { OutputSize = TRUE ; @@ -86,6 +87,7 @@ TabDialog RID_SCDLG_STYLES_PAR }; }; }; + TabDialog RID_SCDLG_STYLES_PAGE { OutputSize = TRUE ; @@ -134,39 +136,3 @@ TabDialog RID_SCDLG_STYLES_PAGE }; }; }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sc/source/ui/undo/areasave.cxx b/sc/source/ui/undo/areasave.cxx index 9f2b4eb7f03c..56eb56508336 100644 --- a/sc/source/ui/undo/areasave.cxx +++ b/sc/source/ui/undo/areasave.cxx @@ -201,7 +201,6 @@ void ScAreaLinkSaveCollection::Restore( ScDocument* pDoc ) const } } -// static ScAreaLinkSaveCollection* ScAreaLinkSaveCollection::CreateFromDoc( const ScDocument* pDoc ) { ScAreaLinkSaveCollection* pColl = NULL; diff --git a/sc/source/ui/undo/makefile.mk b/sc/source/ui/undo/makefile.mk index 2b8dd60df32d..12c94fd32cc9 100644 --- a/sc/source/ui/undo/makefile.mk +++ b/sc/source/ui/undo/makefile.mk @@ -56,26 +56,23 @@ CXXFILES = \ SLOFILES = \ - $(SLO)$/target.obj \ - $(SLO)$/refundo.obj \ + $(EXCEPTIONSFILES) \ + $(SLO)$/target.obj + +EXCEPTIONSFILES= \ $(SLO)$/areasave.obj \ + $(SLO)$/refundo.obj \ $(SLO)$/undobase.obj \ - $(SLO)$/undoutil.obj \ - $(SLO)$/undocell.obj \ - $(SLO)$/undostyl.obj \ - $(SLO)$/undoolk.obj \ $(SLO)$/undoblk.obj \ $(SLO)$/undoblk2.obj \ $(SLO)$/undoblk3.obj \ + $(SLO)$/undocell.obj \ $(SLO)$/undodat.obj \ $(SLO)$/undodraw.obj \ - $(SLO)$/undotab.obj - -EXCEPTIONSFILES= \ - $(SLO)$/undoblk3.obj \ - $(SLO)$/undocell.obj \ - $(SLO)$/undostyl.obj \ - $(SLO)$/undotab.obj + $(SLO)$/undoolk.obj \ + $(SLO)$/undostyl.obj \ + $(SLO)$/undotab.obj \ + $(SLO)$/undoutil.obj # --- Tagets ------------------------------------------------------- diff --git a/sc/source/ui/undo/target.cxx b/sc/source/ui/undo/target.cxx index 492c18bebc9a..d652e3f8931a 100644 --- a/sc/source/ui/undo/target.cxx +++ b/sc/source/ui/undo/target.cxx @@ -41,7 +41,7 @@ TYPEINIT1(ScTabViewTarget, SfxRepeatTarget); -__EXPORT ScTabViewTarget::~ScTabViewTarget() +ScTabViewTarget::~ScTabViewTarget() { } diff --git a/sc/source/ui/undo/undobase.cxx b/sc/source/ui/undo/undobase.cxx index e1d7c65c5072..240dba0a5c7d 100644 --- a/sc/source/ui/undo/undobase.cxx +++ b/sc/source/ui/undo/undobase.cxx @@ -62,12 +62,12 @@ ScSimpleUndo::ScSimpleUndo( ScDocShell* pDocSh ) : { } -__EXPORT ScSimpleUndo::~ScSimpleUndo() +ScSimpleUndo::~ScSimpleUndo() { delete pDetectiveUndo; } -BOOL __EXPORT ScSimpleUndo::Merge( SfxUndoAction *pNextAction ) +BOOL ScSimpleUndo::Merge( SfxUndoAction *pNextAction ) { // Zu jeder Undo-Action kann eine SdrUndoGroup fuer das Aktualisieren // der Detektiv-Pfeile gehoeren. @@ -145,14 +145,14 @@ void ScSimpleUndo::EndRedo() pDocShell->SetInUndo( FALSE ); } -void ScSimpleUndo::ShowTable( SCTAB nTab ) // static +void ScSimpleUndo::ShowTable( SCTAB nTab ) { ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell(); if (pViewShell) pViewShell->SetTabNo( nTab ); } -void ScSimpleUndo::ShowTable( const ScRange& rRange ) // static +void ScSimpleUndo::ShowTable( const ScRange& rRange ) { ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell(); if (pViewShell) @@ -177,7 +177,7 @@ ScBlockUndo::ScBlockUndo( ScDocShell* pDocSh, const ScRange& rRange, pDrawUndo = GetSdrUndoAction( pDocShell->GetDocument() ); } -__EXPORT ScBlockUndo::~ScBlockUndo() +ScBlockUndo::~ScBlockUndo() { DeleteSdrUndoAction( pDrawUndo ); } @@ -200,13 +200,6 @@ void ScBlockUndo::EndUndo() ScSimpleUndo::EndUndo(); } -/* -void ScBlockUndo::BeginRedo() -{ - ScSimpleUndo::BeginRedo(); -} -*/ - void ScBlockUndo::EndRedo() { if (eMode == SC_UNDO_AUTOHEIGHT) @@ -286,7 +279,7 @@ ScMoveUndo::ScMoveUndo( ScDocShell* pDocSh, ScDocument* pRefDoc, ScRefUndoData* pDrawUndo = GetSdrUndoAction( pDoc ); } -__EXPORT ScMoveUndo::~ScMoveUndo() +ScMoveUndo::~ScMoveUndo() { delete pRefUndoData; delete pRefUndoDoc; @@ -317,7 +310,6 @@ void ScMoveUndo::BeginUndo() void ScMoveUndo::EndUndo() { - //@17.12.97 Reihenfolge der Fkt.s geaendert DoSdrUndoAction( pDrawUndo, pDocShell->GetDocument() ); // #125875# must also be called when pointer is null if (pRefUndoDoc && eMode == SC_UNDO_REFLAST) @@ -328,20 +320,6 @@ void ScMoveUndo::EndUndo() ScSimpleUndo::EndUndo(); } -/* -void ScMoveUndo::BeginRedo() -{ - ScSimpleUndo::BeginRedo(); -} -*/ - -/* -void ScMoveUndo::EndRedo() -{ - ScSimpleUndo::EndRedo(); -} -*/ - // ----------------------------------------------------------------------- ScDBFuncUndo::ScDBFuncUndo( ScDocShell* pDocSh, const ScRange& rOriginal, SdrUndoAction* pDrawUndo ) : diff --git a/sc/source/ui/undo/undoblk.cxx b/sc/source/ui/undo/undoblk.cxx index eda49aa114c5..e9fa40f40ae6 100644 --- a/sc/source/ui/undo/undoblk.cxx +++ b/sc/source/ui/undo/undoblk.cxx @@ -131,14 +131,14 @@ ScUndoInsertCells::ScUndoInsertCells( ScDocShell* pNewDocShell, SetChangeTrack(); } -__EXPORT ScUndoInsertCells::~ScUndoInsertCells() +ScUndoInsertCells::~ScUndoInsertCells() { delete pPasteUndo; delete []pTabs; delete []pScenarios; } -String __EXPORT ScUndoInsertCells::GetComment() const +String ScUndoInsertCells::GetComment() const { return ScGlobal::GetRscString( pPasteUndo ? STR_UNDO_PASTE : STR_UNDO_INSERTCELLS ); } @@ -294,7 +294,7 @@ void ScUndoInsertCells::DoChange( const BOOL bUndo ) pViewShell->CellContentChanged(); } -void __EXPORT ScUndoInsertCells::Undo() +void ScUndoInsertCells::Undo() { if ( pPasteUndo ) pPasteUndo->Undo(); // undo paste first @@ -305,7 +305,7 @@ void __EXPORT ScUndoInsertCells::Undo() EndUndo(); } -void __EXPORT ScUndoInsertCells::Redo() +void ScUndoInsertCells::Redo() { WaitObject aWait( pDocShell->GetActiveDialogParent() ); // wichtig wegen TrackFormulas bei UpdateReference BeginRedo(); @@ -316,7 +316,7 @@ void __EXPORT ScUndoInsertCells::Redo() pPasteUndo->Redo(); // redo paste last } -void __EXPORT ScUndoInsertCells::Repeat(SfxRepeatTarget& rTarget) +void ScUndoInsertCells::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) { @@ -332,7 +332,7 @@ void __EXPORT ScUndoInsertCells::Repeat(SfxRepeatTarget& rTarget) } } -BOOL __EXPORT ScUndoInsertCells::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoInsertCells::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -370,13 +370,13 @@ ScUndoDeleteCells::ScUndoDeleteCells( ScDocShell* pNewDocShell, SetChangeTrack(); } -__EXPORT ScUndoDeleteCells::~ScUndoDeleteCells() +ScUndoDeleteCells::~ScUndoDeleteCells() { delete []pTabs; delete []pScenarios; } -String __EXPORT ScUndoDeleteCells::GetComment() const +String ScUndoDeleteCells::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_DELETECELLS ); // "Loeschen" } @@ -529,7 +529,7 @@ void ScUndoDeleteCells::DoChange( const BOOL bUndo ) // CellContentChanged kommt mit der Markierung } -void __EXPORT ScUndoDeleteCells::Undo() +void ScUndoDeleteCells::Undo() { WaitObject aWait( pDocShell->GetActiveDialogParent() ); // wichtig wegen TrackFormulas bei UpdateReference BeginUndo(); @@ -548,7 +548,7 @@ void __EXPORT ScUndoDeleteCells::Undo() } } -void __EXPORT ScUndoDeleteCells::Redo() +void ScUndoDeleteCells::Redo() { WaitObject aWait( pDocShell->GetActiveDialogParent() ); // wichtig wegen TrackFormulas bei UpdateReference BeginRedo(); @@ -561,13 +561,13 @@ void __EXPORT ScUndoDeleteCells::Redo() pViewShell->DoneBlockMode(); // aktuelle weg } -void __EXPORT ScUndoDeleteCells::Repeat(SfxRepeatTarget& rTarget) +void ScUndoDeleteCells::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->DeleteCells( eCmd, TRUE ); } -BOOL __EXPORT ScUndoDeleteCells::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoDeleteCells::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -593,12 +593,12 @@ ScUndoDeleteMulti::ScUndoDeleteMulti( ScDocShell* pNewDocShell, SetChangeTrack(); } -__EXPORT ScUndoDeleteMulti::~ScUndoDeleteMulti() +ScUndoDeleteMulti::~ScUndoDeleteMulti() { delete [] pRanges; } -String __EXPORT ScUndoDeleteMulti::GetComment() const +String ScUndoDeleteMulti::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_DELETECELLS ); // wie DeleteCells } @@ -675,7 +675,7 @@ void ScUndoDeleteMulti::SetChangeTrack() nStartChangeAction = nEndChangeAction = 0; } -void __EXPORT ScUndoDeleteMulti::Undo() +void ScUndoDeleteMulti::Undo() { WaitObject aWait( pDocShell->GetActiveDialogParent() ); // wichtig wegen TrackFormulas bei UpdateReference BeginUndo(); @@ -721,7 +721,7 @@ void __EXPORT ScUndoDeleteMulti::Undo() SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREALINKS_CHANGED ) ); } -void __EXPORT ScUndoDeleteMulti::Redo() +void ScUndoDeleteMulti::Redo() { WaitObject aWait( pDocShell->GetActiveDialogParent() ); // wichtig wegen TrackFormulas bei UpdateReference BeginRedo(); @@ -753,14 +753,14 @@ void __EXPORT ScUndoDeleteMulti::Redo() SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREALINKS_CHANGED ) ); } -void __EXPORT ScUndoDeleteMulti::Repeat(SfxRepeatTarget& rTarget) +void ScUndoDeleteMulti::Repeat(SfxRepeatTarget& rTarget) { // DeleteCells, falls einfache Selektion if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->DeleteCells( DEL_DELROWS, TRUE ); } -BOOL __EXPORT ScUndoDeleteMulti::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoDeleteMulti::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -782,12 +782,12 @@ ScUndoCut::ScUndoCut( ScDocShell* pNewDocShell, SetChangeTrack(); } -__EXPORT ScUndoCut::~ScUndoCut() +ScUndoCut::~ScUndoCut() { delete pUndoDoc; } -String __EXPORT ScUndoCut::GetComment() const +String ScUndoCut::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_CUT ); // "Ausschneiden" } @@ -842,14 +842,14 @@ void ScUndoCut::DoChange( const BOOL bUndo ) pViewShell->CellContentChanged(); } -void __EXPORT ScUndoCut::Undo() +void ScUndoCut::Undo() { BeginUndo(); DoChange( TRUE ); EndUndo(); } -void __EXPORT ScUndoCut::Redo() +void ScUndoCut::Redo() { BeginRedo(); ScDocument* pDoc = pDocShell->GetDocument(); @@ -859,13 +859,13 @@ void __EXPORT ScUndoCut::Redo() EndRedo(); } -void __EXPORT ScUndoCut::Repeat(SfxRepeatTarget& rTarget) +void ScUndoCut::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->CutToClip( NULL, TRUE ); } -BOOL __EXPORT ScUndoCut::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoCut::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -910,7 +910,7 @@ ScUndoPaste::ScUndoPaste( ScDocShell* pNewDocShell, SetChangeTrack(); } -__EXPORT ScUndoPaste::~ScUndoPaste() +ScUndoPaste::~ScUndoPaste() { delete pUndoDoc; delete pRedoDoc; @@ -918,7 +918,7 @@ __EXPORT ScUndoPaste::~ScUndoPaste() delete pRefRedoData; } -String __EXPORT ScUndoPaste::GetComment() const +String ScUndoPaste::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_PASTE ); // "Einfuegen" } @@ -1086,7 +1086,7 @@ void ScUndoPaste::DoChange( const BOOL bUndo ) pViewShell->CellContentChanged(); } -void __EXPORT ScUndoPaste::Undo() +void ScUndoPaste::Undo() { BeginUndo(); DoChange( TRUE ); @@ -1095,7 +1095,7 @@ void __EXPORT ScUndoPaste::Undo() SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREALINKS_CHANGED ) ); } -void __EXPORT ScUndoPaste::Redo() +void ScUndoPaste::Redo() { BeginRedo(); ScDocument* pDoc = pDocShell->GetDocument(); @@ -1106,7 +1106,7 @@ void __EXPORT ScUndoPaste::Redo() SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREALINKS_CHANGED ) ); } -void __EXPORT ScUndoPaste::Repeat(SfxRepeatTarget& rTarget) +void ScUndoPaste::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) { @@ -1124,7 +1124,7 @@ void __EXPORT ScUndoPaste::Repeat(SfxRepeatTarget& rTarget) } } -BOOL __EXPORT ScUndoPaste::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoPaste::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -1166,11 +1166,11 @@ ScUndoDragDrop::ScUndoDragDrop( ScDocShell* pNewDocShell, SetChangeTrack(); } -__EXPORT ScUndoDragDrop::~ScUndoDragDrop() +ScUndoDragDrop::~ScUndoDragDrop() { } -String __EXPORT ScUndoDragDrop::GetComment() const +String ScUndoDragDrop::GetComment() const { // "Verschieben" : "Kopieren" return bCut ? ScGlobal::GetRscString( STR_UNDO_MOVE ) : @@ -1276,7 +1276,7 @@ void ScUndoDragDrop::DoUndo( ScRange aRange ) const PaintArea( aPaintRange, nExtFlags ); } -void __EXPORT ScUndoDragDrop::Undo() +void ScUndoDragDrop::Undo() { BeginUndo(); DoUndo(aDestRange); @@ -1286,7 +1286,7 @@ void __EXPORT ScUndoDragDrop::Undo() SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREALINKS_CHANGED ) ); } -void __EXPORT ScUndoDragDrop::Redo() +void ScUndoDragDrop::Redo() { BeginRedo(); @@ -1369,11 +1369,11 @@ void __EXPORT ScUndoDragDrop::Redo() SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREALINKS_CHANGED ) ); } -void __EXPORT ScUndoDragDrop::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoDragDrop::Repeat(SfxRepeatTarget& /* rTarget */) { } -BOOL __EXPORT ScUndoDragDrop::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoDragDrop::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; // geht nicht } @@ -1393,13 +1393,13 @@ ScUndoListNames::ScUndoListNames( ScDocShell* pNewDocShell, const ScRange& rRang { } -__EXPORT ScUndoListNames::~ScUndoListNames() +ScUndoListNames::~ScUndoListNames() { delete pUndoDoc; delete pRedoDoc; } -String __EXPORT ScUndoListNames::GetComment() const +String ScUndoListNames::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_LISTNAMES ); } @@ -1417,27 +1417,27 @@ void ScUndoListNames::DoChange( ScDocument* pSrcDoc ) const pViewShell->CellContentChanged(); } -void __EXPORT ScUndoListNames::Undo() +void ScUndoListNames::Undo() { BeginUndo(); DoChange(pUndoDoc); EndUndo(); } -void __EXPORT ScUndoListNames::Redo() +void ScUndoListNames::Redo() { BeginRedo(); DoChange(pRedoDoc); EndRedo(); } -void __EXPORT ScUndoListNames::Repeat(SfxRepeatTarget& rTarget) +void ScUndoListNames::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->InsertNameList(); } -BOOL __EXPORT ScUndoListNames::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoListNames::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -1467,17 +1467,17 @@ ScUndoUseScenario::ScUndoUseScenario( ScDocShell* pNewDocShell, aRange.aEnd.SetTab(rDestArea.nTab); } -__EXPORT ScUndoUseScenario::~ScUndoUseScenario() +ScUndoUseScenario::~ScUndoUseScenario() { delete pUndoDoc; } -String __EXPORT ScUndoUseScenario::GetComment() const +String ScUndoUseScenario::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_USESCENARIO ); } -void __EXPORT ScUndoUseScenario::Undo() +void ScUndoUseScenario::Undo() { BeginUndo(); @@ -1532,7 +1532,7 @@ void __EXPORT ScUndoUseScenario::Undo() EndUndo(); } -void __EXPORT ScUndoUseScenario::Redo() +void ScUndoUseScenario::Redo() { SCTAB nTab = aRange.aStart.Tab(); BeginRedo(); @@ -1550,7 +1550,7 @@ void __EXPORT ScUndoUseScenario::Redo() EndRedo(); } -void __EXPORT ScUndoUseScenario::Repeat(SfxRepeatTarget& rTarget) +void ScUndoUseScenario::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) { @@ -1559,7 +1559,7 @@ void __EXPORT ScUndoUseScenario::Repeat(SfxRepeatTarget& rTarget) } } -BOOL __EXPORT ScUndoUseScenario::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoUseScenario::CanRepeat(SfxRepeatTarget& rTarget) const { if (rTarget.ISA(ScTabViewTarget)) { @@ -1590,12 +1590,12 @@ ScUndoSelectionStyle::ScUndoSelectionStyle( ScDocShell* pNewDocShell, aMarkData.MarkToMulti(); } -__EXPORT ScUndoSelectionStyle::~ScUndoSelectionStyle() +ScUndoSelectionStyle::~ScUndoSelectionStyle() { delete pUndoDoc; } -String __EXPORT ScUndoSelectionStyle::GetComment() const +String ScUndoSelectionStyle::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_APPLYCELLSTYLE ); } @@ -1644,21 +1644,21 @@ void ScUndoSelectionStyle::DoChange( const BOOL bUndo ) ShowTable( aWorkRange.aStart.Tab() ); } -void __EXPORT ScUndoSelectionStyle::Undo() +void ScUndoSelectionStyle::Undo() { BeginUndo(); DoChange( TRUE ); EndUndo(); } -void __EXPORT ScUndoSelectionStyle::Redo() +void ScUndoSelectionStyle::Redo() { BeginRedo(); DoChange( FALSE ); EndRedo(); } -void __EXPORT ScUndoSelectionStyle::Repeat(SfxRepeatTarget& rTarget) +void ScUndoSelectionStyle::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) { @@ -1677,12 +1677,12 @@ void __EXPORT ScUndoSelectionStyle::Repeat(SfxRepeatTarget& rTarget) } } -BOOL __EXPORT ScUndoSelectionStyle::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoSelectionStyle::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } -USHORT __EXPORT ScUndoSelectionStyle::GetId() const +USHORT ScUndoSelectionStyle::GetId() const { return STR_UNDO_APPLYCELLSTYLE; } @@ -1702,12 +1702,12 @@ ScUndoEnterMatrix::ScUndoEnterMatrix( ScDocShell* pNewDocShell, const ScRange& r SetChangeTrack(); } -__EXPORT ScUndoEnterMatrix::~ScUndoEnterMatrix() +ScUndoEnterMatrix::~ScUndoEnterMatrix() { delete pUndoDoc; } -String __EXPORT ScUndoEnterMatrix::GetComment() const +String ScUndoEnterMatrix::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_ENTERMATRIX ); } @@ -1723,7 +1723,7 @@ void ScUndoEnterMatrix::SetChangeTrack() nStartChangeAction = nEndChangeAction = 0; } -void __EXPORT ScUndoEnterMatrix::Undo() +void ScUndoEnterMatrix::Undo() { BeginUndo(); @@ -1744,7 +1744,7 @@ void __EXPORT ScUndoEnterMatrix::Undo() EndUndo(); } -void __EXPORT ScUndoEnterMatrix::Redo() +void ScUndoEnterMatrix::Redo() { BeginRedo(); @@ -1764,7 +1764,7 @@ void __EXPORT ScUndoEnterMatrix::Redo() EndRedo(); } -void __EXPORT ScUndoEnterMatrix::Repeat(SfxRepeatTarget& rTarget) +void ScUndoEnterMatrix::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) { @@ -1773,7 +1773,7 @@ void __EXPORT ScUndoEnterMatrix::Repeat(SfxRepeatTarget& rTarget) } } -BOOL __EXPORT ScUndoEnterMatrix::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoEnterMatrix::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -1801,18 +1801,18 @@ ScUndoIndent::ScUndoIndent( ScDocShell* pNewDocShell, const ScMarkData& rMark, { } -__EXPORT ScUndoIndent::~ScUndoIndent() +ScUndoIndent::~ScUndoIndent() { delete pUndoDoc; } -String __EXPORT ScUndoIndent::GetComment() const +String ScUndoIndent::GetComment() const { USHORT nId = bIsIncrement ? STR_UNDO_INC_INDENT : STR_UNDO_DEC_INDENT; return ScGlobal::GetRscString( nId ); } -void __EXPORT ScUndoIndent::Undo() +void ScUndoIndent::Undo() { BeginUndo(); @@ -1827,7 +1827,7 @@ void __EXPORT ScUndoIndent::Undo() EndUndo(); } -void __EXPORT ScUndoIndent::Redo() +void ScUndoIndent::Redo() { BeginRedo(); @@ -1838,13 +1838,13 @@ void __EXPORT ScUndoIndent::Redo() EndRedo(); } -void __EXPORT ScUndoIndent::Repeat(SfxRepeatTarget& rTarget) +void ScUndoIndent::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->ChangeIndent( bIsIncrement ); } -BOOL __EXPORT ScUndoIndent::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoIndent::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -1863,17 +1863,17 @@ ScUndoTransliterate::ScUndoTransliterate( ScDocShell* pNewDocShell, const ScMark { } -__EXPORT ScUndoTransliterate::~ScUndoTransliterate() +ScUndoTransliterate::~ScUndoTransliterate() { delete pUndoDoc; } -String __EXPORT ScUndoTransliterate::GetComment() const +String ScUndoTransliterate::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_TRANSLITERATE ); } -void __EXPORT ScUndoTransliterate::Undo() +void ScUndoTransliterate::Undo() { BeginUndo(); @@ -1888,7 +1888,7 @@ void __EXPORT ScUndoTransliterate::Undo() EndUndo(); } -void __EXPORT ScUndoTransliterate::Redo() +void ScUndoTransliterate::Redo() { BeginRedo(); @@ -1899,13 +1899,13 @@ void __EXPORT ScUndoTransliterate::Redo() EndRedo(); } -void __EXPORT ScUndoTransliterate::Repeat(SfxRepeatTarget& rTarget) +void ScUndoTransliterate::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->TransliterateText( nTransliterationType ); } -BOOL __EXPORT ScUndoTransliterate::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoTransliterate::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -1932,18 +1932,18 @@ ScUndoClearItems::ScUndoClearItems( ScDocShell* pNewDocShell, const ScMarkData& pWhich[i] = pW[i]; } -__EXPORT ScUndoClearItems::~ScUndoClearItems() +ScUndoClearItems::~ScUndoClearItems() { delete pUndoDoc; delete pWhich; } -String __EXPORT ScUndoClearItems::GetComment() const +String ScUndoClearItems::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_DELETECONTENTS ); } -void __EXPORT ScUndoClearItems::Undo() +void ScUndoClearItems::Undo() { BeginUndo(); @@ -1954,7 +1954,7 @@ void __EXPORT ScUndoClearItems::Undo() EndUndo(); } -void __EXPORT ScUndoClearItems::Redo() +void ScUndoClearItems::Redo() { BeginRedo(); @@ -1965,7 +1965,7 @@ void __EXPORT ScUndoClearItems::Redo() EndRedo(); } -void __EXPORT ScUndoClearItems::Repeat(SfxRepeatTarget& rTarget) +void ScUndoClearItems::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) { @@ -1975,7 +1975,7 @@ void __EXPORT ScUndoClearItems::Repeat(SfxRepeatTarget& rTarget) } } -BOOL __EXPORT ScUndoClearItems::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoClearItems::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -1993,17 +1993,17 @@ ScUndoRemoveBreaks::ScUndoRemoveBreaks( ScDocShell* pNewDocShell, { } -__EXPORT ScUndoRemoveBreaks::~ScUndoRemoveBreaks() +ScUndoRemoveBreaks::~ScUndoRemoveBreaks() { delete pUndoDoc; } -String __EXPORT ScUndoRemoveBreaks::GetComment() const +String ScUndoRemoveBreaks::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_REMOVEBREAKS ); } -void __EXPORT ScUndoRemoveBreaks::Undo() +void ScUndoRemoveBreaks::Undo() { BeginUndo(); @@ -2018,7 +2018,7 @@ void __EXPORT ScUndoRemoveBreaks::Undo() EndUndo(); } -void __EXPORT ScUndoRemoveBreaks::Redo() +void ScUndoRemoveBreaks::Redo() { BeginRedo(); @@ -2034,7 +2034,7 @@ void __EXPORT ScUndoRemoveBreaks::Redo() EndRedo(); } -void __EXPORT ScUndoRemoveBreaks::Repeat(SfxRepeatTarget& rTarget) +void ScUndoRemoveBreaks::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) { @@ -2043,7 +2043,7 @@ void __EXPORT ScUndoRemoveBreaks::Repeat(SfxRepeatTarget& rTarget) } } -BOOL __EXPORT ScUndoRemoveBreaks::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoRemoveBreaks::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -2061,17 +2061,17 @@ ScUndoRemoveMerge::ScUndoRemoveMerge( ScDocShell* pNewDocShell, { } -__EXPORT ScUndoRemoveMerge::~ScUndoRemoveMerge() +ScUndoRemoveMerge::~ScUndoRemoveMerge() { delete pUndoDoc; } -String __EXPORT ScUndoRemoveMerge::GetComment() const +String ScUndoRemoveMerge::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_REMERGE ); // "Zusammenfassung aufheben" } -void __EXPORT ScUndoRemoveMerge::Undo() +void ScUndoRemoveMerge::Undo() { using ::std::set; @@ -2102,7 +2102,7 @@ void __EXPORT ScUndoRemoveMerge::Undo() EndUndo(); } -void __EXPORT ScUndoRemoveMerge::Redo() +void ScUndoRemoveMerge::Redo() { using ::std::set; @@ -2149,13 +2149,13 @@ void __EXPORT ScUndoRemoveMerge::Redo() EndRedo(); } -void __EXPORT ScUndoRemoveMerge::Repeat(SfxRepeatTarget& rTarget) +void ScUndoRemoveMerge::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->RemoveMerge(); } -BOOL __EXPORT ScUndoRemoveMerge::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoRemoveMerge::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -2175,26 +2175,18 @@ void ScUndoRemoveMerge::SetCurTab() ScRange lcl_TotalRange( const ScRangeList& rRanges ) { ScRange aTotal; - ULONG nCount = rRanges.Count(); - for (ULONG i=0; i<nCount; i++) + if ( !rRanges.empty() ) { - ScRange aRange = *rRanges.GetObject(i); - if (i==0) - aTotal = aRange; - else + aTotal = *rRanges[ 0 ]; + for ( size_t i = 1, nCount = rRanges.size(); i < nCount; ++i ) { - if (aRange.aStart.Col() < aTotal.aStart.Col()) - aTotal.aStart.SetCol(aRange.aStart.Col()); - if (aRange.aStart.Row() < aTotal.aStart.Row()) - aTotal.aStart.SetRow(aRange.aStart.Row()); - if (aRange.aStart.Tab() < aTotal.aStart.Tab()) - aTotal.aStart.SetTab(aRange.aStart.Tab()); - if (aRange.aEnd.Col() > aTotal.aEnd.Col()) - aTotal.aEnd.SetCol(aRange.aEnd.Col()); - if (aRange.aEnd.Row() > aTotal.aEnd.Row()) - aTotal.aEnd.SetRow(aRange.aEnd.Row()); - if (aRange.aEnd.Tab() > aTotal.aEnd.Tab()) - aTotal.aEnd.SetTab(aRange.aEnd.Tab()); + ScRange aRange = *rRanges[ i ]; + if (aRange.aStart.Col() < aTotal.aStart.Col()) aTotal.aStart.SetCol(aRange.aStart.Col()); + if (aRange.aStart.Row() < aTotal.aStart.Row()) aTotal.aStart.SetRow(aRange.aStart.Row()); + if (aRange.aStart.Tab() < aTotal.aStart.Tab()) aTotal.aStart.SetTab(aRange.aStart.Tab()); + if (aRange.aEnd.Col() > aTotal.aEnd.Col() ) aTotal.aEnd.SetCol( aRange.aEnd.Col() ); + if (aRange.aEnd.Row() > aTotal.aEnd.Row() ) aTotal.aEnd.SetRow( aRange.aEnd.Row() ); + if (aRange.aEnd.Tab() > aTotal.aEnd.Tab() ) aTotal.aEnd.SetTab(aRange.aEnd.Tab() ); } } return aTotal; @@ -2211,7 +2203,7 @@ ScUndoBorder::ScUndoBorder( ScDocShell* pNewDocShell, pInner = new SvxBoxInfoItem(rNewInner); } -__EXPORT ScUndoBorder::~ScUndoBorder() +ScUndoBorder::~ScUndoBorder() { delete pUndoDoc; delete pRanges; @@ -2219,12 +2211,12 @@ __EXPORT ScUndoBorder::~ScUndoBorder() delete pInner; } -String __EXPORT ScUndoBorder::GetComment() const +String ScUndoBorder::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_SELATTRLINES ); //! eigener String? } -void __EXPORT ScUndoBorder::Undo() +void ScUndoBorder::Undo() { BeginUndo(); @@ -2237,16 +2229,15 @@ void __EXPORT ScUndoBorder::Undo() EndUndo(); } -void __EXPORT ScUndoBorder::Redo() +void ScUndoBorder::Redo() { BeginRedo(); ScDocument* pDoc = pDocShell->GetDocument(); //! Funktion an docfunc aufrufen - ULONG nCount = pRanges->Count(); - ULONG i; - for (i=0; i<nCount; i++) + size_t nCount = pRanges->size(); + for (size_t i = 0; i < nCount; ++i ) { - ScRange aRange = *pRanges->GetObject(i); + ScRange aRange = *(*pRanges)[i]; SCTAB nTab = aRange.aStart.Tab(); ScMarkData aMark; @@ -2255,18 +2246,18 @@ void __EXPORT ScUndoBorder::Redo() pDoc->ApplySelectionFrame( aMark, pOuter, pInner ); } - for (i=0; i<nCount; i++) - pDocShell->PostPaint( *pRanges->GetObject(i), PAINT_GRID, SC_PF_LINES | SC_PF_TESTMERGE ); + for (size_t i = 0; i < nCount; ++i) + pDocShell->PostPaint( *(*pRanges)[i], PAINT_GRID, SC_PF_LINES | SC_PF_TESTMERGE ); EndRedo(); } -void __EXPORT ScUndoBorder::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoBorder::Repeat(SfxRepeatTarget& /* rTarget */) { //! spaeter (wenn die Funktion aus cellsuno nach docfunc gewandert ist) } -BOOL __EXPORT ScUndoBorder::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoBorder::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; // s.o. } diff --git a/sc/source/ui/undo/undoblk2.cxx b/sc/source/ui/undo/undoblk2.cxx index 4a46c61683c5..2909f77ac9d1 100644 --- a/sc/source/ui/undo/undoblk2.cxx +++ b/sc/source/ui/undo/undoblk2.cxx @@ -87,7 +87,7 @@ ScUndoWidthOrHeight::ScUndoWidthOrHeight( ScDocShell* pNewDocShell, pDrawUndo = GetSdrUndoAction( pDocShell->GetDocument() ); } -__EXPORT ScUndoWidthOrHeight::~ScUndoWidthOrHeight() +ScUndoWidthOrHeight::~ScUndoWidthOrHeight() { delete[] pRanges; delete pUndoDoc; @@ -95,7 +95,7 @@ __EXPORT ScUndoWidthOrHeight::~ScUndoWidthOrHeight() DeleteSdrUndoAction( pDrawUndo ); } -String __EXPORT ScUndoWidthOrHeight::GetComment() const +String ScUndoWidthOrHeight::GetComment() const { // [ "optimale " ] "Spaltenbreite" | "Zeilenhoehe" return ( bWidth ? @@ -109,7 +109,7 @@ String __EXPORT ScUndoWidthOrHeight::GetComment() const ) ); } -void __EXPORT ScUndoWidthOrHeight::Undo() +void ScUndoWidthOrHeight::Undo() { BeginUndo(); @@ -168,7 +168,7 @@ void __EXPORT ScUndoWidthOrHeight::Undo() EndUndo(); } -void __EXPORT ScUndoWidthOrHeight::Redo() +void ScUndoWidthOrHeight::Redo() { BeginRedo(); @@ -202,13 +202,13 @@ void __EXPORT ScUndoWidthOrHeight::Redo() EndRedo(); } -void __EXPORT ScUndoWidthOrHeight::Repeat(SfxRepeatTarget& rTarget) +void ScUndoWidthOrHeight::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->SetMarkedWidthOrHeight( bWidth, eMode, nNewSize, TRUE ); } -BOOL __EXPORT ScUndoWidthOrHeight::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoWidthOrHeight::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } diff --git a/sc/source/ui/undo/undoblk3.cxx b/sc/source/ui/undo/undoblk3.cxx index f73e664a5bcd..ce82b7f79904 100644 --- a/sc/source/ui/undo/undoblk3.cxx +++ b/sc/source/ui/undo/undoblk3.cxx @@ -119,7 +119,7 @@ ScUndoDeleteContents::ScUndoDeleteContents( //---------------------------------------------------------------------------- -__EXPORT ScUndoDeleteContents::~ScUndoDeleteContents() +ScUndoDeleteContents::~ScUndoDeleteContents() { delete pUndoDoc; DeleteSdrUndoAction( pDrawUndo ); @@ -128,7 +128,7 @@ __EXPORT ScUndoDeleteContents::~ScUndoDeleteContents() //---------------------------------------------------------------------------- -String __EXPORT ScUndoDeleteContents::GetComment() const +String ScUndoDeleteContents::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_DELETECONTENTS ); // "Loeschen" } @@ -212,7 +212,7 @@ void ScUndoDeleteContents::DoChange( const BOOL bUndo ) //---------------------------------------------------------------------------- -void __EXPORT ScUndoDeleteContents::Undo() +void ScUndoDeleteContents::Undo() { BeginUndo(); DoChange( TRUE ); @@ -231,7 +231,7 @@ void __EXPORT ScUndoDeleteContents::Undo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoDeleteContents::Redo() +void ScUndoDeleteContents::Redo() { BeginRedo(); DoChange( FALSE ); @@ -250,7 +250,7 @@ void __EXPORT ScUndoDeleteContents::Redo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoDeleteContents::Repeat(SfxRepeatTarget& rTarget) +void ScUndoDeleteContents::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->DeleteContents( nFlags, TRUE ); @@ -259,7 +259,7 @@ void __EXPORT ScUndoDeleteContents::Repeat(SfxRepeatTarget& rTarget) //---------------------------------------------------------------------------- -BOOL __EXPORT ScUndoDeleteContents::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoDeleteContents::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -298,7 +298,7 @@ ScUndoFillTable::ScUndoFillTable( ScDocShell* pNewDocShell, //---------------------------------------------------------------------------- -__EXPORT ScUndoFillTable::~ScUndoFillTable() +ScUndoFillTable::~ScUndoFillTable() { delete pUndoDoc; } @@ -306,7 +306,7 @@ __EXPORT ScUndoFillTable::~ScUndoFillTable() //---------------------------------------------------------------------------- -String __EXPORT ScUndoFillTable::GetComment() const +String ScUndoFillTable::GetComment() const { return ScGlobal::GetRscString( STR_FILL_TAB ); } @@ -395,7 +395,7 @@ void ScUndoFillTable::DoChange( const BOOL bUndo ) //---------------------------------------------------------------------------- -void __EXPORT ScUndoFillTable::Undo() +void ScUndoFillTable::Undo() { BeginUndo(); DoChange( TRUE ); @@ -405,7 +405,7 @@ void __EXPORT ScUndoFillTable::Undo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoFillTable::Redo() +void ScUndoFillTable::Redo() { BeginRedo(); DoChange( FALSE ); @@ -415,7 +415,7 @@ void __EXPORT ScUndoFillTable::Redo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoFillTable::Repeat(SfxRepeatTarget& rTarget) +void ScUndoFillTable::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->FillTab( nFlags, nFunction, bSkipEmpty, bAsLink ); @@ -424,7 +424,7 @@ void __EXPORT ScUndoFillTable::Repeat(SfxRepeatTarget& rTarget) //---------------------------------------------------------------------------- -BOOL __EXPORT ScUndoFillTable::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoFillTable::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -461,7 +461,7 @@ ScUndoSelectionAttr::ScUndoSelectionAttr( ScDocShell* pNewDocShell, //---------------------------------------------------------------------------- -__EXPORT ScUndoSelectionAttr::~ScUndoSelectionAttr() +ScUndoSelectionAttr::~ScUndoSelectionAttr() { ScDocumentPool* pPool = pDocShell->GetDocument()->GetPool(); pPool->Remove(*pApplyPattern); @@ -476,7 +476,7 @@ __EXPORT ScUndoSelectionAttr::~ScUndoSelectionAttr() //---------------------------------------------------------------------------- -String __EXPORT ScUndoSelectionAttr::GetComment() const +String ScUndoSelectionAttr::GetComment() const { //"Attribute" "/Linien" return ScGlobal::GetRscString( pLineOuter ? STR_UNDO_SELATTRLINES : STR_UNDO_SELATTR ); @@ -553,7 +553,7 @@ void ScUndoSelectionAttr::ChangeEditData( const bool bUndo ) //---------------------------------------------------------------------------- -void __EXPORT ScUndoSelectionAttr::Undo() +void ScUndoSelectionAttr::Undo() { BeginUndo(); DoChange( TRUE ); @@ -563,7 +563,7 @@ void __EXPORT ScUndoSelectionAttr::Undo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoSelectionAttr::Redo() +void ScUndoSelectionAttr::Redo() { BeginRedo(); DoChange( FALSE ); @@ -573,7 +573,7 @@ void __EXPORT ScUndoSelectionAttr::Redo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoSelectionAttr::Repeat(SfxRepeatTarget& rTarget) +void ScUndoSelectionAttr::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) { @@ -588,7 +588,7 @@ void __EXPORT ScUndoSelectionAttr::Repeat(SfxRepeatTarget& rTarget) //---------------------------------------------------------------------------- -BOOL __EXPORT ScUndoSelectionAttr::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoSelectionAttr::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -627,7 +627,7 @@ ScUndoAutoFill::ScUndoAutoFill( ScDocShell* pNewDocShell, //---------------------------------------------------------------------------- -__EXPORT ScUndoAutoFill::~ScUndoAutoFill() +ScUndoAutoFill::~ScUndoAutoFill() { pDocShell->GetDocument()->EraseNonUsedSharedNames(nMaxSharedIndex); delete pUndoDoc; @@ -636,7 +636,7 @@ __EXPORT ScUndoAutoFill::~ScUndoAutoFill() //---------------------------------------------------------------------------- -String __EXPORT ScUndoAutoFill::GetComment() const +String ScUndoAutoFill::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_AUTOFILL ); //"Ausfuellen" } @@ -655,7 +655,7 @@ void ScUndoAutoFill::SetChangeTrack() //---------------------------------------------------------------------------- -void __EXPORT ScUndoAutoFill::Undo() +void ScUndoAutoFill::Undo() { BeginUndo(); @@ -721,7 +721,7 @@ void __EXPORT ScUndoAutoFill::Undo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoAutoFill::Redo() +void ScUndoAutoFill::Redo() { BeginRedo(); @@ -772,7 +772,7 @@ void __EXPORT ScUndoAutoFill::Redo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoAutoFill::Repeat(SfxRepeatTarget& rTarget) +void ScUndoAutoFill::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) { @@ -788,7 +788,7 @@ void __EXPORT ScUndoAutoFill::Repeat(SfxRepeatTarget& rTarget) //---------------------------------------------------------------------------- -BOOL __EXPORT ScUndoAutoFill::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoAutoFill::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -973,7 +973,7 @@ ScUndoAutoFormat::ScUndoAutoFormat( ScDocShell* pNewDocShell, //---------------------------------------------------------------------------- -__EXPORT ScUndoAutoFormat::~ScUndoAutoFormat() +ScUndoAutoFormat::~ScUndoAutoFormat() { delete pUndoDoc; } @@ -981,7 +981,7 @@ __EXPORT ScUndoAutoFormat::~ScUndoAutoFormat() //---------------------------------------------------------------------------- -String __EXPORT ScUndoAutoFormat::GetComment() const +String ScUndoAutoFormat::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_AUTOFORMAT ); //"Auto-Format" } @@ -989,7 +989,7 @@ String __EXPORT ScUndoAutoFormat::GetComment() const //---------------------------------------------------------------------------- -void __EXPORT ScUndoAutoFormat::Undo() +void ScUndoAutoFormat::Undo() { BeginUndo(); @@ -1034,7 +1034,7 @@ void __EXPORT ScUndoAutoFormat::Undo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoAutoFormat::Redo() +void ScUndoAutoFormat::Redo() { BeginRedo(); @@ -1117,7 +1117,7 @@ void __EXPORT ScUndoAutoFormat::Redo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoAutoFormat::Repeat(SfxRepeatTarget& rTarget) +void ScUndoAutoFormat::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->AutoFormat( nFormatNo, TRUE ); @@ -1126,7 +1126,7 @@ void __EXPORT ScUndoAutoFormat::Repeat(SfxRepeatTarget& rTarget) //---------------------------------------------------------------------------- -BOOL __EXPORT ScUndoAutoFormat::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoAutoFormat::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -1158,7 +1158,7 @@ ScUndoReplace::ScUndoReplace( ScDocShell* pNewDocShell, const ScMarkData& rMark, //---------------------------------------------------------------------------- -__EXPORT ScUndoReplace::~ScUndoReplace() +ScUndoReplace::~ScUndoReplace() { delete pUndoDoc; delete pSearchItem; @@ -1196,7 +1196,7 @@ void ScUndoReplace::SetChangeTrack() //---------------------------------------------------------------------------- -String __EXPORT ScUndoReplace::GetComment() const +String ScUndoReplace::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_REPLACE ); // "Ersetzen" } @@ -1204,7 +1204,7 @@ String __EXPORT ScUndoReplace::GetComment() const //---------------------------------------------------------------------------- -void __EXPORT ScUndoReplace::Undo() +void ScUndoReplace::Undo() { BeginUndo(); @@ -1282,7 +1282,7 @@ void __EXPORT ScUndoReplace::Undo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoReplace::Redo() +void ScUndoReplace::Redo() { BeginRedo(); @@ -1321,7 +1321,7 @@ void __EXPORT ScUndoReplace::Redo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoReplace::Repeat(SfxRepeatTarget& rTarget) +void ScUndoReplace::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->SearchAndReplace( pSearchItem, TRUE, FALSE ); @@ -1330,7 +1330,7 @@ void __EXPORT ScUndoReplace::Repeat(SfxRepeatTarget& rTarget) //---------------------------------------------------------------------------- -BOOL __EXPORT ScUndoReplace::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoReplace::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -1367,7 +1367,7 @@ ScUndoTabOp::ScUndoTabOp( ScDocShell* pNewDocShell, //---------------------------------------------------------------------------- -__EXPORT ScUndoTabOp::~ScUndoTabOp() +ScUndoTabOp::~ScUndoTabOp() { delete pUndoDoc; } @@ -1375,7 +1375,7 @@ __EXPORT ScUndoTabOp::~ScUndoTabOp() //---------------------------------------------------------------------------- -String __EXPORT ScUndoTabOp::GetComment() const +String ScUndoTabOp::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_TABOP ); // "Mehrfachoperation" } @@ -1383,7 +1383,7 @@ String __EXPORT ScUndoTabOp::GetComment() const //---------------------------------------------------------------------------- -void __EXPORT ScUndoTabOp::Undo() +void ScUndoTabOp::Undo() { BeginUndo(); @@ -1407,7 +1407,7 @@ void __EXPORT ScUndoTabOp::Undo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoTabOp::Redo() +void ScUndoTabOp::Redo() { BeginRedo(); @@ -1427,14 +1427,14 @@ void __EXPORT ScUndoTabOp::Redo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoTabOp::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoTabOp::Repeat(SfxRepeatTarget& /* rTarget */) { } //---------------------------------------------------------------------------- -BOOL __EXPORT ScUndoTabOp::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoTabOp::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; } @@ -1466,7 +1466,7 @@ ScUndoConversion::ScUndoConversion( //---------------------------------------------------------------------------- -__EXPORT ScUndoConversion::~ScUndoConversion() +ScUndoConversion::~ScUndoConversion() { delete pUndoDoc; delete pRedoDoc; @@ -1601,13 +1601,13 @@ nFlags ( nNewFlag ) SetChangeTrack(); } -__EXPORT ScUndoRefConversion::~ScUndoRefConversion() +ScUndoRefConversion::~ScUndoRefConversion() { delete pUndoDoc; delete pRedoDoc; } -String __EXPORT ScUndoRefConversion::GetComment() const +String ScUndoRefConversion::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_ENTERDATA ); // "Eingabe" } @@ -1642,7 +1642,7 @@ void ScUndoRefConversion::DoChange( ScDocument* pRefDoc) if (pViewShell) pViewShell->CellContentChanged(); } -void __EXPORT ScUndoRefConversion::Undo() +void ScUndoRefConversion::Undo() { BeginUndo(); if (pUndoDoc) @@ -1653,7 +1653,7 @@ void __EXPORT ScUndoRefConversion::Undo() EndUndo(); } -void __EXPORT ScUndoRefConversion::Redo() +void ScUndoRefConversion::Redo() { BeginRedo(); if (pRedoDoc) @@ -1662,13 +1662,13 @@ void __EXPORT ScUndoRefConversion::Redo() EndRedo(); } -void __EXPORT ScUndoRefConversion::Repeat(SfxRepeatTarget& rTarget) +void ScUndoRefConversion::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->DoRefConversion(); } -BOOL __EXPORT ScUndoRefConversion::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoRefConversion::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -1692,7 +1692,7 @@ ScUndoRefreshLink::ScUndoRefreshLink( ScDocShell* pNewDocShell, //---------------------------------------------------------------------------- -__EXPORT ScUndoRefreshLink::~ScUndoRefreshLink() +ScUndoRefreshLink::~ScUndoRefreshLink() { delete pUndoDoc; delete pRedoDoc; @@ -1701,7 +1701,7 @@ __EXPORT ScUndoRefreshLink::~ScUndoRefreshLink() //---------------------------------------------------------------------------- -String __EXPORT ScUndoRefreshLink::GetComment() const +String ScUndoRefreshLink::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_UPDATELINK ); } @@ -1709,7 +1709,7 @@ String __EXPORT ScUndoRefreshLink::GetComment() const //---------------------------------------------------------------------------- -void __EXPORT ScUndoRefreshLink::Undo() +void ScUndoRefreshLink::Undo() { BeginUndo(); @@ -1759,7 +1759,7 @@ void __EXPORT ScUndoRefreshLink::Undo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoRefreshLink::Redo() +void ScUndoRefreshLink::Redo() { DBG_ASSERT(pRedoDoc, "Kein RedoDoc bei ScUndoRefreshLink::Redo"); @@ -1792,7 +1792,7 @@ void __EXPORT ScUndoRefreshLink::Redo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoRefreshLink::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoRefreshLink::Repeat(SfxRepeatTarget& /* rTarget */) { // gippsnich } @@ -1800,7 +1800,7 @@ void __EXPORT ScUndoRefreshLink::Repeat(SfxRepeatTarget& /* rTarget */) //---------------------------------------------------------------------------- -BOOL __EXPORT ScUndoRefreshLink::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoRefreshLink::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; } @@ -1854,14 +1854,14 @@ ScUndoInsertAreaLink::ScUndoInsertAreaLink( ScDocShell* pShell, //---------------------------------------------------------------------------- -__EXPORT ScUndoInsertAreaLink::~ScUndoInsertAreaLink() +ScUndoInsertAreaLink::~ScUndoInsertAreaLink() { } //---------------------------------------------------------------------------- -String __EXPORT ScUndoInsertAreaLink::GetComment() const +String ScUndoInsertAreaLink::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_INSERTAREALINK ); } @@ -1869,7 +1869,7 @@ String __EXPORT ScUndoInsertAreaLink::GetComment() const //---------------------------------------------------------------------------- -void __EXPORT ScUndoInsertAreaLink::Undo() +void ScUndoInsertAreaLink::Undo() { ScDocument* pDoc = pDocShell->GetDocument(); sfx2::LinkManager* pLinkManager = pDoc->GetLinkManager(); @@ -1885,7 +1885,7 @@ void __EXPORT ScUndoInsertAreaLink::Undo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoInsertAreaLink::Redo() +void ScUndoInsertAreaLink::Redo() { ScDocument* pDoc = pDocShell->GetDocument(); sfx2::LinkManager* pLinkManager = pDoc->GetLinkManager(); @@ -1904,7 +1904,7 @@ void __EXPORT ScUndoInsertAreaLink::Redo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoInsertAreaLink::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoInsertAreaLink::Repeat(SfxRepeatTarget& /* rTarget */) { //! .... } @@ -1912,7 +1912,7 @@ void __EXPORT ScUndoInsertAreaLink::Repeat(SfxRepeatTarget& /* rTarget */) //---------------------------------------------------------------------------- -BOOL __EXPORT ScUndoInsertAreaLink::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoInsertAreaLink::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; } @@ -1944,14 +1944,14 @@ ScUndoRemoveAreaLink::ScUndoRemoveAreaLink( ScDocShell* pShell, //---------------------------------------------------------------------------- -__EXPORT ScUndoRemoveAreaLink::~ScUndoRemoveAreaLink() +ScUndoRemoveAreaLink::~ScUndoRemoveAreaLink() { } //---------------------------------------------------------------------------- -String __EXPORT ScUndoRemoveAreaLink::GetComment() const +String ScUndoRemoveAreaLink::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_REMOVELINK ); //! eigener Text ?? } @@ -1959,7 +1959,7 @@ String __EXPORT ScUndoRemoveAreaLink::GetComment() const //---------------------------------------------------------------------------- -void __EXPORT ScUndoRemoveAreaLink::Undo() +void ScUndoRemoveAreaLink::Undo() { ScDocument* pDoc = pDocShell->GetDocument(); sfx2::LinkManager* pLinkManager = pDoc->GetLinkManager(); @@ -1978,7 +1978,7 @@ void __EXPORT ScUndoRemoveAreaLink::Undo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoRemoveAreaLink::Redo() +void ScUndoRemoveAreaLink::Redo() { ScDocument* pDoc = pDocShell->GetDocument(); sfx2::LinkManager* pLinkManager = pDoc->GetLinkManager(); @@ -1994,7 +1994,7 @@ void __EXPORT ScUndoRemoveAreaLink::Redo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoRemoveAreaLink::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoRemoveAreaLink::Repeat(SfxRepeatTarget& /* rTarget */) { // gippsnich } @@ -2002,7 +2002,7 @@ void __EXPORT ScUndoRemoveAreaLink::Repeat(SfxRepeatTarget& /* rTarget */) //---------------------------------------------------------------------------- -BOOL __EXPORT ScUndoRemoveAreaLink::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoRemoveAreaLink::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; } @@ -2046,7 +2046,7 @@ ScUndoUpdateAreaLink::ScUndoUpdateAreaLink( ScDocShell* pShell, //---------------------------------------------------------------------------- -__EXPORT ScUndoUpdateAreaLink::~ScUndoUpdateAreaLink() +ScUndoUpdateAreaLink::~ScUndoUpdateAreaLink() { delete pUndoDoc; delete pRedoDoc; @@ -2055,7 +2055,7 @@ __EXPORT ScUndoUpdateAreaLink::~ScUndoUpdateAreaLink() //---------------------------------------------------------------------------- -String __EXPORT ScUndoUpdateAreaLink::GetComment() const +String ScUndoUpdateAreaLink::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_UPDATELINK ); //! eigener Text ?? } @@ -2124,7 +2124,7 @@ void ScUndoUpdateAreaLink::DoChange( const BOOL bUndo ) const //---------------------------------------------------------------------------- -void __EXPORT ScUndoUpdateAreaLink::Undo() +void ScUndoUpdateAreaLink::Undo() { ScDocument* pDoc = pDocShell->GetDocument(); sfx2::LinkManager* pLinkManager = pDoc->GetLinkManager(); @@ -2143,7 +2143,7 @@ void __EXPORT ScUndoUpdateAreaLink::Undo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoUpdateAreaLink::Redo() +void ScUndoUpdateAreaLink::Redo() { ScDocument* pDoc = pDocShell->GetDocument(); sfx2::LinkManager* pLinkManager = pDoc->GetLinkManager(); @@ -2162,7 +2162,7 @@ void __EXPORT ScUndoUpdateAreaLink::Redo() //---------------------------------------------------------------------------- -void __EXPORT ScUndoUpdateAreaLink::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoUpdateAreaLink::Repeat(SfxRepeatTarget& /* rTarget */) { // gippsnich } @@ -2170,7 +2170,7 @@ void __EXPORT ScUndoUpdateAreaLink::Repeat(SfxRepeatTarget& /* rTarget */) //---------------------------------------------------------------------------- -BOOL __EXPORT ScUndoUpdateAreaLink::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoUpdateAreaLink::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; } diff --git a/sc/source/ui/undo/undocell.cxx b/sc/source/ui/undo/undocell.cxx index 65e903c42990..7d4147f19ca6 100644 --- a/sc/source/ui/undo/undocell.cxx +++ b/sc/source/ui/undo/undocell.cxx @@ -95,7 +95,7 @@ ScUndoCursorAttr::ScUndoCursorAttr( ScDocShell* pNewDocShell, pApplyPattern = (ScPatternAttr*) &pPool->Put( *pApplyPat ); } -__EXPORT ScUndoCursorAttr::~ScUndoCursorAttr() +ScUndoCursorAttr::~ScUndoCursorAttr() { ScDocumentPool* pPool = pDocShell->GetDocument()->GetPool(); pPool->Remove(*pNewPattern); @@ -103,7 +103,7 @@ __EXPORT ScUndoCursorAttr::~ScUndoCursorAttr() pPool->Remove(*pApplyPattern); } -String __EXPORT ScUndoCursorAttr::GetComment() const +String ScUndoCursorAttr::GetComment() const { //! eigener Text fuer automatische Attributierung @@ -148,7 +148,7 @@ void ScUndoCursorAttr::DoChange( const ScPatternAttr* pWhichPattern, const share pDocShell->PostPaint( nCol,nRow,nTab, nCol,nRow,nTab, PAINT_GRID, nFlags ); } -void __EXPORT ScUndoCursorAttr::Undo() +void ScUndoCursorAttr::Undo() { BeginUndo(); DoChange(pOldPattern, pOldEditData); @@ -166,20 +166,20 @@ void __EXPORT ScUndoCursorAttr::Undo() EndUndo(); } -void __EXPORT ScUndoCursorAttr::Redo() +void ScUndoCursorAttr::Redo() { BeginRedo(); DoChange(pNewPattern, pNewEditData); EndRedo(); } -void __EXPORT ScUndoCursorAttr::Repeat(SfxRepeatTarget& rTarget) +void ScUndoCursorAttr::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->ApplySelectionPattern( *pApplyPattern ); } -BOOL __EXPORT ScUndoCursorAttr::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoCursorAttr::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -210,7 +210,7 @@ ScUndoEnterData::ScUndoEnterData( ScDocShell* pNewDocShell, SetChangeTrack(); } -__EXPORT ScUndoEnterData::~ScUndoEnterData() +ScUndoEnterData::~ScUndoEnterData() { for (USHORT i=0; i<nCount; i++) if (ppOldCells[i]) @@ -224,7 +224,7 @@ __EXPORT ScUndoEnterData::~ScUndoEnterData() delete pNewEditData; } -String __EXPORT ScUndoEnterData::GetComment() const +String ScUndoEnterData::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_ENTERDATA ); // "Eingabe" } @@ -271,7 +271,7 @@ void ScUndoEnterData::SetChangeTrack() nEndChangeAction = 0; } -void __EXPORT ScUndoEnterData::Undo() +void ScUndoEnterData::Undo() { BeginUndo(); @@ -316,7 +316,7 @@ void __EXPORT ScUndoEnterData::Undo() } } -void __EXPORT ScUndoEnterData::Redo() +void ScUndoEnterData::Redo() { BeginRedo(); @@ -349,7 +349,7 @@ void __EXPORT ScUndoEnterData::Redo() } } -void __EXPORT ScUndoEnterData::Repeat(SfxRepeatTarget& rTarget) +void ScUndoEnterData::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) { @@ -358,7 +358,7 @@ void __EXPORT ScUndoEnterData::Repeat(SfxRepeatTarget& rTarget) } } -BOOL __EXPORT ScUndoEnterData::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoEnterData::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -380,13 +380,13 @@ ScUndoEnterValue::ScUndoEnterValue( ScDocShell* pNewDocShell, const ScAddress& r SetChangeTrack(); } -__EXPORT ScUndoEnterValue::~ScUndoEnterValue() +ScUndoEnterValue::~ScUndoEnterValue() { if (pOldCell) pOldCell->Delete(); } -String __EXPORT ScUndoEnterValue::GetComment() const +String ScUndoEnterValue::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_ENTERDATA ); // "Eingabe" } @@ -406,7 +406,7 @@ void ScUndoEnterValue::SetChangeTrack() nEndChangeAction = 0; } -void __EXPORT ScUndoEnterValue::Undo() +void ScUndoEnterValue::Undo() { BeginUndo(); @@ -424,7 +424,7 @@ void __EXPORT ScUndoEnterValue::Undo() EndUndo(); } -void __EXPORT ScUndoEnterValue::Redo() +void ScUndoEnterValue::Redo() { BeginRedo(); @@ -437,12 +437,12 @@ void __EXPORT ScUndoEnterValue::Redo() EndRedo(); } -void __EXPORT ScUndoEnterValue::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoEnterValue::Repeat(SfxRepeatTarget& /* rTarget */) { // gippsnich } -BOOL __EXPORT ScUndoEnterValue::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoEnterValue::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; } @@ -464,7 +464,7 @@ ScUndoPutCell::ScUndoPutCell( ScDocShell* pNewDocShell, const ScAddress& rNewPos SetChangeTrack(); } -__EXPORT ScUndoPutCell::~ScUndoPutCell() +ScUndoPutCell::~ScUndoPutCell() { if (pOldCell) pOldCell->Delete(); @@ -472,7 +472,7 @@ __EXPORT ScUndoPutCell::~ScUndoPutCell() pEnteredCell->Delete(); } -String __EXPORT ScUndoPutCell::GetComment() const +String ScUndoPutCell::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_ENTERDATA ); // "Eingabe" } @@ -492,7 +492,7 @@ void ScUndoPutCell::SetChangeTrack() nEndChangeAction = 0; } -void __EXPORT ScUndoPutCell::Undo() +void ScUndoPutCell::Undo() { BeginUndo(); @@ -510,7 +510,7 @@ void __EXPORT ScUndoPutCell::Undo() EndUndo(); } -void __EXPORT ScUndoPutCell::Redo() +void ScUndoPutCell::Redo() { BeginRedo(); @@ -526,12 +526,12 @@ void __EXPORT ScUndoPutCell::Redo() EndRedo(); } -void __EXPORT ScUndoPutCell::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoPutCell::Repeat(SfxRepeatTarget& /* rTarget */) { // gippsnich } -BOOL __EXPORT ScUndoPutCell::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoPutCell::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; } @@ -554,11 +554,11 @@ ScUndoPageBreak::ScUndoPageBreak( ScDocShell* pNewDocShell, { } -__EXPORT ScUndoPageBreak::~ScUndoPageBreak() +ScUndoPageBreak::~ScUndoPageBreak() { } -String __EXPORT ScUndoPageBreak::GetComment() const +String ScUndoPageBreak::GetComment() const { //"Spaltenumbruch" | "Zeilenumbruch" "einfuegen" | "loeschen" return String ( bColumn ? @@ -590,21 +590,21 @@ void ScUndoPageBreak::DoChange( BOOL bInsertP ) const } } -void __EXPORT ScUndoPageBreak::Undo() +void ScUndoPageBreak::Undo() { BeginUndo(); DoChange(!bInsert); EndUndo(); } -void __EXPORT ScUndoPageBreak::Redo() +void ScUndoPageBreak::Redo() { BeginRedo(); DoChange(bInsert); EndRedo(); } -void __EXPORT ScUndoPageBreak::Repeat(SfxRepeatTarget& rTarget) +void ScUndoPageBreak::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) { @@ -617,7 +617,7 @@ void __EXPORT ScUndoPageBreak::Repeat(SfxRepeatTarget& rTarget) } } -BOOL __EXPORT ScUndoPageBreak::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoPageBreak::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -638,11 +638,11 @@ ScUndoPrintZoom::ScUndoPrintZoom( ScDocShell* pNewDocShell, { } -__EXPORT ScUndoPrintZoom::~ScUndoPrintZoom() +ScUndoPrintZoom::~ScUndoPrintZoom() { } -String __EXPORT ScUndoPrintZoom::GetComment() const +String ScUndoPrintZoom::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_PRINTSCALE ); } @@ -668,21 +668,21 @@ void ScUndoPrintZoom::DoChange( BOOL bUndo ) } } -void __EXPORT ScUndoPrintZoom::Undo() +void ScUndoPrintZoom::Undo() { BeginUndo(); DoChange(TRUE); EndUndo(); } -void __EXPORT ScUndoPrintZoom::Redo() +void ScUndoPrintZoom::Redo() { BeginRedo(); DoChange(FALSE); EndRedo(); } -void __EXPORT ScUndoPrintZoom::Repeat(SfxRepeatTarget& rTarget) +void ScUndoPrintZoom::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) { @@ -692,7 +692,7 @@ void __EXPORT ScUndoPrintZoom::Repeat(SfxRepeatTarget& rTarget) } } -BOOL __EXPORT ScUndoPrintZoom::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoPrintZoom::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -726,13 +726,13 @@ ScUndoThesaurus::ScUndoThesaurus( ScDocShell* pNewDocShell, pOldCell->Delete(); } -__EXPORT ScUndoThesaurus::~ScUndoThesaurus() +ScUndoThesaurus::~ScUndoThesaurus() { delete pUndoTObject; delete pRedoTObject; } -String __EXPORT ScUndoThesaurus::GetComment() const +String ScUndoThesaurus::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_THESAURUS ); // "Thesaurus" } @@ -751,7 +751,7 @@ void ScUndoThesaurus::SetChangeTrack( ScBaseCell* pOldCell ) nEndChangeAction = 0; } -void __EXPORT ScUndoThesaurus::DoChange( BOOL bUndo, const String& rStr, +void ScUndoThesaurus::DoChange( BOOL bUndo, const String& rStr, const EditTextObject* pTObj ) { ScDocument* pDoc = pDocShell->GetDocument(); @@ -795,7 +795,7 @@ void __EXPORT ScUndoThesaurus::DoChange( BOOL bUndo, const String& rStr, pDocShell->PostPaintCell( nCol, nRow, nTab ); } -void __EXPORT ScUndoThesaurus::Undo() +void ScUndoThesaurus::Undo() { BeginUndo(); DoChange( TRUE, aUndoStr, pUndoTObject ); @@ -805,20 +805,20 @@ void __EXPORT ScUndoThesaurus::Undo() EndUndo(); } -void __EXPORT ScUndoThesaurus::Redo() +void ScUndoThesaurus::Redo() { BeginRedo(); DoChange( FALSE, aRedoStr, pRedoTObject ); EndRedo(); } -void __EXPORT ScUndoThesaurus::Repeat(SfxRepeatTarget& rTarget) +void ScUndoThesaurus::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->DoThesaurus( TRUE ); } -BOOL __EXPORT ScUndoThesaurus::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoThesaurus::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -988,13 +988,13 @@ ScUndoDetective::ScUndoDetective( ScDocShell* pNewDocShell, } } -__EXPORT ScUndoDetective::~ScUndoDetective() +ScUndoDetective::~ScUndoDetective() { DeleteSdrUndoAction( pDrawUndo ); delete pOldList; } -String __EXPORT ScUndoDetective::GetComment() const +String ScUndoDetective::GetComment() const { USHORT nId = STR_UNDO_DETDELALL; if ( !bIsDelete ) @@ -1011,7 +1011,7 @@ String __EXPORT ScUndoDetective::GetComment() const } -void __EXPORT ScUndoDetective::Undo() +void ScUndoDetective::Undo() { BeginUndo(); @@ -1048,7 +1048,7 @@ void __EXPORT ScUndoDetective::Undo() EndUndo(); } -void __EXPORT ScUndoDetective::Redo() +void ScUndoDetective::Redo() { BeginRedo(); @@ -1068,12 +1068,12 @@ void __EXPORT ScUndoDetective::Redo() EndRedo(); } -void __EXPORT ScUndoDetective::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoDetective::Repeat(SfxRepeatTarget& /* rTarget */) { // hammanich } -BOOL __EXPORT ScUndoDetective::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoDetective::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; } @@ -1091,13 +1091,13 @@ ScUndoRangeNames::ScUndoRangeNames( ScDocShell* pNewDocShell, { } -__EXPORT ScUndoRangeNames::~ScUndoRangeNames() +ScUndoRangeNames::~ScUndoRangeNames() { delete pOldRanges; delete pNewRanges; } -String __EXPORT ScUndoRangeNames::GetComment() const +String ScUndoRangeNames::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_RANGENAMES ); } @@ -1117,26 +1117,26 @@ void ScUndoRangeNames::DoChange( BOOL bUndo ) SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREAS_CHANGED ) ); } -void __EXPORT ScUndoRangeNames::Undo() +void ScUndoRangeNames::Undo() { BeginUndo(); DoChange( TRUE ); EndUndo(); } -void __EXPORT ScUndoRangeNames::Redo() +void ScUndoRangeNames::Redo() { BeginRedo(); DoChange( FALSE ); EndRedo(); } -void __EXPORT ScUndoRangeNames::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoRangeNames::Repeat(SfxRepeatTarget& /* rTarget */) { // hammanich } -BOOL __EXPORT ScUndoRangeNames::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoRangeNames::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; } diff --git a/sc/source/ui/undo/undodat.cxx b/sc/source/ui/undo/undodat.cxx index 308a3e7b2ef7..6d52fab5aab9 100644 --- a/sc/source/ui/undo/undodat.cxx +++ b/sc/source/ui/undo/undodat.cxx @@ -99,19 +99,19 @@ ScUndoDoOutline::ScUndoDoOutline( ScDocShell* pNewDocShell, { } -__EXPORT ScUndoDoOutline::~ScUndoDoOutline() +ScUndoDoOutline::~ScUndoDoOutline() { delete pUndoDoc; } -String __EXPORT ScUndoDoOutline::GetComment() const +String ScUndoDoOutline::GetComment() const { // Detail einblenden" "Detail ausblenden" return bShow ? ScGlobal::GetRscString( STR_UNDO_DOOUTLINE ) : ScGlobal::GetRscString( STR_UNDO_REDOOUTLINE ); } -void __EXPORT ScUndoDoOutline::Undo() +void ScUndoDoOutline::Undo() { BeginUndo(); @@ -146,7 +146,7 @@ void __EXPORT ScUndoDoOutline::Undo() EndUndo(); } -void __EXPORT ScUndoDoOutline::Redo() +void ScUndoDoOutline::Redo() { BeginRedo(); @@ -166,11 +166,11 @@ void __EXPORT ScUndoDoOutline::Redo() EndRedo(); } -void __EXPORT ScUndoDoOutline::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoDoOutline::Repeat(SfxRepeatTarget& /* rTarget */) { } -BOOL __EXPORT ScUndoDoOutline::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoDoOutline::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; // geht nicht } @@ -192,19 +192,19 @@ ScUndoMakeOutline::ScUndoMakeOutline( ScDocShell* pNewDocShell, { } -__EXPORT ScUndoMakeOutline::~ScUndoMakeOutline() +ScUndoMakeOutline::~ScUndoMakeOutline() { delete pUndoTable; } -String __EXPORT ScUndoMakeOutline::GetComment() const +String ScUndoMakeOutline::GetComment() const { // "Gruppierung" "Gruppierung aufheben" return bMake ? ScGlobal::GetRscString( STR_UNDO_MAKEOUTLINE ) : ScGlobal::GetRscString( STR_UNDO_REMAKEOUTLINE ); } -void __EXPORT ScUndoMakeOutline::Undo() +void ScUndoMakeOutline::Undo() { BeginUndo(); @@ -225,7 +225,7 @@ void __EXPORT ScUndoMakeOutline::Undo() EndUndo(); } -void __EXPORT ScUndoMakeOutline::Redo() +void ScUndoMakeOutline::Redo() { BeginRedo(); @@ -243,7 +243,7 @@ void __EXPORT ScUndoMakeOutline::Redo() EndRedo(); } -void __EXPORT ScUndoMakeOutline::Repeat(SfxRepeatTarget& rTarget) +void ScUndoMakeOutline::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) { @@ -256,7 +256,7 @@ void __EXPORT ScUndoMakeOutline::Repeat(SfxRepeatTarget& rTarget) } } -BOOL __EXPORT ScUndoMakeOutline::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoMakeOutline::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -280,18 +280,18 @@ ScUndoOutlineLevel::ScUndoOutlineLevel( ScDocShell* pNewDocShell, { } -__EXPORT ScUndoOutlineLevel::~ScUndoOutlineLevel() +ScUndoOutlineLevel::~ScUndoOutlineLevel() { delete pUndoDoc; delete pUndoTable; } -String __EXPORT ScUndoOutlineLevel::GetComment() const +String ScUndoOutlineLevel::GetComment() const { // "Gliederungsebene auswaehlen"; return ScGlobal::GetRscString( STR_UNDO_OUTLINELEVEL ); } -void __EXPORT ScUndoOutlineLevel::Undo() +void ScUndoOutlineLevel::Undo() { BeginUndo(); @@ -323,7 +323,7 @@ void __EXPORT ScUndoOutlineLevel::Undo() EndUndo(); } -void __EXPORT ScUndoOutlineLevel::Redo() +void ScUndoOutlineLevel::Redo() { BeginRedo(); @@ -340,13 +340,13 @@ void __EXPORT ScUndoOutlineLevel::Redo() EndRedo(); } -void __EXPORT ScUndoOutlineLevel::Repeat(SfxRepeatTarget& rTarget) +void ScUndoOutlineLevel::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->SelectLevel( bColumns, nLevel, TRUE ); } -BOOL __EXPORT ScUndoOutlineLevel::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoOutlineLevel::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -368,20 +368,20 @@ ScUndoOutlineBlock::ScUndoOutlineBlock( ScDocShell* pNewDocShell, { } -__EXPORT ScUndoOutlineBlock::~ScUndoOutlineBlock() +ScUndoOutlineBlock::~ScUndoOutlineBlock() { delete pUndoDoc; delete pUndoTable; } -String __EXPORT ScUndoOutlineBlock::GetComment() const +String ScUndoOutlineBlock::GetComment() const { // "Detail einblenden" "Detail ausblenden" return bShow ? ScGlobal::GetRscString( STR_UNDO_DOOUTLINEBLK ) : ScGlobal::GetRscString( STR_UNDO_REDOOUTLINEBLK ); } -void __EXPORT ScUndoOutlineBlock::Undo() +void ScUndoOutlineBlock::Undo() { BeginUndo(); @@ -426,7 +426,7 @@ void __EXPORT ScUndoOutlineBlock::Undo() EndUndo(); } -void __EXPORT ScUndoOutlineBlock::Redo() +void ScUndoOutlineBlock::Redo() { BeginRedo(); @@ -441,7 +441,7 @@ void __EXPORT ScUndoOutlineBlock::Redo() EndRedo(); } -void __EXPORT ScUndoOutlineBlock::Repeat(SfxRepeatTarget& rTarget) +void ScUndoOutlineBlock::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) { @@ -454,7 +454,7 @@ void __EXPORT ScUndoOutlineBlock::Repeat(SfxRepeatTarget& rTarget) } } -BOOL __EXPORT ScUndoOutlineBlock::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoOutlineBlock::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -475,18 +475,18 @@ ScUndoRemoveAllOutlines::ScUndoRemoveAllOutlines( ScDocShell* pNewDocShell, { } -__EXPORT ScUndoRemoveAllOutlines::~ScUndoRemoveAllOutlines() +ScUndoRemoveAllOutlines::~ScUndoRemoveAllOutlines() { delete pUndoDoc; delete pUndoTable; } -String __EXPORT ScUndoRemoveAllOutlines::GetComment() const +String ScUndoRemoveAllOutlines::GetComment() const { // "Gliederung entfernen" return ScGlobal::GetRscString( STR_UNDO_REMOVEALLOTLNS ); } -void __EXPORT ScUndoRemoveAllOutlines::Undo() +void ScUndoRemoveAllOutlines::Undo() { BeginUndo(); @@ -521,7 +521,7 @@ void __EXPORT ScUndoRemoveAllOutlines::Undo() EndUndo(); } -void __EXPORT ScUndoRemoveAllOutlines::Redo() +void ScUndoRemoveAllOutlines::Redo() { BeginRedo(); @@ -539,13 +539,13 @@ void __EXPORT ScUndoRemoveAllOutlines::Redo() EndRedo(); } -void __EXPORT ScUndoRemoveAllOutlines::Repeat(SfxRepeatTarget& rTarget) +void ScUndoRemoveAllOutlines::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->RemoveAllOutlines( TRUE ); } -BOOL __EXPORT ScUndoRemoveAllOutlines::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoRemoveAllOutlines::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -566,18 +566,18 @@ ScUndoAutoOutline::ScUndoAutoOutline( ScDocShell* pNewDocShell, { } -__EXPORT ScUndoAutoOutline::~ScUndoAutoOutline() +ScUndoAutoOutline::~ScUndoAutoOutline() { delete pUndoDoc; delete pUndoTable; } -String __EXPORT ScUndoAutoOutline::GetComment() const +String ScUndoAutoOutline::GetComment() const { // "Auto-Gliederung" return ScGlobal::GetRscString( STR_UNDO_AUTOOUTLINE ); } -void __EXPORT ScUndoAutoOutline::Undo() +void ScUndoAutoOutline::Undo() { BeginUndo(); @@ -617,7 +617,7 @@ void __EXPORT ScUndoAutoOutline::Undo() EndUndo(); } -void __EXPORT ScUndoAutoOutline::Redo() +void ScUndoAutoOutline::Redo() { BeginRedo(); @@ -648,13 +648,13 @@ void __EXPORT ScUndoAutoOutline::Redo() EndRedo(); } -void __EXPORT ScUndoAutoOutline::Repeat(SfxRepeatTarget& rTarget) +void ScUndoAutoOutline::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->AutoOutline( TRUE ); } -BOOL __EXPORT ScUndoAutoOutline::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoAutoOutline::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -679,7 +679,7 @@ ScUndoSubTotals::ScUndoSubTotals( ScDocShell* pNewDocShell, SCTAB nNewTab, { } -__EXPORT ScUndoSubTotals::~ScUndoSubTotals() +ScUndoSubTotals::~ScUndoSubTotals() { delete pUndoDoc; delete pUndoTable; @@ -687,12 +687,12 @@ __EXPORT ScUndoSubTotals::~ScUndoSubTotals() delete pUndoDB; } -String __EXPORT ScUndoSubTotals::GetComment() const +String ScUndoSubTotals::GetComment() const { // "Teilergebnisse" return ScGlobal::GetRscString( STR_UNDO_SUBTOTALS ); } -void __EXPORT ScUndoSubTotals::Undo() +void ScUndoSubTotals::Undo() { BeginUndo(); @@ -770,7 +770,7 @@ void __EXPORT ScUndoSubTotals::Undo() EndUndo(); } -void __EXPORT ScUndoSubTotals::Redo() +void ScUndoSubTotals::Redo() { BeginRedo(); @@ -787,11 +787,11 @@ void __EXPORT ScUndoSubTotals::Redo() EndRedo(); } -void __EXPORT ScUndoSubTotals::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoSubTotals::Repeat(SfxRepeatTarget& /* rTarget */) { } -BOOL __EXPORT ScUndoSubTotals::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoSubTotals::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; // geht nicht wegen Spaltennummern } @@ -820,18 +820,18 @@ ScUndoSort::ScUndoSort( ScDocShell* pNewDocShell, } } -__EXPORT ScUndoSort::~ScUndoSort() +ScUndoSort::~ScUndoSort() { delete pUndoDoc; delete pUndoDB; } -String __EXPORT ScUndoSort::GetComment() const +String ScUndoSort::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_SORT ); } -void __EXPORT ScUndoSort::Undo() +void ScUndoSort::Undo() { BeginUndo(); @@ -886,7 +886,7 @@ void __EXPORT ScUndoSort::Undo() EndUndo(); } -void __EXPORT ScUndoSort::Redo() +void ScUndoSort::Redo() { BeginRedo(); @@ -913,11 +913,11 @@ void __EXPORT ScUndoSort::Redo() EndRedo(); } -void __EXPORT ScUndoSort::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoSort::Repeat(SfxRepeatTarget& /* rTarget */) { } -BOOL __EXPORT ScUndoSort::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoSort::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; // geht nicht wegen Spaltennummern } @@ -955,7 +955,7 @@ ScUndoQuery::ScUndoQuery( ScDocShell* pNewDocShell, SCTAB nNewTab, const ScQuery pDrawUndo = GetSdrUndoAction( pDocShell->GetDocument() ); } -__EXPORT ScUndoQuery::~ScUndoQuery() +ScUndoQuery::~ScUndoQuery() { delete pUndoDoc; // delete pUndoDBData; @@ -963,12 +963,12 @@ __EXPORT ScUndoQuery::~ScUndoQuery() DeleteSdrUndoAction( pDrawUndo ); } -String __EXPORT ScUndoQuery::GetComment() const +String ScUndoQuery::GetComment() const { // "Filtern"; return ScGlobal::GetRscString( STR_UNDO_QUERY ); } -void __EXPORT ScUndoQuery::Undo() +void ScUndoQuery::Undo() { BeginUndo(); @@ -1071,7 +1071,7 @@ void __EXPORT ScUndoQuery::Undo() EndUndo(); } -void __EXPORT ScUndoQuery::Redo() +void ScUndoQuery::Redo() { BeginRedo(); @@ -1089,11 +1089,11 @@ void __EXPORT ScUndoQuery::Redo() EndRedo(); } -void __EXPORT ScUndoQuery::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoQuery::Repeat(SfxRepeatTarget& /* rTarget */) { } -BOOL __EXPORT ScUndoQuery::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoQuery::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; // geht nicht wegen Spaltennummern } @@ -1182,18 +1182,18 @@ ScUndoDBData::ScUndoDBData( ScDocShell* pNewDocShell, { } -__EXPORT ScUndoDBData::~ScUndoDBData() +ScUndoDBData::~ScUndoDBData() { delete pUndoColl; delete pRedoColl; } -String __EXPORT ScUndoDBData::GetComment() const +String ScUndoDBData::GetComment() const { // "Datenbankbereiche aendern"; return ScGlobal::GetRscString( STR_UNDO_DBDATA ); } -void __EXPORT ScUndoDBData::Undo() +void ScUndoDBData::Undo() { BeginUndo(); @@ -1211,7 +1211,7 @@ void __EXPORT ScUndoDBData::Undo() EndUndo(); } -void __EXPORT ScUndoDBData::Redo() +void ScUndoDBData::Redo() { BeginRedo(); @@ -1229,11 +1229,11 @@ void __EXPORT ScUndoDBData::Redo() EndRedo(); } -void __EXPORT ScUndoDBData::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoDBData::Repeat(SfxRepeatTarget& /* rTarget */) { } -BOOL __EXPORT ScUndoDBData::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoDBData::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; // geht nicht } @@ -1262,7 +1262,7 @@ ScUndoImportData::ScUndoImportData( ScDocShell* pNewDocShell, SCTAB nNewTab, // redo doc doesn't contain imported data (but everything else) } -__EXPORT ScUndoImportData::~ScUndoImportData() +ScUndoImportData::~ScUndoImportData() { delete pUndoDoc; delete pRedoDoc; @@ -1270,12 +1270,12 @@ __EXPORT ScUndoImportData::~ScUndoImportData() delete pRedoDBData; } -String __EXPORT ScUndoImportData::GetComment() const +String ScUndoImportData::GetComment() const { // "Importieren"; return ScGlobal::GetRscString( STR_UNDO_IMPORTDATA ); } -void __EXPORT ScUndoImportData::Undo() +void ScUndoImportData::Undo() { BeginUndo(); @@ -1364,7 +1364,7 @@ void __EXPORT ScUndoImportData::Undo() EndUndo(); } -void __EXPORT ScUndoImportData::Redo() +void ScUndoImportData::Redo() { BeginRedo(); @@ -1436,7 +1436,7 @@ void __EXPORT ScUndoImportData::Redo() EndRedo(); } -void __EXPORT ScUndoImportData::Repeat(SfxRepeatTarget& rTarget) +void ScUndoImportData::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) { @@ -1451,7 +1451,7 @@ void __EXPORT ScUndoImportData::Repeat(SfxRepeatTarget& rTarget) } } -BOOL __EXPORT ScUndoImportData::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoImportData::CanRepeat(SfxRepeatTarget& rTarget) const { // Repeat nur fuer Import per DB-Bereich, dann ist pUndoDBData gesetzt @@ -1490,7 +1490,7 @@ ScUndoRepeatDB::ScUndoRepeatDB( ScDocShell* pNewDocShell, SCTAB nNewTab, } } -__EXPORT ScUndoRepeatDB::~ScUndoRepeatDB() +ScUndoRepeatDB::~ScUndoRepeatDB() { delete pUndoDoc; delete pUndoTable; @@ -1498,12 +1498,12 @@ __EXPORT ScUndoRepeatDB::~ScUndoRepeatDB() delete pUndoDB; } -String __EXPORT ScUndoRepeatDB::GetComment() const +String ScUndoRepeatDB::GetComment() const { // "Wiederholen"; //! bessere Beschreibung! return ScGlobal::GetRscString( STR_UNDO_REPEATDB ); } -void __EXPORT ScUndoRepeatDB::Undo() +void ScUndoRepeatDB::Undo() { BeginUndo(); @@ -1603,7 +1603,7 @@ void __EXPORT ScUndoRepeatDB::Undo() EndUndo(); } -void __EXPORT ScUndoRepeatDB::Redo() +void ScUndoRepeatDB::Redo() { BeginRedo(); @@ -1623,13 +1623,13 @@ void __EXPORT ScUndoRepeatDB::Redo() EndRedo(); } -void __EXPORT ScUndoRepeatDB::Repeat(SfxRepeatTarget& rTarget) +void ScUndoRepeatDB::Repeat(SfxRepeatTarget& rTarget) { if (rTarget.ISA(ScTabViewTarget)) ((ScTabViewTarget&)rTarget).GetViewShell()->RepeatDB( TRUE ); } -BOOL __EXPORT ScUndoRepeatDB::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoRepeatDB::CanRepeat(SfxRepeatTarget& rTarget) const { return (rTarget.ISA(ScTabViewTarget)); } @@ -1654,7 +1654,7 @@ ScUndoDataPilot::ScUndoDataPilot( ScDocShell* pNewDocShell, pNewDPObject = new ScDPObject( *pNewObj ); } -__EXPORT ScUndoDataPilot::~ScUndoDataPilot() +ScUndoDataPilot::~ScUndoDataPilot() { delete pOldDPObject; delete pNewDPObject; @@ -1662,7 +1662,7 @@ __EXPORT ScUndoDataPilot::~ScUndoDataPilot() delete pNewUndoDoc; } -String __EXPORT ScUndoDataPilot::GetComment() const +String ScUndoDataPilot::GetComment() const { USHORT nIndex; if ( pOldUndoDoc && pNewUndoDoc ) @@ -1675,7 +1675,7 @@ String __EXPORT ScUndoDataPilot::GetComment() const return ScGlobal::GetRscString( nIndex ); } -void __EXPORT ScUndoDataPilot::Undo() +void ScUndoDataPilot::Undo() { BeginUndo(); @@ -1760,7 +1760,7 @@ void __EXPORT ScUndoDataPilot::Undo() EndUndo(); } -void __EXPORT ScUndoDataPilot::Redo() +void ScUndoDataPilot::Redo() { BeginRedo(); @@ -1787,12 +1787,12 @@ void __EXPORT ScUndoDataPilot::Redo() EndRedo(); } -void __EXPORT ScUndoDataPilot::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoDataPilot::Repeat(SfxRepeatTarget& /* rTarget */) { //! allow deletion } -BOOL __EXPORT ScUndoDataPilot::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoDataPilot::CanRepeat(SfxRepeatTarget& /* rTarget */) const { //! allow deletion return FALSE; @@ -1818,19 +1818,19 @@ ScUndoConsolidate::ScUndoConsolidate( ScDocShell* pNewDocShell, const ScArea& rA { } -__EXPORT ScUndoConsolidate::~ScUndoConsolidate() +ScUndoConsolidate::~ScUndoConsolidate() { delete pUndoDoc; delete pUndoTab; delete pUndoData; } -String __EXPORT ScUndoConsolidate::GetComment() const +String ScUndoConsolidate::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_CONSOLIDATE ); } -void __EXPORT ScUndoConsolidate::Undo() +void ScUndoConsolidate::Undo() { BeginUndo(); @@ -1927,7 +1927,7 @@ void __EXPORT ScUndoConsolidate::Undo() EndUndo(); } -void __EXPORT ScUndoConsolidate::Redo() +void ScUndoConsolidate::Redo() { BeginRedo(); @@ -1944,11 +1944,11 @@ void __EXPORT ScUndoConsolidate::Redo() EndRedo(); } -void __EXPORT ScUndoConsolidate::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoConsolidate::Repeat(SfxRepeatTarget& /* rTarget */) { } -BOOL __EXPORT ScUndoConsolidate::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoConsolidate::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; } @@ -1993,16 +1993,16 @@ ScUndoChartData::ScUndoChartData( ScDocShell* pNewDocShell, const String& rName, Init(); } -__EXPORT ScUndoChartData::~ScUndoChartData() +ScUndoChartData::~ScUndoChartData() { } -String __EXPORT ScUndoChartData::GetComment() const +String ScUndoChartData::GetComment() const { return ScGlobal::GetRscString( STR_UNDO_CHARTDATA ); } -void __EXPORT ScUndoChartData::Undo() +void ScUndoChartData::Undo() { BeginUndo(); @@ -2012,7 +2012,7 @@ void __EXPORT ScUndoChartData::Undo() EndUndo(); } -void __EXPORT ScUndoChartData::Redo() +void ScUndoChartData::Redo() { BeginRedo(); @@ -2022,11 +2022,11 @@ void __EXPORT ScUndoChartData::Redo() EndRedo(); } -void __EXPORT ScUndoChartData::Repeat(SfxRepeatTarget& /* rTarget */) +void ScUndoChartData::Repeat(SfxRepeatTarget& /* rTarget */) { } -BOOL __EXPORT ScUndoChartData::CanRepeat(SfxRepeatTarget& /* rTarget */) const +BOOL ScUndoChartData::CanRepeat(SfxRepeatTarget& /* rTarget */) const { return FALSE; } diff --git a/sc/source/ui/undo/undodraw.cxx b/sc/source/ui/undo/undodraw.cxx index e1bfb468fb4e..cfc83b6592ac 100644 --- a/sc/source/ui/undo/undodraw.cxx +++ b/sc/source/ui/undo/undodraw.cxx @@ -42,96 +42,25 @@ #define _TREELIST_HXX #define _CACHESTR_HXX #define _NEW_HXX -//#define _SHL_HXX -//#define _LINK_HXX -//#define _ERRCODE_HXX -//#define _GEN_HXX -//#define _FRACT_HXX -//#define _STRING_HXX -//#define _MTF_HXX -//#define _CONTNR_HXX -//#define _LIST_HXX -//#define _TABLE_HXX #define _DYNARY_HXX -//#define _UNQIDX_HXX #define _SVMEMPOOL_HXX -//#define _UNQID_HXX -//#define _DEBUG_HXX -//#define _DATE_HXX -//#define _TIME_HXX -//#define _DATETIME_HXX -//#define _INTN_HXX -//#define _WLDCRD_HXX -//#define _FSYS_HXX -//#define _STREAM_HXX #define _CACHESTR_HXX #define _SV_MULTISEL_HXX //SV -//#define _CLIP_HXX #define _CONFIG_HXX #define _CURSOR_HXX #define _FONTDLG_HXX #define _PRVWIN_HXX -//#define _COLOR_HXX -//#define _PAL_HXX -//#define _BITMAP_HXX -//#define _GDIOBJ_HXX -//#define _POINTR_HXX -//#define _ICON_HXX -//#define _IMAGE_HXX -//#define _KEYCOD_HXX -//#define _EVENT_HXX #define _HELP_HXX -//#define _APP_HXX -//#define _MDIAPP_HXX -//#define _TIMER_HXX -//#define _METRIC_HXX -//#define _REGION_HXX -//#define _OUTDEV_HXX -//#define _SYSTEM_HXX -//#define _VIRDEV_HXX -//#define _JOBSET_HXX -//#define _PRINT_HXX -//#define _WINDOW_HXX -//#define _SYSWIN_HXX -//#define _WRKWIN_HXX #define _MDIWIN_HXX -//#define _FLOATWIN_HXX -//#define _DOCKWIN_HXX -//#define _CTRL_HXX -//#define _SCRBAR_HXX -//#define _BUTTON_HXX -//#define _IMAGEBTN_HXX -//#define _FIXED_HXX -//#define _GROUP_HXX -//#define _EDIT_HXX -//#define _COMBOBOX_HXX -//#define _LSTBOX_HXX -//#define _SELENG_HXX -//#define _SPLIT_HXX #define _SPIN_HXX -//#define _FIELD_HXX -//#define _MOREBTN_HXX -//#define _TOOLBOX_HXX -//#define _STATUS_HXX -//#define _DIALOG_HXX -//#define _MSGBOX_HXX -//#define _SYSDLG_HXX #define _FILDLG_HXX -//#define _PRNDLG_HXX #define _COLDLG_HXX -//#define _TABDLG_HXX -//#define _MENU_HXX -//#define _GDIMTF_HXX -//#define _POLY_HXX -//#define _ACCEL_HXX -//#define _GRAPH_HXX #define _SOUND_HXX #define SI_NOITEMS -//#define SI_NODRW #define _SI_NOSBXCONTROLS #define _SI_NOOTHERFORMS #define _SI_NOCONTROL @@ -141,8 +70,6 @@ // SFX #define _SFXAPPWIN_HXX #define _SFX_SAVEOPT_HXX -//#define _SFX_CHILDWIN_HXX -//#define _SFXCTRLITEM_HXX #define _SFXPRNMON_HXX #define _INTRO_HXX #define _SFXMSGDESCR_HXX @@ -178,7 +105,7 @@ ScUndoDraw::ScUndoDraw( SfxUndoAction* pUndo, ScDocShell* pDocSh ) : { } -__EXPORT ScUndoDraw::~ScUndoDraw() +ScUndoDraw::~ScUndoDraw() { delete pDrawUndo; } @@ -188,7 +115,7 @@ void ScUndoDraw::ForgetDrawUndo() pDrawUndo = NULL; // nicht loeschen (Draw-Undo muss dann von aussen gemerkt werden) } -String __EXPORT ScUndoDraw::GetComment() const +String ScUndoDraw::GetComment() const { if (pDrawUndo) return pDrawUndo->GetComment(); @@ -196,7 +123,7 @@ String __EXPORT ScUndoDraw::GetComment() const return String(); } -String __EXPORT ScUndoDraw::GetRepeatComment(SfxRepeatTarget& rTarget) const +String ScUndoDraw::GetRepeatComment(SfxRepeatTarget& rTarget) const { if (pDrawUndo) return pDrawUndo->GetRepeatComment(rTarget); @@ -204,7 +131,7 @@ String __EXPORT ScUndoDraw::GetRepeatComment(SfxRepeatTarget& rTarget) const return String(); } -USHORT __EXPORT ScUndoDraw::GetId() const +USHORT ScUndoDraw::GetId() const { if (pDrawUndo) return pDrawUndo->GetId(); @@ -212,7 +139,7 @@ USHORT __EXPORT ScUndoDraw::GetId() const return 0; } -BOOL __EXPORT ScUndoDraw::IsLinked() +BOOL ScUndoDraw::IsLinked() { if (pDrawUndo) return pDrawUndo->IsLinked(); @@ -220,13 +147,13 @@ BOOL __EXPORT ScUndoDraw::IsLinked() return FALSE; } -void __EXPORT ScUndoDraw::SetLinked( BOOL bIsLinked ) +void ScUndoDraw::SetLinked( BOOL bIsLinked ) { if (pDrawUndo) pDrawUndo->SetLinked(bIsLinked); } -BOOL __EXPORT ScUndoDraw::Merge( SfxUndoAction* pNextAction ) +BOOL ScUndoDraw::Merge( SfxUndoAction* pNextAction ) { if (pDrawUndo) return pDrawUndo->Merge(pNextAction); @@ -234,7 +161,7 @@ BOOL __EXPORT ScUndoDraw::Merge( SfxUndoAction* pNextAction ) return FALSE; } -void __EXPORT ScUndoDraw::Undo() +void ScUndoDraw::Undo() { if (pDrawUndo) { @@ -243,7 +170,7 @@ void __EXPORT ScUndoDraw::Undo() } } -void __EXPORT ScUndoDraw::Redo() +void ScUndoDraw::Redo() { if (pDrawUndo) { @@ -252,13 +179,13 @@ void __EXPORT ScUndoDraw::Redo() } } -void __EXPORT ScUndoDraw::Repeat(SfxRepeatTarget& rTarget) +void ScUndoDraw::Repeat(SfxRepeatTarget& rTarget) { if (pDrawUndo) pDrawUndo->Repeat(rTarget); } -BOOL __EXPORT ScUndoDraw::CanRepeat(SfxRepeatTarget& rTarget) const +BOOL ScUndoDraw::CanRepeat(SfxRepeatTarget& rTarget) const { if (pDrawUndo) return pDrawUndo->CanRepeat(rTarget); diff --git a/sc/source/ui/undo/undostyl.cxx b/sc/source/ui/undo/undostyl.cxx index 5d4af591a2bc..619736f8f188 100644 --- a/sc/source/ui/undo/undostyl.cxx +++ b/sc/source/ui/undo/undostyl.cxx @@ -141,7 +141,6 @@ void lcl_DocStyleChanged( ScDocument* pDoc, SfxStyleSheetBase* pStyle, BOOL bRem pHdl->ForgetLastPattern(); } -// static void ScUndoModifyStyle::DoChange( ScDocShell* pDocSh, const String& rName, SfxStyleFamily eStyleFamily, const ScStyleSaveData& rData ) { diff --git a/sc/source/ui/undo/undotab.cxx b/sc/source/ui/undo/undotab.cxx index c3fdfc156528..e51d749da84c 100644 --- a/sc/source/ui/undo/undotab.cxx +++ b/sc/source/ui/undo/undotab.cxx @@ -61,7 +61,10 @@ extern BOOL bDrawIsInUndo; //! irgendwo als Member !!! using namespace com::sun::star; using ::com::sun::star::uno::Sequence; +using ::rtl::OUString; using ::std::auto_ptr; +using ::std::vector; +using ::boost::shared_ptr; // STATIC DATA ----------------------------------------------------------- @@ -543,23 +546,24 @@ BOOL ScUndoRenameTab::CanRepeat(SfxRepeatTarget& /* rTarget */) const // Tabelle verschieben // -ScUndoMoveTab::ScUndoMoveTab( ScDocShell* pNewDocShell, - const SvShorts &aOldTab, - const SvShorts &aNewTab) : - ScSimpleUndo( pNewDocShell ) +ScUndoMoveTab::ScUndoMoveTab( + ScDocShell* pNewDocShell, vector<SCTAB>* pOldTabs, vector<SCTAB>* pNewTabs, + vector<OUString>* pOldNames, vector<OUString>* pNewNames) : + ScSimpleUndo( pNewDocShell ), + mpOldTabs(pOldTabs), mpNewTabs(pNewTabs), + mpOldNames(pOldNames), mpNewNames(pNewNames) { - int i; - for(i=0;i<aOldTab.Count();i++) - theOldTabs.Insert(aOldTab[sal::static_int_cast<USHORT>(i)],theOldTabs.Count()); + if (mpOldNames && mpOldTabs->size() != mpOldNames->size()) + // The sizes differ. Something is wrong. + mpOldNames.reset(); - for(i=0;i<aNewTab.Count();i++) - theNewTabs.Insert(aNewTab[sal::static_int_cast<USHORT>(i)],theNewTabs.Count()); + if (mpNewNames && mpNewTabs->size() != mpNewNames->size()) + // The sizes differ. Something is wrong. + mpNewNames.reset(); } ScUndoMoveTab::~ScUndoMoveTab() { - theNewTabs.Remove(0,theNewTabs.Count()); - theOldTabs.Remove(0,theOldTabs.Count()); } String ScUndoMoveTab::GetComment() const @@ -574,31 +578,41 @@ void ScUndoMoveTab::DoChange( BOOL bUndo ) const if (bUndo) // UnDo { - for(int i=theNewTabs.Count()-1;i>=0;i--) + for (size_t i = mpNewTabs->size(); i > 0; --i) { - SCTAB nDestTab = theNewTabs[sal::static_int_cast<USHORT>(i)]; - SCTAB nOldTab = theOldTabs[sal::static_int_cast<USHORT>(i)]; + SCTAB nDestTab = (*mpNewTabs)[i-1]; + SCTAB nOldTab = (*mpOldTabs)[i-1]; if (nDestTab > MAXTAB) // angehaengt ? nDestTab = pDoc->GetTableCount() - 1; pDoc->MoveTab( nDestTab, nOldTab ); pViewShell->GetViewData()->MoveTab( nDestTab, nOldTab ); pViewShell->SetTabNo( nOldTab, TRUE ); + if (mpOldNames) + { + const OUString& rOldName = (*mpOldNames)[i-1]; + pDoc->RenameTab(nOldTab, rOldName); + } } } else { - for(int i=0;i<theNewTabs.Count();i++) + for (size_t i = 0, n = mpNewTabs->size(); i < n; ++i) { - SCTAB nDestTab = theNewTabs[sal::static_int_cast<USHORT>(i)]; - SCTAB nNewTab = theNewTabs[sal::static_int_cast<USHORT>(i)]; - SCTAB nOldTab = theOldTabs[sal::static_int_cast<USHORT>(i)]; + SCTAB nDestTab = (*mpNewTabs)[i]; + SCTAB nNewTab = nDestTab; + SCTAB nOldTab = (*mpOldTabs)[i]; if (nDestTab > MAXTAB) // angehaengt ? nDestTab = pDoc->GetTableCount() - 1; pDoc->MoveTab( nOldTab, nNewTab ); pViewShell->GetViewData()->MoveTab( nOldTab, nNewTab ); pViewShell->SetTabNo( nDestTab, TRUE ); + if (mpNewNames) + { + const OUString& rNewName = (*mpNewNames)[i]; + pDoc->RenameTab(nNewTab, rNewName); + } } } @@ -635,20 +649,21 @@ BOOL ScUndoMoveTab::CanRepeat(SfxRepeatTarget& /* rTarget */) const // Tabelle kopieren // -ScUndoCopyTab::ScUndoCopyTab( ScDocShell* pNewDocShell, - const SvShorts &aOldTab, - const SvShorts &aNewTab) : +ScUndoCopyTab::ScUndoCopyTab( + ScDocShell* pNewDocShell, + vector<SCTAB>* pOldTabs, vector<SCTAB>* pNewTabs, + vector<OUString>* pNewNames) : ScSimpleUndo( pNewDocShell ), + mpOldTabs(pOldTabs), + mpNewTabs(pNewTabs), + mpNewNames(pNewNames), pDrawUndo( NULL ) { pDrawUndo = GetSdrUndoAction( pDocShell->GetDocument() ); - int i; - for(i=0;i<aOldTab.Count();i++) - theOldTabs.Insert(aOldTab[sal::static_int_cast<USHORT>(i)],theOldTabs.Count()); - - for(i=0;i<aNewTab.Count();i++) - theNewTabs.Insert(aNewTab[sal::static_int_cast<USHORT>(i)],theNewTabs.Count()); + if (mpNewNames && mpNewTabs->size() != mpNewNames->size()) + // The sizes differ. Something is wrong. + mpNewNames.reset(); } ScUndoCopyTab::~ScUndoCopyTab() @@ -666,7 +681,7 @@ void ScUndoCopyTab::DoChange() const ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell(); if (pViewShell) - pViewShell->SetTabNo(theOldTabs[0],TRUE); + pViewShell->SetTabNo((*mpOldTabs)[0],TRUE); SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) ); // Navigator @@ -681,10 +696,10 @@ void ScUndoCopyTab::Undo() DoSdrUndoAction( pDrawUndo, pDoc ); // before the sheets are deleted - int i; - for(i=theNewTabs.Count()-1;i>=0;i--) + vector<SCTAB>::const_reverse_iterator itr, itrEnd = mpNewTabs->rend(); + for (itr = mpNewTabs->rbegin(); itr != itrEnd; ++itr) { - SCTAB nDestTab = theNewTabs[sal::static_int_cast<USHORT>(i)]; + SCTAB nDestTab = *itr; if (nDestTab > MAXTAB) // append? nDestTab = pDoc->GetTableCount() - 1; @@ -696,9 +711,9 @@ void ScUndoCopyTab::Undo() // ScTablesHint broadcasts after all sheets have been deleted, // so sheets and draw pages are in sync! - for(i=theNewTabs.Count()-1;i>=0;i--) + for (itr = mpNewTabs->rbegin(); itr != itrEnd; ++itr) { - SCTAB nDestTab = theNewTabs[sal::static_int_cast<USHORT>(i)]; + SCTAB nDestTab = *itr; if (nDestTab > MAXTAB) // append? nDestTab = pDoc->GetTableCount() - 1; @@ -714,11 +729,11 @@ void ScUndoCopyTab::Redo() ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell(); SCTAB nDestTab = 0; - for(int i=0;i<theNewTabs.Count();i++) + for (size_t i = 0, n = mpNewTabs->size(); i < n; ++i) { - nDestTab = theNewTabs[sal::static_int_cast<USHORT>(i)]; - SCTAB nNewTab = theNewTabs[sal::static_int_cast<USHORT>(i)]; - SCTAB nOldTab = theOldTabs[sal::static_int_cast<USHORT>(i)]; + nDestTab = (*mpNewTabs)[i]; + SCTAB nNewTab = nDestTab; + SCTAB nOldTab = (*mpOldTabs)[i]; if (nDestTab > MAXTAB) // angehaengt ? nDestTab = pDoc->GetTableCount() - 1; @@ -748,6 +763,12 @@ void ScUndoCopyTab::Redo() if ( pDoc->IsTabProtected( nAdjSource ) ) pDoc->CopyTabProtection(nAdjSource, nNewTab); + + if (mpNewNames) + { + const OUString& rName = (*mpNewNames)[i]; + pDoc->RenameTab(nNewTab, rName); + } } RedoSdrUndoAction( pDrawUndo ); // after the sheets are inserted diff --git a/sc/source/ui/unoobj/ChartRangeSelectionListener.cxx b/sc/source/ui/unoobj/ChartRangeSelectionListener.cxx index ac4b8550c292..d81e376fdfa7 100644 --- a/sc/source/ui/unoobj/ChartRangeSelectionListener.cxx +++ b/sc/source/ui/unoobj/ChartRangeSelectionListener.cxx @@ -70,16 +70,6 @@ void SAL_CALL ScChartRangeSelectionListener::selectionChanged( const lang::Event { m_pViewShell->DoChartSelection( aRanges ); } -// SfxViewFrame *pFrame = SfxViewFrame::GetFirst( m_pDocShell ); -// while (pFrame) -// { -// SfxViewShell* pSh = pFrame->GetViewShell(); -// if (pSh && pSh->ISA(ScTabViewShell)) -// { -// ScTabViewShell* pViewSh = (ScTabViewShell*)pSh; -// } -// pFrame = SfxViewFrame::GetNext( *pFrame, m_pDocShell ); -// } } } diff --git a/sc/source/ui/unoobj/addruno.cxx b/sc/source/ui/unoobj/addruno.cxx index e9618d43210c..4b4a0381e18f 100644 --- a/sc/source/ui/unoobj/addruno.cxx +++ b/sc/source/ui/unoobj/addruno.cxx @@ -117,7 +117,7 @@ uno::Reference<beans::XPropertySetInfo> SAL_CALL ScAddressConversionObj::getProp { {MAP_CHAR_LEN(SC_UNONAME_ADDRESS), 0, &getCppuType((table::CellRangeAddress*)0), 0, 0 }, {MAP_CHAR_LEN(SC_UNONAME_PERSREPR), 0, &getCppuType((rtl::OUString*)0), 0, 0 }, - {MAP_CHAR_LEN(SC_UNONAME_XL_A1_REPR), 0, &getCppuType((rtl::OUString*)0), 0, 0 }, + {MAP_CHAR_LEN(SC_UNONAME_XLA1REPR), 0, &getCppuType((rtl::OUString*)0), 0, 0 }, {MAP_CHAR_LEN(SC_UNONAME_REFSHEET), 0, &getCppuType((sal_Int32*)0), 0, 0 }, {MAP_CHAR_LEN(SC_UNONAME_UIREPR), 0, &getCppuType((rtl::OUString*)0), 0, 0 }, {0,0,0,0,0,0} @@ -131,7 +131,7 @@ uno::Reference<beans::XPropertySetInfo> SAL_CALL ScAddressConversionObj::getProp { {MAP_CHAR_LEN(SC_UNONAME_ADDRESS), 0, &getCppuType((table::CellAddress*)0), 0, 0 }, {MAP_CHAR_LEN(SC_UNONAME_PERSREPR), 0, &getCppuType((rtl::OUString*)0), 0, 0 }, - {MAP_CHAR_LEN(SC_UNONAME_XL_A1_REPR), 0, &getCppuType((rtl::OUString*)0), 0, 0 }, + {MAP_CHAR_LEN(SC_UNONAME_XLA1REPR), 0, &getCppuType((rtl::OUString*)0), 0, 0 }, {MAP_CHAR_LEN(SC_UNONAME_REFSHEET), 0, &getCppuType((sal_Int32*)0), 0, 0 }, {MAP_CHAR_LEN(SC_UNONAME_UIREPR), 0, &getCppuType((rtl::OUString*)0), 0, 0 }, {0,0,0,0,0,0} @@ -193,11 +193,11 @@ void SAL_CALL ScAddressConversionObj::setPropertyValue( const rtl::OUString& aPr bSuccess = ParseUIString( aUIString ); } } - else if ( aNameStr.EqualsAscii( SC_UNONAME_PERSREPR ) || aNameStr.EqualsAscii( SC_UNONAME_XL_A1_REPR ) ) + else if ( aNameStr.EqualsAscii( SC_UNONAME_PERSREPR ) || aNameStr.EqualsAscii( SC_UNONAME_XLA1REPR ) ) { - ::formula::FormulaGrammar::AddressConvention aConv = ::formula::FormulaGrammar::CONV_OOO; - if ( aNameStr.EqualsAscii( SC_UNONAME_XL_A1_REPR ) ) - aConv = ::formula::FormulaGrammar::CONV_XL_A1; + ::formula::FormulaGrammar::AddressConvention aConv = aNameStr.EqualsAscii( SC_UNONAME_PERSREPR ) ? + ::formula::FormulaGrammar::CONV_OOO : ::formula::FormulaGrammar::CONV_XL_A1; + // parse the file format string rtl::OUString sRepresentation; if (aValue >>= sRepresentation) @@ -271,24 +271,23 @@ uno::Any SAL_CALL ScAddressConversionObj::getPropertyValue( const rtl::OUString& aRange.aStart.Format( aFormatStr, nFlags, pDoc ); aRet <<= rtl::OUString( aFormatStr ); } - else if ( aNameStr.EqualsAscii( SC_UNONAME_PERSREPR ) || aNameStr.EqualsAscii( SC_UNONAME_XL_A1_REPR ) ) + else if ( aNameStr.EqualsAscii( SC_UNONAME_PERSREPR ) || aNameStr.EqualsAscii( SC_UNONAME_XLA1REPR ) ) { - ::formula::FormulaGrammar::AddressConvention aConv = ::formula::FormulaGrammar::CONV_OOO; - if ( aNameStr.EqualsAscii( SC_UNONAME_XL_A1_REPR ) ) - aConv = ::formula::FormulaGrammar::CONV_XL_A1; + ::formula::FormulaGrammar::AddressConvention eConv = aNameStr.EqualsAscii( SC_UNONAME_PERSREPR ) ? + ::formula::FormulaGrammar::CONV_OOO : ::formula::FormulaGrammar::CONV_XL_A1; // generate file format string - always include sheet String aFormatStr; - aRange.aStart.Format( aFormatStr, SCA_VALID | SCA_TAB_3D, pDoc, aConv ); + aRange.aStart.Format( aFormatStr, SCA_VALID | SCA_TAB_3D, pDoc, eConv ); if ( bIsRange ) { // manually concatenate range so both parts always have the sheet name aFormatStr.Append( (sal_Unicode) ':' ); String aSecond; USHORT nFlags = SCA_VALID; - if( aConv != ::formula::FormulaGrammar::CONV_XL_A1 ) - nFlags |= SCA_TAB_3D; - aRange.aEnd.Format( aSecond, SCA_VALID | SCA_TAB_3D, pDoc, aConv ); + if( eConv != ::formula::FormulaGrammar::CONV_XL_A1 ) + nFlags |= SCA_TAB_3D; + aRange.aEnd.Format( aSecond, SCA_VALID | SCA_TAB_3D, pDoc, eConv ); aFormatStr.Append( aSecond ); } aRet <<= rtl::OUString( aFormatStr ); @@ -305,7 +304,7 @@ SC_IMPL_DUMMY_PROPERTY_LISTENER( ScAddressConversionObj ) rtl::OUString SAL_CALL ScAddressConversionObj::getImplementationName() throw(uno::RuntimeException) { - return rtl::OUString::createFromAscii( "ScAddressConversionObj" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ScAddressConversionObj" )); } sal_Bool SAL_CALL ScAddressConversionObj::supportsService( const rtl::OUString& rServiceName ) @@ -321,8 +320,8 @@ uno::Sequence<rtl::OUString> SAL_CALL ScAddressConversionObj::getSupportedServic { uno::Sequence<rtl::OUString> aRet(1); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( bIsRange ? SC_SERVICENAME_RANGEADDRESS - : SC_SERVICENAME_CELLADDRESS ); + pArray[0] = bIsRange ? rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_SERVICENAME_RANGEADDRESS)) + : rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_SERVICENAME_CELLADDRESS)); return aRet; } diff --git a/sc/source/ui/unoobj/afmtuno.cxx b/sc/source/ui/unoobj/afmtuno.cxx index bd1991203887..8f98266d87d0 100644 --- a/sc/source/ui/unoobj/afmtuno.cxx +++ b/sc/source/ui/unoobj/afmtuno.cxx @@ -209,14 +209,14 @@ uno::Reference<uno::XInterface> SAL_CALL ScAutoFormatsObj_CreateInstance( rtl::OUString ScAutoFormatsObj::getImplementationName_Static() { - return rtl::OUString::createFromAscii( "stardiv.StarCalc.ScAutoFormatsObj" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "stardiv.StarCalc.ScAutoFormatsObj" )); } uno::Sequence<rtl::OUString> ScAutoFormatsObj::getSupportedServiceNames_Static() { uno::Sequence<rtl::OUString> aRet(1); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCAUTOFORMATSOBJ_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCAUTOFORMATSOBJ_SERVICE )); return aRet; } @@ -470,7 +470,6 @@ sal_Int64 SAL_CALL ScAutoFormatObj::getSomething( return 0; } -// static const uno::Sequence<sal_Int8>& ScAutoFormatObj::getUnoTunnelId() { static uno::Sequence<sal_Int8> * pSeq = 0; @@ -487,7 +486,6 @@ const uno::Sequence<sal_Int8>& ScAutoFormatObj::getUnoTunnelId() return *pSeq; } -// static ScAutoFormatObj* ScAutoFormatObj::getImplementation( const uno::Reference<uno::XInterface> xObj ) { diff --git a/sc/source/ui/unoobj/appluno.cxx b/sc/source/ui/unoobj/appluno.cxx index 6db804e0bb9f..55883b5ed5f7 100644 --- a/sc/source/ui/unoobj/appluno.cxx +++ b/sc/source/ui/unoobj/appluno.cxx @@ -189,9 +189,9 @@ static void lcl_WriteInfo( registry::XRegistryKey* pRegistryKey, const uno::Sequence< rtl::OUString >& rServices ) throw( registry::InvalidRegistryException ) { - rtl::OUString aImpl(rtl::OUString::createFromAscii( "/" )); + rtl::OUString aImpl(RTL_CONSTASCII_USTRINGPARAM( "/" )); aImpl += rImplementationName; - aImpl += rtl::OUString::createFromAscii( "/UNO/SERVICES" ); + aImpl += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "/UNO/SERVICES" )); uno::Reference<registry::XRegistryKey> xNewKey(pRegistryKey->createKey(aImpl)); const rtl::OUString* pArray = rServices.getConstArray(); @@ -504,14 +504,14 @@ uno::Reference<uno::XInterface> SAL_CALL ScSpreadsheetSettings_CreateInstance( rtl::OUString ScSpreadsheetSettings::getImplementationName_Static() { - return rtl::OUString::createFromAscii( "stardiv.StarCalc.ScSpreadsheetSettings" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "stardiv.StarCalc.ScSpreadsheetSettings" )); } uno::Sequence<rtl::OUString> ScSpreadsheetSettings::getSupportedServiceNames_Static() { uno::Sequence<rtl::OUString> aRet(1); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCSPREADSHEETSETTINGS_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCSPREADSHEETSETTINGS_SERVICE )); return aRet; } @@ -767,14 +767,14 @@ uno::Reference<uno::XInterface> SAL_CALL ScRecentFunctionsObj_CreateInstance( rtl::OUString ScRecentFunctionsObj::getImplementationName_Static() { - return rtl::OUString::createFromAscii( "stardiv.StarCalc.ScRecentFunctionsObj" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "stardiv.StarCalc.ScRecentFunctionsObj" )); } uno::Sequence<rtl::OUString> ScRecentFunctionsObj::getSupportedServiceNames_Static() { uno::Sequence<rtl::OUString> aRet(1); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCRECENTFUNCTIONSOBJ_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCRECENTFUNCTIONSOBJ_SERVICE )); return aRet; } @@ -848,14 +848,14 @@ uno::Reference<uno::XInterface> SAL_CALL ScFunctionListObj_CreateInstance( rtl::OUString ScFunctionListObj::getImplementationName_Static() { - return rtl::OUString::createFromAscii( "stardiv.StarCalc.ScFunctionListObj" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "stardiv.StarCalc.ScFunctionListObj" )); } uno::Sequence<rtl::OUString> ScFunctionListObj::getSupportedServiceNames_Static() { uno::Sequence<rtl::OUString> aRet(1); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCFUNCTIONLISTOBJ_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCFUNCTIONLISTOBJ_SERVICE )); return aRet; } @@ -868,21 +868,21 @@ static void lcl_FillSequence( uno::Sequence<beans::PropertyValue>& rSequence, co beans::PropertyValue* pArray = rSequence.getArray(); - pArray[0].Name = rtl::OUString::createFromAscii( SC_UNONAME_ID ); + pArray[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_ID )); pArray[0].Value <<= (sal_Int32) rDesc.nFIndex; - pArray[1].Name = rtl::OUString::createFromAscii( SC_UNONAME_CATEGORY ); + pArray[1].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_CATEGORY )); pArray[1].Value <<= (sal_Int32) rDesc.nCategory; - pArray[2].Name = rtl::OUString::createFromAscii( SC_UNONAME_NAME ); + pArray[2].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_NAME )); if (rDesc.pFuncName) pArray[2].Value <<= rtl::OUString( *rDesc.pFuncName ); - pArray[3].Name = rtl::OUString::createFromAscii( SC_UNONAME_DESCRIPTION ); + pArray[3].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_DESCRIPTION )); if (rDesc.pFuncDesc) pArray[3].Value <<= rtl::OUString( *rDesc.pFuncDesc ); - pArray[4].Name = rtl::OUString::createFromAscii( SC_UNONAME_ARGUMENTS ); + pArray[4].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_ARGUMENTS )); if (rDesc.ppDefArgNames && rDesc.ppDefArgDescs && rDesc.pDefArgFlags ) { USHORT nCount = rDesc.nArgCount; @@ -952,7 +952,7 @@ uno::Any SAL_CALL ScFunctionListObj::getByName( const rtl::OUString& aName ) lang::WrappedTargetException, uno::RuntimeException) { SolarMutexGuard aGuard; - String aNameStr(aName); + ::rtl::OUString aNameStr(aName); const ScFunctionList* pFuncList = ScGlobal::GetStarCalcFunctionList(); if ( pFuncList ) { @@ -982,10 +982,10 @@ uno::Any SAL_CALL ScFunctionListObj::getByName( const rtl::OUString& aName ) sal_Int32 SAL_CALL ScFunctionListObj::getCount() throw(uno::RuntimeException) { SolarMutexGuard aGuard; - USHORT nCount = 0; + sal_Int32 nCount = 0; const ScFunctionList* pFuncList = ScGlobal::GetStarCalcFunctionList(); if ( pFuncList ) - nCount = (USHORT)pFuncList->GetCount(); + nCount = static_cast<sal_Int32>(pFuncList->GetCount()); return nCount; } @@ -1045,10 +1045,10 @@ uno::Sequence<rtl::OUString> SAL_CALL ScFunctionListObj::getElementNames() throw const ScFunctionList* pFuncList = ScGlobal::GetStarCalcFunctionList(); if ( pFuncList ) { - USHORT nCount = (USHORT)pFuncList->GetCount(); + sal_uInt32 nCount = pFuncList->GetCount(); uno::Sequence<rtl::OUString> aSeq(nCount); rtl::OUString* pAry = aSeq.getArray(); - for (USHORT nIndex=0; nIndex<nCount; nIndex++) + for (sal_uInt32 nIndex=0; nIndex<nCount; ++nIndex) { const ScFuncDesc* pDesc = pFuncList->GetFunction(nIndex); if ( pDesc && pDesc->pFuncName ) @@ -1063,20 +1063,19 @@ sal_Bool SAL_CALL ScFunctionListObj::hasByName( const rtl::OUString& aName ) throw(uno::RuntimeException) { SolarMutexGuard aGuard; - String aNameStr(aName); const ScFunctionList* pFuncList = ScGlobal::GetStarCalcFunctionList(); if ( pFuncList ) { - USHORT nCount = (USHORT)pFuncList->GetCount(); - for (USHORT nIndex=0; nIndex<nCount; nIndex++) + sal_uInt32 nCount = pFuncList->GetCount(); + for (sal_uInt32 nIndex=0; nIndex<nCount; ++nIndex) { const ScFuncDesc* pDesc = pFuncList->GetFunction(nIndex); //! Case-insensitiv ??? - if ( pDesc && pDesc->pFuncName && aNameStr == *pDesc->pFuncName ) - return TRUE; + if ( pDesc && pDesc->pFuncName && aName == *pDesc->pFuncName ) + return sal_True; } } - return FALSE; + return sal_False; } //------------------------------------------------------------------------ diff --git a/sc/source/ui/unoobj/celllistsource.cxx b/sc/source/ui/unoobj/celllistsource.cxx index c10fadccea7c..cf058b3bb6da 100644 --- a/sc/source/ui/unoobj/celllistsource.cxx +++ b/sc/source/ui/unoobj/celllistsource.cxx @@ -90,7 +90,7 @@ namespace calc // register our property at the base class CellRangeAddress aInitialPropValue; registerPropertyNoMember( - ::rtl::OUString::createFromAscii( "CellRange" ), + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "CellRange" )), PROP_HANDLE_RANGE_ADDRESS, PropertyAttribute::BOUND | PropertyAttribute::READONLY, ::getCppuType( &aInitialPropValue ), diff --git a/sc/source/ui/unoobj/cellsuno.cxx b/sc/source/ui/unoobj/cellsuno.cxx index 8514810406df..fc908d3b6e13 100644 --- a/sc/source/ui/unoobj/cellsuno.cxx +++ b/sc/source/ui/unoobj/cellsuno.cxx @@ -29,7 +29,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sc.hxx" - #include "scitems.hxx" #include <editeng/eeitem.hxx> #include <svx/svdpool.hxx> @@ -126,6 +125,7 @@ #include "formula/errorcodes.hxx" #include "unoreflist.hxx" #include "formula/grammar.hxx" +#include "editeng/escpitem.hxx" #include <list> @@ -133,7 +133,6 @@ using namespace com::sun::star; //------------------------------------------------------------------------ - class ScNamedEntry { String aName; @@ -147,7 +146,6 @@ public: const ScRange& GetRange() const { return aRange; } }; - //------------------------------------------------------------------------ // Die Namen in den Maps muessen (nach strcmp) sortiert sein! @@ -456,6 +454,7 @@ const SfxItemPropertySet* lcl_GetCellPropertySet() {MAP_CHAR_LEN(SC_UNONAME_CELLVJUS), ATTR_VER_JUSTIFY, &getCppuType((sal_Int32*)0), 0, 0 }, {MAP_CHAR_LEN(SC_UNONAME_CELLVJUS_METHOD), ATTR_VER_JUSTIFY_METHOD, &::getCppuType((const sal_Int32*)0), 0, 0 }, {MAP_CHAR_LEN(SC_UNONAME_WRITING), ATTR_WRITINGDIR, &getCppuType((sal_Int16*)0), 0, 0 }, + {MAP_CHAR_LEN(UNO_NAME_EDIT_CHAR_ESCAPEMENT), EE_CHAR_ESCAPEMENT, &getCppuType((sal_Int32*)0), 0, 0 }, {0,0,0,0,0,0} }; static SfxItemPropertySet aCellPropertySet( aCellPropertyMap_Impl ); @@ -813,7 +812,6 @@ const SvxItemPropertySet* lcl_GetEditPropertySet() return &aEditPropertySet; } - //------------------------------------------------------------------------ //! diese Funktionen in einen allgemeinen Header verschieben @@ -880,8 +878,8 @@ void lcl_CopyProperties( beans::XPropertySet& rDest, beans::XPropertySet& rSourc SCTAB lcl_FirstTab( const ScRangeList& rRanges ) { - DBG_ASSERT(rRanges.Count() >= 1, "was fuer Ranges ?!?!"); - const ScRange* pFirst = rRanges.GetObject(0); + DBG_ASSERT(rRanges.size() >= 1, "was fuer Ranges ?!?!"); + const ScRange* pFirst = rRanges[ 0 ]; if (pFirst) return pFirst->aStart.Tab(); @@ -890,9 +888,9 @@ SCTAB lcl_FirstTab( const ScRangeList& rRanges ) BOOL lcl_WholeSheet( const ScRangeList& rRanges ) { - if ( rRanges.Count() == 1 ) + if ( rRanges.size() == 1 ) { - ScRange* pRange = rRanges.GetObject(0); + const ScRange* pRange = rRanges[0]; if ( pRange && pRange->aStart.Col() == 0 && pRange->aEnd.Col() == MAXCOL && pRange->aStart.Row() == 0 && pRange->aEnd.Row() == MAXROW ) return TRUE; @@ -1033,11 +1031,10 @@ void ScHelperFunctions::ApplyBorder( ScDocShell* pDocShell, const ScRangeList& r ScDocument* pUndoDoc = NULL; if (bUndo) pUndoDoc = new ScDocument( SCDOCMODE_UNDO ); - ULONG nCount = rRanges.Count(); - ULONG i; - for (i=0; i<nCount; i++) + size_t nCount = rRanges.size(); + for (size_t i = 0; i < nCount; ++i) { - ScRange aRange(*rRanges.GetObject(i)); + ScRange aRange( *rRanges[ i ] ); SCTAB nTab = aRange.aStart.Tab(); if (bUndo) @@ -1063,8 +1060,8 @@ void ScHelperFunctions::ApplyBorder( ScDocShell* pDocShell, const ScRangeList& r new ScUndoBorder( pDocShell, rRanges, pUndoDoc, rOuter, rInner ) ); } - for (i=0; i<nCount; i++) - pDocShell->PostPaint( *rRanges.GetObject(i), PAINT_GRID, SC_PF_LINES | SC_PF_TESTMERGE ); + for (size_t i = 0; i < nCount; ++i ) + pDocShell->PostPaint( *rRanges[ i ], PAINT_GRID, SC_PF_LINES | SC_PF_TESTMERGE ); pDocShell->SetDocumentModified(); } @@ -1338,25 +1335,6 @@ String lcl_GetInputString( ScDocument* pDoc, const ScAddress& rPosition, BOOL bE //------------------------------------------------------------------------ -// Default-ctor fuer SMART_REFLECTION Krempel -ScCellRangesBase::ScCellRangesBase() : - pPropSet(lcl_GetCellsPropertySet()), - pDocShell( NULL ), - pValueListener( NULL ), - pCurrentFlat( NULL ), - pCurrentDeep( NULL ), - pCurrentDataSet( NULL ), - pNoDfltCurrentDataSet( NULL ), - pMarkData( NULL ), - nObjectId( 0 ), - bChartColAsHdr( FALSE ), - bChartRowAsHdr( FALSE ), - bCursorOnly( FALSE ), - bGotDataChangedHint( FALSE ), - aValueListeners( 0 ) -{ -} - ScCellRangesBase::ScCellRangesBase(ScDocShell* pDocSh, const ScRange& rR) : pPropSet(lcl_GetCellsPropertySet()), pDocShell( pDocSh ), @@ -1511,12 +1489,13 @@ void ScCellRangesBase::Notify( SfxBroadcaster&, const SfxHint& rHint ) if ( aRanges.UpdateReference( rRef.GetMode(), pDoc, rRef.GetRange(), rRef.GetDx(), rRef.GetDy(), rRef.GetDz() ) ) { - if (rRef.GetMode() == URM_INSDEL && - aRanges.Count() == 1 && - ScTableSheetObj::getImplementation( (cppu::OWeakObject*)this )) + if ( rRef.GetMode() == URM_INSDEL + && aRanges.size() == 1 + && ScTableSheetObj::getImplementation( (cppu::OWeakObject*)this ) + ) { // #101755#; the range size of a sheet does not change - ScRange* pR = aRanges.First(); + ScRange* pR = aRanges.front(); if (pR) { pR->aStart.SetCol(0); @@ -1621,9 +1600,8 @@ void ScCellRangesBase::RefChanged() pValueListener->EndListeningAll(); ScDocument* pDoc = pDocShell->GetDocument(); - ULONG nCount = aRanges.Count(); - for (ULONG i=0; i<nCount; i++) - pDoc->StartListeningArea( *aRanges.GetObject(i), pValueListener ); + for ( size_t i = 0, nCount = aRanges.size(); i < nCount; ++i ) + pDoc->StartListeningArea( *aRanges[ i ], pValueListener ); } ForgetCurrentAttrs(); @@ -1761,9 +1739,8 @@ uno::Sequence<sal_Int8> SAL_CALL ScCellRangesBase::getImplementationId() void ScCellRangesBase::PaintRanges_Impl( USHORT nPart ) { - ULONG nCount = aRanges.Count(); - for (ULONG i=0; i<nCount; i++) - pDocShell->PostPaint( *aRanges.GetObject(i), nPart ); + for (size_t i = 0, nCount = aRanges.size(); i < nCount; ++i) + pDocShell->PostPaint( *aRanges[ i ], nPart ); } // XSheetOperation @@ -1792,7 +1769,7 @@ double SAL_CALL ScCellRangesBase::computeFunction( sheet::GeneralFunction nFunct void SAL_CALL ScCellRangesBase::clearContents( sal_Int32 nContentFlags ) throw(uno::RuntimeException) { SolarMutexGuard aGuard; - if ( aRanges.Count() ) + if ( !aRanges.empty() ) { // only for clearContents: EDITATTR is only used if no contents are deleted USHORT nDelFlags = static_cast< USHORT >( nContentFlags & IDF_ALL ); @@ -1899,7 +1876,7 @@ beans::PropertyState SAL_CALL ScCellRangesBase::getPropertyState( const rtl::OUS throw(beans::UnknownPropertyException, uno::RuntimeException) { SolarMutexGuard aGuard; - if ( aRanges.Count() == 0 ) + if ( aRanges.empty() ) throw uno::RuntimeException(); const SfxItemPropertyMap* pMap = GetItemPropertyMap(); // from derived class @@ -1941,7 +1918,7 @@ void SAL_CALL ScCellRangesBase::setPropertyToDefault( const rtl::OUString& aProp lcl_GetPropertyWhich( pEntry, nItemWhich ); if ( nItemWhich ) // item wid (from map or special case) { - if ( aRanges.Count() ) // leer = nichts zu tun + if ( !aRanges.empty() ) // leer = nichts zu tun { ScDocFunc aFunc(*pDocShell); @@ -2090,7 +2067,6 @@ uno::Reference<beans::XPropertySetInfo> SAL_CALL ScCellRangesBase::getPropertySe return aRef; } - void lcl_SetCellProperty( const SfxItemPropertySimpleEntry& rEntry, const uno::Any& rValue, ScPatternAttr& rPattern, ScDocument* pDoc, USHORT& rFirstItemId, USHORT& rSecondItemId ) @@ -2209,7 +2185,7 @@ void SAL_CALL ScCellRangesBase::setPropertyValue( { SolarMutexGuard aGuard; - if ( !pDocShell || aRanges.Count() == 0 ) + if ( !pDocShell || aRanges.empty() ) throw uno::RuntimeException(); const SfxItemPropertyMap* pPropertyMap = GetItemPropertyMap(); // from derived class @@ -2227,7 +2203,7 @@ void ScCellRangesBase::SetOnePropertyValue( const SfxItemPropertySimpleEntry* pE { if ( IsScItemWid( pEntry->nWID ) ) { - if ( aRanges.Count() ) // leer = nichts zu tun + if ( !aRanges.empty() ) // leer = nichts zu tun { ScDocument* pDoc = pDocShell->GetDocument(); ScDocFunc aFunc(*pDocShell); @@ -2256,6 +2232,40 @@ void ScCellRangesBase::SetOnePropertyValue( const SfxItemPropertySimpleEntry* pE else // implemented here switch ( pEntry->nWID ) { + case EE_CHAR_ESCAPEMENT: // Specifically for xlsx import + { + sal_Int32 nValue(0); + aValue >>= nValue; + if( nValue ) + { + size_t n = aRanges.size(); + for( size_t i = 0; i < n; i++ ) + { + ScRange aRange( *aRanges[ i ] ); + /* TODO: Iterate through the range */ + ScAddress aAddr = aRange.aStart; + ScDocument *pDoc = pDocShell->GetDocument(); + ScBaseCell *pCell = pDoc->GetCell( aAddr ); + String aStr( pCell->GetStringData() ); + EditEngine aEngine( pDoc->GetEnginePool() ); + /* EE_CHAR_ESCAPEMENT seems to be set on the cell _only_ when + * there are no other attribs for the cell. + * So, it is safe to overwrite the complete attribute set. + * If there is a need - getting CellType and processing + * the attributes could be considered. + */ + SfxItemSet aAttr = aEngine.GetEmptyItemSet(); + aEngine.SetText( aStr ); + if( nValue < 0 ) // Subscript + aAttr.Put( SvxEscapementItem( SVX_ESCAPEMENT_SUBSCRIPT, EE_CHAR_ESCAPEMENT ) ); + else // Superscript + aAttr.Put( SvxEscapementItem( SVX_ESCAPEMENT_SUPERSCRIPT, EE_CHAR_ESCAPEMENT ) ); + aEngine.QuickSetAttribs( aAttr, ESelection( 0, 0, 0, aStr.Len())); + pDoc->PutCell( (aRanges[ 0 ])->aStart, new ScEditCell( aEngine.CreateTextObject(), pDoc, NULL ) ); + } + } + } + break; case SC_WID_UNO_CHCOLHDR: // chart header flags are set for this object, not stored with document bChartColAsHdr = ScUnoHelpFunctions::GetBoolFromAny( aValue ); @@ -2276,7 +2286,7 @@ void ScCellRangesBase::SetOnePropertyValue( const SfxItemPropertySimpleEntry* pE case SC_WID_UNO_TBLBORD: { table::TableBorder aBorder; - if ( aRanges.Count() && ( aValue >>= aBorder ) ) // empty = nothing to do + if ( !aRanges.empty() && ( aValue >>= aBorder ) ) // empty = nothing to do { SvxBoxItem aOuter(ATTR_BORDER); SvxBoxInfoItem aInner(ATTR_BORDER_INNER); @@ -2291,7 +2301,7 @@ void ScCellRangesBase::SetOnePropertyValue( const SfxItemPropertySimpleEntry* pE case SC_WID_UNO_CONDXML: { uno::Reference<sheet::XSheetConditionalEntries> xInterface(aValue, uno::UNO_QUERY); - if ( aRanges.Count() && xInterface.is() ) // leer = nichts zu tun + if ( !aRanges.empty() && xInterface.is() ) // leer = nichts zu tun { ScTableConditionalFormat* pFormat = ScTableConditionalFormat::getImplementation( xInterface ); @@ -2322,7 +2332,7 @@ void ScCellRangesBase::SetOnePropertyValue( const SfxItemPropertySimpleEntry* pE case SC_WID_UNO_VALIXML: { uno::Reference<beans::XPropertySet> xInterface(aValue, uno::UNO_QUERY); - if ( aRanges.Count() && xInterface.is() ) // leer = nichts zu tun + if ( !aRanges.empty() && xInterface.is() ) // leer = nichts zu tun { ScTableValidationObj* pValidObj = ScTableValidationObj::getImplementation( xInterface ); @@ -2360,7 +2370,7 @@ uno::Any SAL_CALL ScCellRangesBase::getPropertyValue( const rtl::OUString& aProp { SolarMutexGuard aGuard; - if ( !pDocShell || aRanges.Count() == 0 ) + if ( !pDocShell || aRanges.empty() ) throw uno::RuntimeException(); const SfxItemPropertyMap* pPropertyMap = GetItemPropertyMap(); // from derived class @@ -2437,9 +2447,9 @@ void ScCellRangesBase::GetOnePropertyValue( const SfxItemPropertySimpleEntry* pE case SC_WID_UNO_TBLBORD: { //! loop throgh all ranges - const ScRange* pFirst = aRanges.GetObject(0); - if (pFirst) + if ( !aRanges.empty() ) { + const ScRange* pFirst = aRanges[ 0 ]; SvxBoxItem aOuter(ATTR_BORDER); SvxBoxInfoItem aInner(ATTR_BORDER_INNER); @@ -2517,7 +2527,7 @@ void SAL_CALL ScCellRangesBase::addPropertyChangeListener( const rtl::OUString& lang::WrappedTargetException, uno::RuntimeException) { SolarMutexGuard aGuard; - if ( aRanges.Count() == 0 ) + if ( aRanges.empty() ) throw uno::RuntimeException(); DBG_ERROR("not implemented"); @@ -2529,7 +2539,7 @@ void SAL_CALL ScCellRangesBase::removePropertyChangeListener( const rtl::OUStrin lang::WrappedTargetException, uno::RuntimeException) { SolarMutexGuard aGuard; - if ( aRanges.Count() == 0 ) + if ( aRanges.empty() ) throw uno::RuntimeException(); DBG_ERROR("not implemented"); @@ -2638,7 +2648,7 @@ void SAL_CALL ScCellRangesBase::setPropertyValues( const uno::Sequence< rtl::OUS } } - if ( pNewPattern && aRanges.Count() ) + if ( pNewPattern && !aRanges.empty() ) { ScDocFunc aFunc(*pDocShell); aFunc.ApplyAttributes( *GetMarkData(), *pNewPattern, TRUE, TRUE ); @@ -2813,7 +2823,7 @@ uno::Sequence< beans::SetPropertyTolerantFailed > SAL_CALL ScCellRangesBase::set } } - if ( pNewPattern && aRanges.Count() ) + if ( pNewPattern && !aRanges.empty() ) { ScDocFunc aFunc(*pDocShell); aFunc.ApplyAttributes( *GetMarkData(), *pNewPattern, TRUE, TRUE ); @@ -2903,7 +2913,7 @@ uno::Sequence< beans::GetDirectPropertyTolerantResult > SAL_CALL ScCellRangesBas void SAL_CALL ScCellRangesBase::decrementIndent() throw(::com::sun::star::uno::RuntimeException) { SolarMutexGuard aGuard; - if ( pDocShell && aRanges.Count() ) // leer = nichts zu tun + if ( pDocShell && !aRanges.empty() ) // leer = nichts zu tun { ScDocFunc aFunc(*pDocShell); //#97041#; put only MultiMarked ScMarkData in ChangeIndent @@ -2916,7 +2926,7 @@ void SAL_CALL ScCellRangesBase::decrementIndent() throw(::com::sun::star::uno::R void SAL_CALL ScCellRangesBase::incrementIndent() throw(::com::sun::star::uno::RuntimeException) { SolarMutexGuard aGuard; - if ( pDocShell && aRanges.Count() ) // leer = nichts zu tun + if ( pDocShell && !aRanges.empty() ) // leer = nichts zu tun { ScDocFunc aFunc(*pDocShell); //#97041#; put only MultiMarked ScMarkData in ChangeIndent @@ -2930,16 +2940,16 @@ void SAL_CALL ScCellRangesBase::incrementIndent() throw(::com::sun::star::uno::R ScMemChart* ScCellRangesBase::CreateMemChart_Impl() const { - if ( pDocShell && aRanges.Count() ) + if ( pDocShell && !aRanges.empty() ) { ScRangeListRef xChartRanges; - if ( aRanges.Count() == 1 ) + if ( aRanges.size() == 1 ) { // ganze Tabelle sinnvoll begrenzen (auf belegten Datenbereich) // (nur hier, Listener werden auf den ganzen Bereich angemeldet) //! direkt testen, ob es ein ScTableSheetObj ist? - ScRange* pRange = aRanges.GetObject(0); + const ScRange* pRange = aRanges[0]; if ( pRange->aStart.Col() == 0 && pRange->aEnd.Col() == MAXCOL && pRange->aStart.Row() == 0 && pRange->aEnd.Row() == MAXROW ) { @@ -3008,9 +3018,9 @@ uno::Sequence< uno::Sequence<double> > SAL_CALL ScCellRangesBase::getData() ScRangeListRef ScCellRangesBase::GetLimitedChartRanges_Impl( long nDataColumns, long nDataRows ) const { - if ( aRanges.Count() == 1 ) + if ( aRanges.size() == 1 ) { - ScRange* pRange = aRanges.GetObject(0); + const ScRange* pRange = aRanges[0]; if ( pRange->aStart.Col() == 0 && pRange->aEnd.Col() == MAXCOL && pRange->aStart.Row() == 0 && pRange->aEnd.Row() == MAXROW ) { @@ -3277,7 +3287,7 @@ void SAL_CALL ScCellRangesBase::addChartDataChangeEventListener( const uno::Refe throw(uno::RuntimeException) { SolarMutexGuard aGuard; - if ( pDocShell && aRanges.Count() ) + if ( pDocShell && !aRanges.empty() ) { //! auf doppelte testen? @@ -3298,7 +3308,7 @@ void SAL_CALL ScCellRangesBase::removeChartDataChangeEventListener( const uno::R throw(uno::RuntimeException) { SolarMutexGuard aGuard; - if ( pDocShell && aRanges.Count() ) + if ( pDocShell && !aRanges.empty() ) { ScDocument* pDoc = pDocShell->GetDocument(); ScChartListenerCollection* pColl = pDoc->GetChartListenerCollection(); @@ -3324,7 +3334,7 @@ void SAL_CALL ScCellRangesBase::addModifyListener( const uno::Reference<util::XM throw(uno::RuntimeException) { SolarMutexGuard aGuard; - if ( aRanges.Count() == 0 ) + if ( aRanges.empty() ) throw uno::RuntimeException(); uno::Reference<util::XModifyListener> *pObj = @@ -3337,9 +3347,8 @@ void SAL_CALL ScCellRangesBase::addModifyListener( const uno::Reference<util::XM pValueListener = new ScLinkListener( LINK( this, ScCellRangesBase, ValueListenerHdl ) ); ScDocument* pDoc = pDocShell->GetDocument(); - ULONG nCount = aRanges.Count(); - for (ULONG i=0; i<nCount; i++) - pDoc->StartListeningArea( *aRanges.GetObject(i), pValueListener ); + for ( size_t i = 0, nCount = aRanges.size(); i < nCount; i++) + pDoc->StartListeningArea( *aRanges[ i ], pValueListener ); acquire(); // don't lose this object (one ref for all listeners) } @@ -3350,7 +3359,7 @@ void SAL_CALL ScCellRangesBase::removeModifyListener( const uno::Reference<util: { SolarMutexGuard aGuard; - if ( aRanges.Count() == 0 ) + if ( aRanges.empty() ) throw uno::RuntimeException(); acquire(); // in case the listeners have the last ref - released below @@ -3431,10 +3440,9 @@ uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryEmptyCel ScMarkData aMarkData(*GetMarkData()); // belegte Zellen wegmarkieren - ULONG nCount = aRanges.Count(); - for (ULONG i=0; i<nCount; i++) + for (size_t i = 0, nCount = aRanges.size(); i < nCount; ++i) { - ScRange aRange = *aRanges.GetObject(i); + ScRange aRange = *aRanges[ i ]; ScCellIterator aIter( pDoc, aRange ); ScBaseCell* pCell = aIter.GetFirst(); @@ -3473,10 +3481,9 @@ uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryContentC ScMarkData aMarkData; // passende Zellen selektieren - ULONG nCount = aRanges.Count(); - for (ULONG i=0; i<nCount; i++) + for ( size_t i = 0, nCount = aRanges.size(); i < nCount; ++i ) { - ScRange aRange = *aRanges.GetObject(i); + ScRange aRange = *aRanges[ i ]; ScCellIterator aIter( pDoc, aRange ); ScBaseCell* pCell = aIter.GetFirst(); @@ -3562,10 +3569,9 @@ uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryFormulaC ScMarkData aMarkData; // passende Zellen selektieren - ULONG nCount = aRanges.Count(); - for (ULONG i=0; i<nCount; i++) + for ( size_t i = 0, nCount = aRanges.size(); i < nCount; ++i ) { - ScRange aRange = *aRanges.GetObject(i); + ScRange aRange = *aRanges[ i ]; ScCellIterator aIter( pDoc, aRange ); ScBaseCell* pCell = aIter.GetFirst(); @@ -3616,8 +3622,8 @@ uno::Reference<sheet::XSheetCellRanges> ScCellRangesBase::QueryDifferences_Impl( { if (pDocShell) { - ULONG nRangeCount = aRanges.Count(); - ULONG i; + size_t nRangeCount = aRanges.size(); + size_t i; ScDocument* pDoc = pDocShell->GetDocument(); ScMarkData aMarkData; @@ -3647,7 +3653,7 @@ uno::Reference<sheet::XSheetCellRanges> ScCellRangesBase::QueryDifferences_Impl( for (i=0; i<nRangeCount; i++) { - ScRange aRange(*aRanges.GetObject(i)); + ScRange aRange( *aRanges[ i ] ); if ( aRange.Intersects( aCellRange ) ) { if (bColumnDiff) @@ -3673,7 +3679,7 @@ uno::Reference<sheet::XSheetCellRanges> ScCellRangesBase::QueryDifferences_Impl( ScAddress aCmpAddr; for (i=0; i<nRangeCount; i++) { - ScRange aRange(*aRanges.GetObject(i)); + ScRange aRange( *aRanges[ i ] ); ScCellIterator aIter( pDoc, aRange ); ScBaseCell* pCell = aIter.GetFirst(); @@ -3726,10 +3732,9 @@ uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryIntersec (SCCOL)aRange.EndColumn, (SCROW)aRange.EndRow, aRange.Sheet ); ScRangeList aNew; - ULONG nCount = aRanges.Count(); - for (ULONG i=0; i<nCount; i++) + for ( size_t i = 0, nCount = aRanges.size(); i < nCount; ++i ) { - ScRange aTemp(*aRanges.GetObject(i)); + ScRange aTemp( *aRanges[ i ] ); if ( aTemp.Intersects( aMask ) ) aNew.Join( ScRange( Max( aTemp.aStart.Col(), aMask.aStart.Col() ), Max( aTemp.aStart.Row(), aMask.aStart.Row() ), @@ -3763,10 +3768,9 @@ uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryPreceden aMarkData.MarkFromRangeList( aNewRanges, FALSE ); aMarkData.MarkToMulti(); // needed for IsAllMarked - ULONG nCount = aNewRanges.Count(); - for (ULONG nR=0; nR<nCount; nR++) + for (size_t nR = 0, nCount = aNewRanges.size(); nR<nCount; ++nR) { - ScRange aRange(*aNewRanges.GetObject(nR)); + ScRange aRange( *aNewRanges[ nR] ); ScCellIterator aIter( pDoc, aRange ); ScBaseCell* pCell = aIter.GetFirst(); while (pCell) @@ -3811,7 +3815,6 @@ uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryDependen do { bFound = FALSE; - ULONG nRangesCount = aNewRanges.Count(); // #97205# aMarkData uses aNewRanges, not aRanges, so GetMarkData can't be used ScMarkData aMarkData; @@ -3831,9 +3834,10 @@ uno::Reference<sheet::XSheetCellRanges> SAL_CALL ScCellRangesBase::queryDependen ScRange aRefRange; while ( aIter.GetNextRef( aRefRange) ) { - for (ULONG nR=0; nR<nRangesCount; nR++) + size_t nRangesCount = aNewRanges.size(); + for (size_t nR = 0; nR < nRangesCount; ++nR) { - ScRange aRange(*aNewRanges.GetObject(nR)); + ScRange aRange( *aNewRanges[ nR ] ); if (aRange.Intersects(aRefRange)) bMark = TRUE; // von Teil des Ranges abhaengig } @@ -3975,9 +3979,9 @@ uno::Reference<uno::XInterface> SAL_CALL ScCellRangesBase::findNext( if ( pRangesImp && pRangesImp->GetDocShell() == pDocShell ) { const ScRangeList& rStartRanges = pRangesImp->GetRangeList(); - if ( rStartRanges.Count() == 1 ) + if ( rStartRanges.size() == 1 ) { - ScAddress aStartPos = rStartRanges.GetObject(0)->aStart; + ScAddress aStartPos = rStartRanges[ 0 ]->aStart; return Find_Impl( xDesc, &aStartPos ); } } @@ -4086,7 +4090,6 @@ sal_Int64 SAL_CALL ScCellRangesBase::getSomething( return 0; } -// static const uno::Sequence<sal_Int8>& ScCellRangesBase::getUnoTunnelId() { static uno::Sequence<sal_Int8> * pSeq = 0; @@ -4103,7 +4106,6 @@ const uno::Sequence<sal_Int8>& ScCellRangesBase::getUnoTunnelId() return *pSeq; } -// static ScCellRangesBase* ScCellRangesBase::getImplementation( const uno::Reference<uno::XInterface> xObj ) { ScCellRangesBase* pRet = NULL; @@ -4195,9 +4197,9 @@ ScCellRangeObj* ScCellRangesObj::GetObjectByIndex_Impl(sal_Int32 nIndex) const { ScDocShell* pDocSh = GetDocShell(); const ScRangeList& rRanges = GetRangeList(); - if ( pDocSh && nIndex >= 0 && nIndex < sal::static_int_cast<sal_Int32>(rRanges.Count()) ) + if ( pDocSh && nIndex >= 0 && nIndex < sal::static_int_cast<sal_Int32>(rRanges.size()) ) { - ScRange aRange(*rRanges.GetObject(nIndex)); + ScRange aRange( *rRanges[ nIndex ] ); if ( aRange.aStart == aRange.aEnd ) return new ScCellObj( pDocSh, aRange.aStart ); else @@ -4213,15 +4215,15 @@ uno::Sequence<table::CellRangeAddress> SAL_CALL ScCellRangesObj::getRangeAddress SolarMutexGuard aGuard; ScDocShell* pDocSh = GetDocShell(); const ScRangeList& rRanges = GetRangeList(); - ULONG nCount = rRanges.Count(); + size_t nCount = rRanges.size(); if ( pDocSh && nCount ) { table::CellRangeAddress aRangeAddress; uno::Sequence<table::CellRangeAddress> aSeq(nCount); table::CellRangeAddress* pAry = aSeq.getArray(); - for (sal_uInt32 i=0; i<nCount; i++) + for ( size_t i=0; i < nCount; i++) { - ScUnoConversion::FillApiRange( aRangeAddress, *rRanges.GetObject(i) ); + ScUnoConversion::FillApiRange( aRangeAddress, *rRanges[ i ] ); pAry[i] = aRangeAddress; } return aSeq; @@ -4292,15 +4294,15 @@ void SAL_CALL ScCellRangesObj::removeRangeAddress( const table::CellRangeAddress ScRangeList aSheetRanges; ScRangeList aNotSheetRanges; - for (sal_uInt32 i = 0; i < rRanges.Count(); ++i) + for (size_t i = 0; i < rRanges.size(); ++i) { - if (rRanges.GetObject(i)->aStart.Tab() == rRange.Sheet) + if (rRanges[ i]->aStart.Tab() == rRange.Sheet) { - aSheetRanges.Append(*rRanges.GetObject(i)); + aSheetRanges.Append( *rRanges[ i ] ); } else { - aNotSheetRanges.Append(*rRanges.GetObject(i)); + aNotSheetRanges.Append( *rRanges[ i ] ); } } ScMarkData aMarkData; @@ -4325,9 +4327,9 @@ void SAL_CALL ScCellRangesObj::removeRangeAddress( const table::CellRangeAddress SetNewRanges(aNotSheetRanges); ScRangeList aNew; aMarkData.FillRangeListWithMarks( &aNew, FALSE ); - for (sal_uInt32 j = 0; j < aNew.Count(); ++j) + for ( size_t j = 0; j < aNew.size(); ++j) { - AddRange(*aNew.GetObject(j), sal_False); + AddRange(*aNew[ j ], sal_False); } } @@ -4360,7 +4362,6 @@ void SAL_CALL ScCellRangesObj::removeRangeAddresses( const uno::Sequence<table:: // with this implementation not needed // SolarMutexGuard aGuard; - // use sometimes a better/faster implementation sal_uInt32 nCount(rRangeSeq.getLength()); if (nCount) @@ -4412,9 +4413,9 @@ void SAL_CALL ScCellRangesObj::insertByName( const rtl::OUString& aName, const u ScRangeList aNew(GetRangeList()); const ScRangeList& rAddRanges = pRangesImp->GetRangeList(); - ULONG nAddCount = rAddRanges.Count(); - for (ULONG i=0; i<nAddCount; i++) - aNew.Join( *rAddRanges.GetObject(i) ); + size_t nAddCount = rAddRanges.size(); + for ( size_t i = 0; i < nAddCount; i++ ) + aNew.Join( *rAddRanges[ i ] ); SetNewRanges(aNew); bDone = TRUE; @@ -4424,7 +4425,7 @@ void SAL_CALL ScCellRangesObj::insertByName( const rtl::OUString& aName, const u // (only possible for a single range) // name is not in aNamedEntries (tested above) - ScNamedEntry* pEntry = new ScNamedEntry( aNamStr, *rAddRanges.GetObject(0) ); + ScNamedEntry* pEntry = new ScNamedEntry( aNamStr, *rAddRanges[ 0 ] ); aNamedEntries.Insert( pEntry, aNamedEntries.Count() ); } } @@ -4438,16 +4439,15 @@ void SAL_CALL ScCellRangesObj::insertByName( const rtl::OUString& aName, const u } BOOL lcl_FindRangeByName( const ScRangeList& rRanges, ScDocShell* pDocSh, - const String& rName, ULONG& rIndex ) + const String& rName, size_t& rIndex ) { if (pDocSh) { String aRangeStr; ScDocument* pDoc = pDocSh->GetDocument(); - ULONG nCount = rRanges.Count(); - for (ULONG i=0; i<nCount; i++) + for ( size_t i = 0, nCount = rRanges.size(); i < nCount; i++ ) { - rRanges.GetObject(i)->Format( aRangeStr, SCA_VALID | SCA_TAB_3D, pDoc ); + rRanges[ i ]->Format( aRangeStr, SCA_VALID | SCA_TAB_3D, pDoc ); if ( aRangeStr == rName ) { rIndex = i; @@ -4464,10 +4464,10 @@ BOOL lcl_FindRangeOrEntry( const ScNamedEntryArr_Impl& rNamedEntries, { // exact range in list? - ULONG nIndex = 0; + size_t nIndex = 0; if ( lcl_FindRangeByName( rRanges, pDocSh, rName, nIndex ) ) { - rFound = *rRanges.GetObject(nIndex); + rFound = *rRanges[ nIndex ]; return TRUE; } @@ -4520,15 +4520,14 @@ void SAL_CALL ScCellRangesObj::removeByName( const rtl::OUString& aName ) String aNameStr(aName); ScDocShell* pDocSh = GetDocShell(); const ScRangeList& rRanges = GetRangeList(); - ULONG nIndex = 0; + size_t nIndex = 0; if ( lcl_FindRangeByName( rRanges, pDocSh, aNameStr, nIndex ) ) { // einzelnen Range weglassen ScRangeList aNew; - ULONG nCount = rRanges.Count(); - for (ULONG i=0; i<nCount; i++) + for ( size_t i = 0, nCount = rRanges.size(); i < nCount; i++ ) if (i != nIndex) - aNew.Append( *rRanges.GetObject(i) ); + aNew.Append( *rRanges[ i ] ); SetNewRanges(aNew); bDone = TRUE; } @@ -4553,10 +4552,9 @@ void SAL_CALL ScCellRangesObj::removeByName( const rtl::OUString& aName ) ScMarkData aMarkData; aMarkData.MarkFromRangeList( rRanges, FALSE ); - ULONG nDiffCount = aDiff.Count(); - for (ULONG i=0; i<nDiffCount; i++) + for ( size_t i = 0, nDiffCount = aDiff.size(); i < nDiffCount; i++ ) { - ScRange* pDiffRange = aDiff.GetObject(i); + ScRange* pDiffRange = aDiff[ i ]; if (aMarkData.GetTableSelect( pDiffRange->aStart.Tab() )) aMarkData.SetMultiMarkArea( *pDiffRange, FALSE ); } @@ -4639,14 +4637,14 @@ uno::Sequence<rtl::OUString> SAL_CALL ScCellRangesObj::getElementNames() { String aRangeStr; ScDocument* pDoc = pDocSh->GetDocument(); - ULONG nCount = rRanges.Count(); + size_t nCount = rRanges.size(); uno::Sequence<rtl::OUString> aSeq(nCount); rtl::OUString* pAry = aSeq.getArray(); - for (ULONG i=0; i<nCount; i++) + for (size_t i=0; i < nCount; i++) { // use given name if for exactly this range, otherwise just format - ScRange aRange = *rRanges.GetObject(i); + ScRange aRange = *rRanges[ i ]; if ( !aNamedEntries.Count() || !lcl_FindEntryName( aNamedEntries, aRange, aRangeStr ) ) aRange.Format( aRangeStr, SCA_VALID | SCA_TAB_3D, pDoc ); pAry[i] = aRangeStr; @@ -4682,7 +4680,7 @@ sal_Int32 SAL_CALL ScCellRangesObj::getCount() throw(uno::RuntimeException) { SolarMutexGuard aGuard; const ScRangeList& rRanges = GetRangeList(); - return rRanges.Count(); + return rRanges.size(); } uno::Any SAL_CALL ScCellRangesObj::getByIndex( sal_Int32 nIndex ) @@ -4695,7 +4693,6 @@ uno::Any SAL_CALL ScCellRangesObj::getByIndex( sal_Int32 nIndex ) return uno::makeAny(xRange); else throw lang::IndexOutOfBoundsException(); -// return uno::Any(); } uno::Type SAL_CALL ScCellRangesObj::getElementType() throw(uno::RuntimeException) @@ -4708,14 +4705,14 @@ sal_Bool SAL_CALL ScCellRangesObj::hasElements() throw(uno::RuntimeException) { SolarMutexGuard aGuard; const ScRangeList& rRanges = GetRangeList(); - return rRanges.Count() != 0; + return !rRanges.empty(); } // XServiceInfo rtl::OUString SAL_CALL ScCellRangesObj::getImplementationName() throw(uno::RuntimeException) { - return rtl::OUString::createFromAscii( "ScCellRangesObj" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ScCellRangesObj" )); } sal_Bool SAL_CALL ScCellRangesObj::supportsService( const rtl::OUString& rServiceName ) @@ -4733,16 +4730,15 @@ uno::Sequence<rtl::OUString> SAL_CALL ScCellRangesObj::getSupportedServiceNames( { uno::Sequence<rtl::OUString> aRet(4); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCSHEETCELLRANGES_SERVICE ); - pArray[1] = rtl::OUString::createFromAscii( SCCELLPROPERTIES_SERVICE ); - pArray[2] = rtl::OUString::createFromAscii( SCCHARPROPERTIES_SERVICE ); - pArray[3] = rtl::OUString::createFromAscii( SCPARAPROPERTIES_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCSHEETCELLRANGES_SERVICE )); + pArray[1] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCCELLPROPERTIES_SERVICE )); + pArray[2] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCCHARPROPERTIES_SERVICE )); + pArray[3] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCPARAPROPERTIES_SERVICE )); return aRet; } //------------------------------------------------------------------------ -// static uno::Reference<table::XCellRange> ScCellRangeObj::CreateRangeFromDoc( ScDocument* pDoc, const ScRange& rR ) { SfxObjectShell* pObjSh = pDoc->GetDocumentShell(); @@ -4770,11 +4766,11 @@ void ScCellRangeObj::RefChanged() ScCellRangesBase::RefChanged(); const ScRangeList& rRanges = GetRangeList(); - DBG_ASSERT(rRanges.Count() == 1, "was fuer Ranges ?!?!"); - const ScRange* pFirst = rRanges.GetObject(0); - if (pFirst) + DBG_ASSERT(rRanges.size() == 1, "was fuer Ranges ?!?!"); + if ( !rRanges.empty() ) { - aRange = *pFirst; + const ScRange* pFirst = rRanges[0]; + aRange = ScRange(*pFirst); aRange.Justify(); } } @@ -4930,7 +4926,6 @@ uno::Reference<table::XCellRange> SAL_CALL ScCellRangeObj::getCellRangeByPositio // return NULL; } - uno::Reference<table::XCellRange> SAL_CALL ScCellRangeObj::getCellRangeByName( const rtl::OUString& aName ) throw(uno::RuntimeException) { @@ -6027,7 +6022,7 @@ const SfxItemPropertyMap* ScCellRangeObj::GetItemPropertyMap() rtl::OUString SAL_CALL ScCellRangeObj::getImplementationName() throw(uno::RuntimeException) { - return rtl::OUString::createFromAscii( "ScCellRangeObj" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ScCellRangeObj" )); } sal_Bool SAL_CALL ScCellRangeObj::supportsService( const rtl::OUString& rServiceName ) @@ -6046,17 +6041,17 @@ uno::Sequence<rtl::OUString> SAL_CALL ScCellRangeObj::getSupportedServiceNames() { uno::Sequence<rtl::OUString> aRet(5); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCSHEETCELLRANGE_SERVICE ); - pArray[1] = rtl::OUString::createFromAscii( SCCELLRANGE_SERVICE ); - pArray[2] = rtl::OUString::createFromAscii( SCCELLPROPERTIES_SERVICE ); - pArray[3] = rtl::OUString::createFromAscii( SCCHARPROPERTIES_SERVICE ); - pArray[4] = rtl::OUString::createFromAscii( SCPARAPROPERTIES_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCSHEETCELLRANGE_SERVICE )); + pArray[1] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCCELLRANGE_SERVICE )); + pArray[2] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCCELLPROPERTIES_SERVICE )); + pArray[3] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCCHARPROPERTIES_SERVICE )); + pArray[4] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCPARAPROPERTIES_SERVICE )); return aRet; } //------------------------------------------------------------------------ -const SvxItemPropertySet* ScCellObj::GetEditPropertySet() // static +const SvxItemPropertySet* ScCellObj::GetEditPropertySet() { return lcl_GetEditPropertySet(); } @@ -6104,10 +6099,12 @@ void ScCellObj::RefChanged() ScCellRangeObj::RefChanged(); const ScRangeList& rRanges = GetRangeList(); - DBG_ASSERT(rRanges.Count() == 1, "was fuer Ranges ?!?!"); - const ScRange* pFirst = rRanges.GetObject(0); - if (pFirst) + DBG_ASSERT(rRanges.size() == 1, "was fuer Ranges ?!?!"); + if ( !rRanges.empty() ) + { + const ScRange* pFirst = rRanges[ 0 ]; aCellPos = pFirst->aStart; + } } uno::Any SAL_CALL ScCellObj::queryInterface( const uno::Type& rType ) throw(uno::RuntimeException) @@ -6704,7 +6701,7 @@ const SfxItemPropertyMap* ScCellObj::GetItemPropertyMap() rtl::OUString SAL_CALL ScCellObj::getImplementationName() throw(uno::RuntimeException) { - return rtl::OUString::createFromAscii( "ScCellObj" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ScCellObj" )); } sal_Bool SAL_CALL ScCellObj::supportsService( const rtl::OUString& rServiceName ) @@ -6729,13 +6726,13 @@ uno::Sequence<rtl::OUString> SAL_CALL ScCellObj::getSupportedServiceNames() { uno::Sequence<rtl::OUString> aRet(7); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCSHEETCELL_SERVICE ); - pArray[1] = rtl::OUString::createFromAscii( SCCELL_SERVICE ); - pArray[2] = rtl::OUString::createFromAscii( SCCELLPROPERTIES_SERVICE ); - pArray[3] = rtl::OUString::createFromAscii( SCCHARPROPERTIES_SERVICE ); - pArray[4] = rtl::OUString::createFromAscii( SCPARAPROPERTIES_SERVICE ); - pArray[5] = rtl::OUString::createFromAscii( SCSHEETCELLRANGE_SERVICE ); - pArray[6] = rtl::OUString::createFromAscii( SCCELLRANGE_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCSHEETCELL_SERVICE )); + pArray[1] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCCELL_SERVICE )); + pArray[2] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCCELLPROPERTIES_SERVICE )); + pArray[3] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCCHARPROPERTIES_SERVICE )); + pArray[4] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCPARAPROPERTIES_SERVICE )); + pArray[5] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCSHEETCELLRANGE_SERVICE )); + pArray[6] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCCELLRANGE_SERVICE )); return aRet; } @@ -6925,11 +6922,12 @@ uno::Sequence<sal_Int8> SAL_CALL ScTableSheetObj::getImplementationId() throw(un SCTAB ScTableSheetObj::GetTab_Impl() const { const ScRangeList& rRanges = GetRangeList(); - DBG_ASSERT(rRanges.Count() == 1, "was fuer Ranges ?!?!"); - const ScRange* pFirst = rRanges.GetObject(0); - if (pFirst) + DBG_ASSERT(rRanges.size() == 1, "was fuer Ranges ?!?!"); + if ( !rRanges.empty() ) + { + const ScRange* pFirst = rRanges[ 0 ]; return pFirst->aStart.Tab(); - + } return 0; // soll nicht sein } @@ -7016,8 +7014,8 @@ uno::Reference<sheet::XSheetCellCursor> SAL_CALL ScTableSheetObj::createCursorBy if (pRangesImp) { const ScRangeList& rRanges = pRangesImp->GetRangeList(); - DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" ); - return new ScCellCursorObj( pDocSh, *rRanges.GetObject(0) ); + DBG_ASSERT( rRanges.size() == 1, "Range? Ranges?" ); + return new ScCellCursorObj( pDocSh, *rRanges[ 0 ] ); } } return NULL; @@ -8115,12 +8113,12 @@ uno::Sequence< table::CellRangeAddress > SAL_CALL ScTableSheetObj::getRanges( ) const ScRangeList* pRangeList = pDoc->GetScenarioRanges(nTab); if (pRangeList) { - sal_Int32 nCount = pRangeList->Count(); - uno::Sequence< table::CellRangeAddress > aRetRanges(nCount); + size_t nCount = pRangeList->size(); + uno::Sequence< table::CellRangeAddress > aRetRanges( nCount ); table::CellRangeAddress* pAry = aRetRanges.getArray(); - for( sal_Int32 nIndex = 0; nIndex < nCount; nIndex++ ) + for( size_t nIndex = 0; nIndex < nCount; nIndex++ ) { - const ScRange* pRange = pRangeList->GetObject( nIndex ); + const ScRange* pRange = (*pRangeList)[nIndex]; pAry->StartColumn = pRange->aStart.Col(); pAry->StartRow = pRange->aStart.Row(); pAry->EndColumn = pRange->aEnd.Col(); @@ -8494,8 +8492,7 @@ void ScTableSheetObj::SetOnePropertyValue( const SfxItemPropertySimpleEntry* pEn rtl::OUString aCodeName; if ( pDocSh && ( aValue >>= aCodeName ) ) { - String sNewName( aCodeName ); - pDocSh->GetDocument()->SetCodeName( GetTab_Impl(), sNewName ); + pDocSh->GetDocument()->SetCodeName( GetTab_Impl(), aCodeName ); } } else @@ -8661,7 +8658,7 @@ const SfxItemPropertyMap* ScTableSheetObj::GetItemPropertyMap() rtl::OUString SAL_CALL ScTableSheetObj::getImplementationName() throw(uno::RuntimeException) { - return rtl::OUString::createFromAscii( "ScTableSheetObj" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ScTableSheetObj" )); } sal_Bool SAL_CALL ScTableSheetObj::supportsService( const rtl::OUString& rServiceName ) @@ -8682,13 +8679,13 @@ uno::Sequence<rtl::OUString> SAL_CALL ScTableSheetObj::getSupportedServiceNames( { uno::Sequence<rtl::OUString> aRet(7); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCSPREADSHEET_SERVICE ); - pArray[1] = rtl::OUString::createFromAscii( SCSHEETCELLRANGE_SERVICE ); - pArray[2] = rtl::OUString::createFromAscii( SCCELLRANGE_SERVICE ); - pArray[3] = rtl::OUString::createFromAscii( SCCELLPROPERTIES_SERVICE ); - pArray[4] = rtl::OUString::createFromAscii( SCCHARPROPERTIES_SERVICE ); - pArray[5] = rtl::OUString::createFromAscii( SCPARAPROPERTIES_SERVICE ); - pArray[6] = rtl::OUString::createFromAscii( SCLINKTARGET_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCSPREADSHEET_SERVICE )); + pArray[1] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCSHEETCELLRANGE_SERVICE )); + pArray[2] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCCELLRANGE_SERVICE )); + pArray[3] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCCELLPROPERTIES_SERVICE )); + pArray[4] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCCHARPROPERTIES_SERVICE )); + pArray[5] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCPARAPROPERTIES_SERVICE )); + pArray[6] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCLINKTARGET_SERVICE )); return aRet; } @@ -8707,7 +8704,6 @@ sal_Int64 SAL_CALL ScTableSheetObj::getSomething( return ScCellRangeObj::getSomething( rId ); } -// static const uno::Sequence<sal_Int8>& ScTableSheetObj::getUnoTunnelId() { static uno::Sequence<sal_Int8> * pSeq = 0; @@ -8724,7 +8720,6 @@ const uno::Sequence<sal_Int8>& ScTableSheetObj::getUnoTunnelId() return *pSeq; } -// static ScTableSheetObj* ScTableSheetObj::getImplementation( const uno::Reference<uno::XInterface> xObj ) { ScTableSheetObj* pRet = NULL; @@ -9177,12 +9172,12 @@ ScCellsEnumeration::ScCellsEnumeration(ScDocShell* pDocSh, const ScRangeList& rR ScDocument* pDoc = pDocShell->GetDocument(); pDoc->AddUnoObject(*this); - if ( aRanges.Count() == 0 ) + if ( aRanges.empty() ) bAtEnd = TRUE; else { SCTAB nTab = 0; - const ScRange* pFirst = aRanges.GetObject(0); + const ScRange* pFirst = aRanges[ 0 ]; if (pFirst) nTab = pFirst->aStart.Tab(); aPos = ScAddress(0,0,nTab); @@ -9258,9 +9253,9 @@ void ScCellsEnumeration::Notify( SfxBroadcaster&, const SfxHint& rHint ) aNew.Append(ScRange(aPos)); aNew.UpdateReference( rRef.GetMode(), pDocShell->GetDocument(), rRef.GetRange(), rRef.GetDx(), rRef.GetDy(), rRef.GetDz() ); - if (aNew.Count()==1) + if (aNew.size()==1) { - aPos = aNew.GetObject(0)->aStart; + aPos = aNew[ 0 ]->aStart; CheckPos_Impl(); } } @@ -9704,10 +9699,10 @@ struct ScUniqueFormatsOrder bool operator()( const ScRangeList& rList1, const ScRangeList& rList2 ) const { // all range lists have at least one entry - DBG_ASSERT( rList1.Count() > 0 && rList2.Count() > 0, "ScUniqueFormatsOrder: empty list" ); + DBG_ASSERT( rList1.size() > 0 && rList2.size() > 0, "ScUniqueFormatsOrder: empty list" ); // compare start positions using ScAddress comparison operator - return ( rList1.GetObject(0)->aStart < rList2.GetObject(0)->aStart ); + return ( rList1[ 0 ]->aStart < rList2[ 0 ]->aStart ); } }; @@ -9851,5 +9846,4 @@ uno::Any SAL_CALL ScUniqueCellFormatsEnumeration::nextElement() throw(container: return uno::makeAny(uno::Reference<sheet::XSheetCellRangeContainer>(new ScCellRangesObj(pDocShell, aRangeLists[nCurrentPosition++]))); } - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/unoobj/cellvaluebinding.cxx b/sc/source/ui/unoobj/cellvaluebinding.cxx index 9e3cae0756c1..c2a5f6987166 100644 --- a/sc/source/ui/unoobj/cellvaluebinding.cxx +++ b/sc/source/ui/unoobj/cellvaluebinding.cxx @@ -96,7 +96,7 @@ namespace calc // register our property at the base class CellAddress aInitialPropValue; registerPropertyNoMember( - ::rtl::OUString::createFromAscii( "BoundCell" ), + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "BoundCell" )), PROP_HANDLE_BOUND_CELL, PropertyAttribute::BOUND | PropertyAttribute::READONLY, ::getCppuType( &aInitialPropValue ), @@ -266,7 +266,7 @@ namespace calc if ( xProp.is() ) { CellContentType eResultType; - if ( (xProp->getPropertyValue(::rtl::OUString::createFromAscii( "FormulaResultType" ) ) >>= eResultType) && eResultType == CellContentType_VALUE ) + if ( (xProp->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "FormulaResultType" )) ) >>= eResultType) && eResultType == CellContentType_VALUE ) bHasValue = sal_True; } } @@ -404,7 +404,7 @@ namespace calc { // set boolean number format if not already set - ::rtl::OUString sPropName( ::rtl::OUString::createFromAscii( "NumberFormat" ) ); + ::rtl::OUString sPropName( RTL_CONSTASCII_USTRINGPARAM( "NumberFormat" ) ); Reference<XPropertySet> xCellProp( m_xCell, UNO_QUERY ); Reference<XNumberFormatsSupplier> xSupplier( m_xDocument, UNO_QUERY ); if ( xSupplier.is() && xCellProp.is() ) @@ -429,10 +429,10 @@ namespace calc if ( xOldFormat.is() ) { // use the locale of the existing format - xOldFormat->getPropertyValue( ::rtl::OUString::createFromAscii( "Locale" ) ) >>= aLocale; + xOldFormat->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Locale" )) ) >>= aLocale; sal_Int16 nOldType = ::comphelper::getINT16( - xOldFormat->getPropertyValue( ::rtl::OUString::createFromAscii( "Type" ) ) ); + xOldFormat->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Type" )) ) ); if ( nOldType & NumberFormat::LOGICAL ) bWasBoolean = sal_True; } diff --git a/sc/source/ui/unoobj/chart2uno.cxx b/sc/source/ui/unoobj/chart2uno.cxx index 227869efe48e..912e88b97569 100644 --- a/sc/source/ui/unoobj/chart2uno.cxx +++ b/sc/source/ui/unoobj/chart2uno.cxx @@ -204,19 +204,19 @@ struct TokenTable return nRet; } - vector<ScSharedTokenRef>* getColRanges(SCCOL nCol) const; - vector<ScSharedTokenRef>* getRowRanges(SCROW nRow) const; - vector<ScSharedTokenRef>* getAllRanges() const; + vector<ScTokenRef>* getColRanges(SCCOL nCol) const; + vector<ScTokenRef>* getRowRanges(SCROW nRow) const; + vector<ScTokenRef>* getAllRanges() const; }; -vector<ScSharedTokenRef>* TokenTable::getColRanges(SCCOL nCol) const +vector<ScTokenRef>* TokenTable::getColRanges(SCCOL nCol) const { if (nCol >= mnColCount) return NULL; if( mnRowCount<=0 ) return NULL; - auto_ptr< vector<ScSharedTokenRef> > pTokens(new vector<ScSharedTokenRef>); + auto_ptr< vector<ScTokenRef> > pTokens(new vector<ScTokenRef>); sal_uInt32 nLast = getIndex(nCol, mnRowCount-1); for (sal_uInt32 i = getIndex(nCol, 0); i <= nLast; ++i) { @@ -224,20 +224,20 @@ vector<ScSharedTokenRef>* TokenTable::getColRanges(SCCOL nCol) const if (!p) continue; - ScSharedTokenRef pCopy(static_cast<ScToken*>(p->Clone())); + ScTokenRef pCopy(static_cast<ScToken*>(p->Clone())); ScRefTokenHelper::join(*pTokens, pCopy); } return pTokens.release(); } -vector<ScSharedTokenRef>* TokenTable::getRowRanges(SCROW nRow) const +vector<ScTokenRef>* TokenTable::getRowRanges(SCROW nRow) const { if (nRow >= mnRowCount) return NULL; if( mnColCount<=0 ) return NULL; - auto_ptr< vector<ScSharedTokenRef> > pTokens(new vector<ScSharedTokenRef>); + auto_ptr< vector<ScTokenRef> > pTokens(new vector<ScTokenRef>); sal_uInt32 nLast = getIndex(mnColCount-1, nRow); for (sal_uInt32 i = getIndex(0, nRow); i <= nLast; i += mnRowCount) { @@ -245,15 +245,15 @@ vector<ScSharedTokenRef>* TokenTable::getRowRanges(SCROW nRow) const if (!p) continue; - ScSharedTokenRef p2(static_cast<ScToken*>(p->Clone())); + ScTokenRef p2(static_cast<ScToken*>(p->Clone())); ScRefTokenHelper::join(*pTokens, p2); } return pTokens.release(); } -vector<ScSharedTokenRef>* TokenTable::getAllRanges() const +vector<ScTokenRef>* TokenTable::getAllRanges() const { - auto_ptr< vector<ScSharedTokenRef> > pTokens(new vector<ScSharedTokenRef>); + auto_ptr< vector<ScTokenRef> > pTokens(new vector<ScTokenRef>); sal_uInt32 nStop = mnColCount*mnRowCount; for (sal_uInt32 i = 0; i < nStop; i++) { @@ -261,7 +261,7 @@ vector<ScSharedTokenRef>* TokenTable::getAllRanges() const if (!p) continue; - ScSharedTokenRef p2(static_cast<ScToken*>(p->Clone())); + ScTokenRef p2(static_cast<ScToken*>(p->Clone())); ScRefTokenHelper::join(*pTokens, p2); } return pTokens.release(); @@ -280,15 +280,15 @@ public: SCCOL getDataColCount() const { return mnDataColCount; } SCROW getDataRowCount() const { return mnDataRowCount; } - vector<ScSharedTokenRef>* getLeftUpperCornerRanges() const; - vector<ScSharedTokenRef>* getAllColHeaderRanges() const; - vector<ScSharedTokenRef>* getAllRowHeaderRanges() const; + vector<ScTokenRef>* getLeftUpperCornerRanges() const; + vector<ScTokenRef>* getAllColHeaderRanges() const; + vector<ScTokenRef>* getAllRowHeaderRanges() const; - vector<ScSharedTokenRef>* getColHeaderRanges(SCCOL nChartCol) const; - vector<ScSharedTokenRef>* getRowHeaderRanges(SCROW nChartRow) const; + vector<ScTokenRef>* getColHeaderRanges(SCCOL nChartCol) const; + vector<ScTokenRef>* getRowHeaderRanges(SCROW nChartRow) const; - vector<ScSharedTokenRef>* getDataColRanges(SCCOL nCol) const; - vector<ScSharedTokenRef>* getDataRowRanges(SCROW nRow) const; + vector<ScTokenRef>* getDataColRanges(SCCOL nCol) const; + vector<ScTokenRef>* getDataRowRanges(SCROW nRow) const; private: SCCOL mnDataColCount; @@ -333,7 +333,7 @@ Chart2PositionMap::Chart2PositionMap(SCCOL nAllColCount, SCROW nAllRowCount, StackVar eType = pToken->GetType(); if( eType==svExternal || eType==svExternalSingleRef || eType==svExternalDoubleRef || eType==svExternalName ) bExternal = true;//lllll todo correct? - ScSharedTokenRef pSharedToken(static_cast<ScToken*>(pToken->Clone())); + ScTokenRef pSharedToken(static_cast<ScToken*>(pToken->Clone())); ScRefTokenHelper::getRangeFromToken(aRange, pSharedToken, bExternal ); SCCOL nCol1=0, nCol2=0; SCROW nRow1=0, nRow2=0; @@ -415,33 +415,33 @@ Chart2PositionMap::~Chart2PositionMap() maData.clear(); } -vector<ScSharedTokenRef>* Chart2PositionMap::getLeftUpperCornerRanges() const +vector<ScTokenRef>* Chart2PositionMap::getLeftUpperCornerRanges() const { return maLeftUpperCorner.getAllRanges(); } -vector<ScSharedTokenRef>* Chart2PositionMap::getAllColHeaderRanges() const +vector<ScTokenRef>* Chart2PositionMap::getAllColHeaderRanges() const { return maColHeaders.getAllRanges(); } -vector<ScSharedTokenRef>* Chart2PositionMap::getAllRowHeaderRanges() const +vector<ScTokenRef>* Chart2PositionMap::getAllRowHeaderRanges() const { return maRowHeaders.getAllRanges(); } -vector<ScSharedTokenRef>* Chart2PositionMap::getColHeaderRanges(SCCOL nCol) const +vector<ScTokenRef>* Chart2PositionMap::getColHeaderRanges(SCCOL nCol) const { return maColHeaders.getColRanges( nCol); } -vector<ScSharedTokenRef>* Chart2PositionMap::getRowHeaderRanges(SCROW nRow) const +vector<ScTokenRef>* Chart2PositionMap::getRowHeaderRanges(SCROW nRow) const { return maRowHeaders.getRowRanges( nRow); } -vector<ScSharedTokenRef>* Chart2PositionMap::getDataColRanges(SCCOL nCol) const +vector<ScTokenRef>* Chart2PositionMap::getDataColRanges(SCCOL nCol) const { return maData.getColRanges( nCol); } -vector<ScSharedTokenRef>* Chart2PositionMap::getDataRowRanges(SCROW nRow) const +vector<ScTokenRef>* Chart2PositionMap::getDataRowRanges(SCROW nRow) const { return maData.getRowRanges( nRow); } @@ -464,8 +464,8 @@ class Chart2Positioner }; public: - Chart2Positioner(ScDocument* pDoc, const vector<ScSharedTokenRef>& rRefTokens) : - mpRefTokens(new vector<ScSharedTokenRef>(rRefTokens)), + Chart2Positioner(ScDocument* pDoc, const vector<ScTokenRef>& rRefTokens) : + mpRefTokens(new vector<ScTokenRef>(rRefTokens)), mpPositionMap(NULL), meGlue(GLUETYPE_NA), mpDoc(pDoc), @@ -502,7 +502,7 @@ private: void createPositionMap(); private: - shared_ptr< vector<ScSharedTokenRef> > mpRefTokens; + shared_ptr< vector<ScTokenRef> > mpRefTokens; auto_ptr<Chart2PositionMap> mpPositionMap; GlueType meGlue; SCCOL mnStartCol; @@ -527,7 +527,7 @@ void Chart2Positioner::glueState() mbDummyUpperLeft = false; if (mpRefTokens->size() <= 1) { - const ScSharedTokenRef& p = mpRefTokens->front(); + const ScTokenRef& p = mpRefTokens->front(); ScComplexRefData aData; if (ScRefTokenHelper::getDoubleRefDataFromToken(aData, p)) { @@ -554,7 +554,7 @@ void Chart2Positioner::glueState() SCCOL nMaxCols = 0, nEndCol = 0; SCROW nMaxRows = 0, nEndRow = 0; - for (vector<ScSharedTokenRef>::const_iterator itr = mpRefTokens->begin(), itrEnd = mpRefTokens->end() + for (vector<ScTokenRef>::const_iterator itr = mpRefTokens->begin(), itrEnd = mpRefTokens->end() ; itr != itrEnd; ++itr) { ScRefTokenHelper::getDoubleRefDataFromToken(aData, *itr); @@ -618,7 +618,7 @@ void Chart2Positioner::glueState() const sal_uInt8 nGlue = 3; vector<sal_uInt8> aCellStates(nCR); - for (vector<ScSharedTokenRef>::const_iterator itr = mpRefTokens->begin(), itrEnd = mpRefTokens->end(); + for (vector<ScTokenRef>::const_iterator itr = mpRefTokens->begin(), itrEnd = mpRefTokens->end(); itr != itrEnd; ++itr) { ScRefTokenHelper::getDoubleRefDataFromToken(aData, *itr); @@ -720,10 +720,10 @@ void Chart2Positioner::createPositionMap() auto_ptr<Table> pNewRowTable(new Table); Table* pCol = NULL; SCROW nNoGlueRow = 0; - for (vector<ScSharedTokenRef>::const_iterator itr = mpRefTokens->begin(), itrEnd = mpRefTokens->end(); + for (vector<ScTokenRef>::const_iterator itr = mpRefTokens->begin(), itrEnd = mpRefTokens->end(); itr != itrEnd; ++itr) { - const ScSharedTokenRef& pToken = *itr; + const ScTokenRef& pToken = *itr; bool bExternal = ScRefTokenHelper::isExternalRef(pToken); sal_uInt16 nFileId = bExternal ? pToken->GetIndex() : 0; @@ -837,7 +837,7 @@ void Chart2Positioner::createPositionMap() /** * Function object to create a range string from a token list. */ -class Tokens2RangeString : public unary_function<ScSharedTokenRef, void> +class Tokens2RangeString : public unary_function<ScTokenRef, void> { public: Tokens2RangeString(ScDocument* pDoc, FormulaGrammar::Grammar eGram, sal_Unicode cRangeSep) : @@ -858,7 +858,7 @@ public: { } - void operator() (const ScSharedTokenRef& rToken) + void operator() (const ScTokenRef& rToken) { ScCompiler aCompiler(mpDoc, ScAddress(0,0,0)); aCompiler.SetGrammar(meGrammar); @@ -895,7 +895,7 @@ private: * * and each address doesn't include any '$' symbols. */ -class Tokens2RangeStringXML : public unary_function<ScSharedTokenRef, void> +class Tokens2RangeStringXML : public unary_function<ScTokenRef, void> { public: Tokens2RangeStringXML(ScDocument* pDoc) : @@ -916,14 +916,14 @@ public: { } - void operator() (const ScSharedTokenRef& rToken) + void operator() (const ScTokenRef& rToken) { if (mbFirst) mbFirst = false; else mpRangeStr->append(mcRangeSep); - ScSharedTokenRef aStart, aEnd; + ScTokenRef aStart, aEnd; splitRangeToken(rToken, aStart, aEnd); ScCompiler aCompiler(mpDoc, ScAddress(0,0,0)); aCompiler.SetGrammar(FormulaGrammar::GRAM_ENGLISH); @@ -948,7 +948,7 @@ public: private: Tokens2RangeStringXML(); // disabled - void splitRangeToken(const ScSharedTokenRef& pToken, ScSharedTokenRef& rStart, ScSharedTokenRef& rEnd) const + void splitRangeToken(const ScTokenRef& pToken, ScTokenRef& rStart, ScTokenRef& rEnd) const { ScComplexRefData aData; ScRefTokenHelper::getDoubleRefDataFromToken(aData, pToken); @@ -989,7 +989,7 @@ private: bool mbFirst; }; -void lcl_convertTokensToString(OUString& rStr, const vector<ScSharedTokenRef>& rTokens, ScDocument* pDoc) +void lcl_convertTokensToString(OUString& rStr, const vector<ScTokenRef>& rTokens, ScDocument* pDoc) { const sal_Unicode cRangeSep = ScCompiler::GetNativeSymbol(ocSep).GetChar(0); FormulaGrammar::Grammar eGrammar = pDoc->GetGrammar(); @@ -1044,7 +1044,7 @@ void ScChart2DataProvider::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint } } - vector<ScSharedTokenRef> aTokens; + vector<ScTokenRef> aTokens; ScRefTokenHelper::compileRangeRepresentation(aTokens, aRangeRepresentation, m_pDocument, m_pDocument->GetGrammar()); return !aTokens.empty(); } @@ -1052,7 +1052,7 @@ void ScChart2DataProvider::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint namespace { -ScChart2LabeledDataSequence* lcl_createScChart2DataSequenceFromTokens( auto_ptr< vector<ScSharedTokenRef> > pValueTokens, auto_ptr< vector<ScSharedTokenRef> > pLabelTokens, +ScChart2LabeledDataSequence* lcl_createScChart2DataSequenceFromTokens( auto_ptr< vector<ScTokenRef> > pValueTokens, auto_ptr< vector<ScTokenRef> > pLabelTokens, ScDocument* pDoc, const uno::Reference < chart2::data::XDataProvider >& xDP, bool bIncludeHiddenCells ) { ScChart2LabeledDataSequence* pRet = 0; @@ -1085,7 +1085,7 @@ ScChart2LabeledDataSequence* lcl_createScChart2DataSequenceFromTokens( auto_ptr< * * @return true if the corner was added, false otherwise. */ -bool lcl_addUpperLeftCornerIfMissing(vector<ScSharedTokenRef>& rRefTokens, +bool lcl_addUpperLeftCornerIfMissing(vector<ScTokenRef>& rRefTokens, SCROW nCornerRowCount=1, SCCOL nCornerColumnCount=1) { using ::std::max; @@ -1104,10 +1104,10 @@ bool lcl_addUpperLeftCornerIfMissing(vector<ScSharedTokenRef>& rRefTokens, String aExtTabName; bool bExternal = false; - vector<ScSharedTokenRef>::const_iterator itr = rRefTokens.begin(), itrEnd = rRefTokens.end(); + vector<ScTokenRef>::const_iterator itr = rRefTokens.begin(), itrEnd = rRefTokens.end(); // Get the first ref token. - ScSharedTokenRef pToken = *itr; + ScTokenRef pToken = *itr; switch (pToken->GetType()) { case svSingleRef: @@ -1324,13 +1324,13 @@ bool lcl_addUpperLeftCornerIfMissing(vector<ScSharedTokenRef>& rRefTokens, { if (bExternal) { - ScSharedTokenRef pCorner( + ScTokenRef pCorner( new ScExternalSingleRefToken(nFileId, aExtTabName, aData)); ScRefTokenHelper::join(rRefTokens, pCorner); } else { - ScSharedTokenRef pCorner(new ScSingleRefToken(aData)); + ScTokenRef pCorner(new ScSingleRefToken(aData)); ScRefTokenHelper::join(rRefTokens, pCorner); } } @@ -1344,13 +1344,13 @@ bool lcl_addUpperLeftCornerIfMissing(vector<ScSharedTokenRef>& rRefTokens, r.Ref2=aDataEnd; if (bExternal) { - ScSharedTokenRef pCorner( + ScTokenRef pCorner( new ScExternalDoubleRefToken(nFileId, aExtTabName, r)); ScRefTokenHelper::join(rRefTokens, pCorner); } else { - ScSharedTokenRef pCorner(new ScDoubleRefToken(r)); + ScTokenRef pCorner(new ScDoubleRefToken(r)); ScRefTokenHelper::join(rRefTokens, pCorner); } } @@ -1407,7 +1407,7 @@ ScChart2DataProvider::createDataSource( } } - vector<ScSharedTokenRef> aRefTokens; + vector<ScTokenRef> aRefTokens; ScRefTokenHelper::compileRangeRepresentation(aRefTokens, aRangeRepresentation, m_pDocument, m_pDocument->GetGrammar()); if (aRefTokens.empty()) // Invalid range representation. Bail out. @@ -1433,13 +1433,13 @@ ScChart2DataProvider::createDataSource( // Fill Categories if( bCategories ) { - auto_ptr< vector<ScSharedTokenRef> > pValueTokens(NULL); + auto_ptr< vector<ScTokenRef> > pValueTokens(NULL); if (bOrientCol) pValueTokens.reset(pChartMap->getAllRowHeaderRanges()); else pValueTokens.reset(pChartMap->getAllColHeaderRanges()); - auto_ptr< vector<ScSharedTokenRef> > pLabelTokens(NULL); + auto_ptr< vector<ScTokenRef> > pLabelTokens(NULL); pLabelTokens.reset(pChartMap->getLeftUpperCornerRanges()); ScChart2LabeledDataSequence* pCategories = lcl_createScChart2DataSequenceFromTokens( pValueTokens, pLabelTokens, m_pDocument, this, m_bIncludeHiddenCells );//ownership of pointers is transfered! @@ -1451,8 +1451,8 @@ ScChart2DataProvider::createDataSource( sal_Int32 nCount = bOrientCol ? pChartMap->getDataColCount() : pChartMap->getDataRowCount(); for (sal_Int32 i = 0; i < nCount; ++i) { - auto_ptr< vector<ScSharedTokenRef> > pValueTokens(NULL); - auto_ptr< vector<ScSharedTokenRef> > pLabelTokens(NULL); + auto_ptr< vector<ScTokenRef> > pValueTokens(NULL); + auto_ptr< vector<ScTokenRef> > pLabelTokens(NULL); if (bOrientCol) { pValueTokens.reset(pChartMap->getDataColRanges(static_cast<SCCOL>(i))); @@ -1512,7 +1512,7 @@ namespace /** * Function object to create a list of table numbers from a token list. */ -class InsertTabNumber : public unary_function<ScSharedTokenRef, void> +class InsertTabNumber : public unary_function<ScTokenRef, void> { public: InsertTabNumber() : @@ -1525,7 +1525,7 @@ public: { } - void operator() (const ScSharedTokenRef& pToken) const + void operator() (const ScTokenRef& pToken) const { if (!ScRefTokenHelper::isRef(pToken)) return; @@ -1546,7 +1546,7 @@ class RangeAnalyzer { public: RangeAnalyzer(); - void initRangeAnalyzer( const vector<ScSharedTokenRef>& rTokens ); + void initRangeAnalyzer( const vector<ScTokenRef>& rTokens ); void analyzeRange( sal_Int32& rnDataInRows, sal_Int32& rnDataInCols, bool& rbRowSourceAmbiguous ) const; bool inSameSingleRow( RangeAnalyzer& rOther ); @@ -1574,7 +1574,7 @@ RangeAnalyzer::RangeAnalyzer() { } -void RangeAnalyzer::initRangeAnalyzer( const vector<ScSharedTokenRef>& rTokens ) +void RangeAnalyzer::initRangeAnalyzer( const vector<ScTokenRef>& rTokens ) { mnRowCount=0; mnColumnCount=0; @@ -1588,10 +1588,10 @@ void RangeAnalyzer::initRangeAnalyzer( const vector<ScSharedTokenRef>& rTokens ) } mbEmpty=false; - vector<ScSharedTokenRef>::const_iterator itr = rTokens.begin(), itrEnd = rTokens.end(); + vector<ScTokenRef>::const_iterator itr = rTokens.begin(), itrEnd = rTokens.end(); for (; itr != itrEnd ; ++itr) { - ScSharedTokenRef aRefToken = *itr; + ScTokenRef aRefToken = *itr; StackVar eVar = aRefToken->GetType(); if (eVar == svDoubleRef || eVar == svExternalDoubleRef) { @@ -1681,12 +1681,12 @@ uno::Sequence< beans::PropertyValue > SAL_CALL ScChart2DataProvider::detectArgum ::rtl::OUString sRangeRep; bool bHasCategoriesLabels = false; - vector<ScSharedTokenRef> aAllCategoriesValuesTokens; - vector<ScSharedTokenRef> aAllSeriesLabelTokens; + vector<ScTokenRef> aAllCategoriesValuesTokens; + vector<ScTokenRef> aAllSeriesLabelTokens; chart::ChartDataRowSource eRowSource = chart::ChartDataRowSource_COLUMNS; - vector<ScSharedTokenRef> aAllTokens; + vector<ScTokenRef> aAllTokens; // parse given data source and collect infos { @@ -1723,10 +1723,10 @@ uno::Sequence< beans::PropertyValue > SAL_CALL ScChart2DataProvider::detectArgum if( xLabel.is()) { bFirstCellAsLabel = true; - vector<ScSharedTokenRef> aTokens; + vector<ScTokenRef> aTokens; ScRefTokenHelper::compileRangeRepresentation( aTokens, xLabel->getSourceRangeRepresentation(), m_pDocument, m_pDocument->GetGrammar() ); aLabel.initRangeAnalyzer(aTokens); - vector<ScSharedTokenRef>::const_iterator itr = aTokens.begin(), itrEnd = aTokens.end(); + vector<ScTokenRef>::const_iterator itr = aTokens.begin(), itrEnd = aTokens.end(); for (; itr != itrEnd; ++itr) { ScRefTokenHelper::join(aAllTokens, *itr); @@ -1740,10 +1740,10 @@ uno::Sequence< beans::PropertyValue > SAL_CALL ScChart2DataProvider::detectArgum Reference< chart2::data::XDataSequence > xValues( xLS->getValues()); if( xValues.is()) { - vector<ScSharedTokenRef> aTokens; + vector<ScTokenRef> aTokens; ScRefTokenHelper::compileRangeRepresentation( aTokens, xValues->getSourceRangeRepresentation(), m_pDocument, m_pDocument->GetGrammar() ); aValues.initRangeAnalyzer(aTokens); - vector<ScSharedTokenRef>::const_iterator itr = aTokens.begin(), itrEnd = aTokens.end(); + vector<ScTokenRef>::const_iterator itr = aTokens.begin(), itrEnd = aTokens.end(); for (; itr != itrEnd; ++itr) { ScRefTokenHelper::join(aAllTokens, *itr); @@ -1810,7 +1810,7 @@ uno::Sequence< beans::PropertyValue > SAL_CALL ScChart2DataProvider::detectArgum func = ::std::for_each(aAllTokens.begin(), aAllTokens.end(), func); func.getList(aTableNumList); aResult.push_back( - beans::PropertyValue( ::rtl::OUString::createFromAscii("TableNumberList"), -1, + beans::PropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TableNumberList")), -1, uno::makeAny( lcl_createTableNumberList( aTableNumList ) ), beans::PropertyState_DIRECT_VALUE )); } @@ -1819,7 +1819,7 @@ uno::Sequence< beans::PropertyValue > SAL_CALL ScChart2DataProvider::detectArgum if( bRowSourceDetected ) { aResult.push_back( - beans::PropertyValue( ::rtl::OUString::createFromAscii("DataRowSource"), -1, + beans::PropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DataRowSource")), -1, uno::makeAny( eRowSource ), beans::PropertyState_DIRECT_VALUE )); } @@ -1827,7 +1827,7 @@ uno::Sequence< beans::PropertyValue > SAL_CALL ScChart2DataProvider::detectArgum if( bRowSourceDetected ) { aResult.push_back( - beans::PropertyValue( ::rtl::OUString::createFromAscii("HasCategories"), -1, + beans::PropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HasCategories")), -1, uno::makeAny( bHasCategories ), beans::PropertyState_DIRECT_VALUE )); } @@ -1835,7 +1835,7 @@ uno::Sequence< beans::PropertyValue > SAL_CALL ScChart2DataProvider::detectArgum if( bRowSourceDetected ) { aResult.push_back( - beans::PropertyValue( ::rtl::OUString::createFromAscii("FirstCellAsLabel"), -1, + beans::PropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FirstCellAsLabel")), -1, uno::makeAny( bFirstCellAsLabel ), beans::PropertyState_DIRECT_VALUE )); } @@ -1861,7 +1861,7 @@ uno::Sequence< beans::PropertyValue > SAL_CALL ScChart2DataProvider::detectArgum // add cell range property aResult.push_back( - beans::PropertyValue( ::rtl::OUString::createFromAscii("CellRangeRepresentation"), -1, + beans::PropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CellRangeRepresentation")), -1, uno::makeAny( sRangeRep ), beans::PropertyState_DIRECT_VALUE )); //Sequence Mapping @@ -1931,7 +1931,7 @@ uno::Sequence< beans::PropertyValue > SAL_CALL ScChart2DataProvider::detectArgum if( bDifferentIndexes && aSequenceMappingVector.size() ) { aResult.push_back( - beans::PropertyValue( ::rtl::OUString::createFromAscii("SequenceMapping"), -1, + beans::PropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SequenceMapping")), -1, uno::makeAny( lcl_VectorToSequence(aSequenceMappingVector) ) , beans::PropertyState_DIRECT_VALUE )); } @@ -1947,7 +1947,7 @@ uno::Sequence< beans::PropertyValue > SAL_CALL ScChart2DataProvider::detectArgum if( ! m_pDocument ) return false; - vector<ScSharedTokenRef> aTokens; + vector<ScTokenRef> aTokens; ScRefTokenHelper::compileRangeRepresentation(aTokens, aRangeRepresentation, m_pDocument, m_pDocument->GetGrammar()); return !aTokens.empty(); } @@ -1971,13 +1971,13 @@ uno::Reference< chart2::data::XDataSequence > SAL_CALL // method to allow the client code to directly pass tokens representing // ranges. - vector<ScSharedTokenRef> aRefTokens; + vector<ScTokenRef> aRefTokens; ScRefTokenHelper::compileRangeRepresentation(aRefTokens, aRangeRepresentation, m_pDocument); if (aRefTokens.empty()) return xResult; // ScChart2DataSequence manages the life cycle of pRefTokens. - vector<ScSharedTokenRef>* pRefTokens = new vector<ScSharedTokenRef>(); + vector<ScTokenRef>* pRefTokens = new vector<ScTokenRef>(); pRefTokens->swap(aRefTokens); xResult.set(new ScChart2DataSequence(m_pDocument, this, pRefTokens, m_bIncludeHiddenCells)); @@ -1996,12 +1996,6 @@ uno::Reference< sheet::XRangeSelection > SAL_CALL ScChart2DataProvider::getRange return xResult; } -/*uno::Reference< util::XNumberFormatsSupplier > SAL_CALL ScChart2DataProvider::getNumberFormatsSupplier() - throw (uno::RuntimeException) -{ - return uno::Reference< util::XNumberFormatsSupplier >( lcl_GetXModel( m_pDocument ), uno::UNO_QUERY ); -}*/ - // XRangeXMLConversion --------------------------------------------------- rtl::OUString SAL_CALL ScChart2DataProvider::convertRangeToXML( const rtl::OUString& sRangeRepresentation ) @@ -2015,7 +2009,7 @@ rtl::OUString SAL_CALL ScChart2DataProvider::convertRangeToXML( const rtl::OUStr // Empty data range is allowed. return aRet; - vector<ScSharedTokenRef> aRefTokens; + vector<ScTokenRef> aRefTokens; ScRefTokenHelper::compileRangeRepresentation(aRefTokens, sRangeRepresentation, m_pDocument, m_pDocument->GetGrammar()); if (aRefTokens.empty()) throw lang::IllegalArgumentException(); @@ -2200,74 +2194,6 @@ ScChart2DataSource::getDataSequences() throw ( uno::RuntimeException) } return aRet; - -/* typedef ::std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > tVec; - tVec aVec; - bool bSeries = false; - // split into columns - FIXME: different if GlueState() is used - for ( ScRangePtr p = m_xRanges->First(); p; p = m_xRanges->Next()) - { - for ( SCCOL nCol = p->aStart.Col(); nCol <= p->aEnd.Col(); ++nCol) - { - uno::Reference< chart2::data::XLabeledDataSequence > xLabeledSeq( - new ScChart2LabeledDataSequence( m_pDocument)); - if( xLabeledSeq.is()) - { - aVec.push_back( xLabeledSeq ); - if( bSeries ) - { - ScRangeListRef aColRanges = new ScRangeList; - // one single sheet selected assumed for now - aColRanges->Append( ScRange( nCol, p->aStart.Row(), - p->aStart.Tab(), nCol, p->aStart.Row(), - p->aStart.Tab())); - // TEST: add range two times, once as label, once as data - // TODO: create pure Numerical and Text sequences if possible - uno::Reference< chart2::data::XDataSequence > xLabel( - new ScChart2DataSequence( m_pDocument, aColRanges)); - - // set role - uno::Reference< beans::XPropertySet > xProp( xLabel, uno::UNO_QUERY ); - if( xProp.is()) - xProp->setPropertyValue( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Role" )), - ::uno::makeAny( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "label" )))); - - xLabeledSeq->setLabel( xLabel ); - } - - ScRangeListRef aColRanges = new ScRangeList; - - // one single sheet selected assumed for now - aColRanges->Append( ScRange( nCol, p->aStart.Row() + 1, - p->aStart.Tab(), nCol, p->aEnd.Row(), - p->aStart.Tab())); - uno::Reference< chart2::data::XDataSequence > xData( - new ScChart2DataSequence( m_pDocument, aColRanges)); - - // set role - uno::Reference< beans::XPropertySet > xProp( xData, uno::UNO_QUERY ); - if( xProp.is()) - xProp->setPropertyValue( - ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Role" )), - ::uno::makeAny( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "values" )))); - - xLabeledSeq->setValues( xData ); - - bSeries = true; - } - } - } - uno::Sequence< uno::Reference< chart2::data::XLabeledDataSequence> > aSequences( - aVec.size()); - uno::Reference< chart2::data::XLabeledDataSequence> * pArr = aSequences.getArray(); - sal_Int32 j = 0; - for ( tVec::const_iterator iSeq = aVec.begin(); iSeq != aVec.end(); - ++iSeq, ++j) - { - pArr[j] = *iSeq; - } - return aSequences;*/ } void ScChart2DataSource::AddLabeledSequence(const uno::Reference < chart2::data::XLabeledDataSequence >& xNew) @@ -2408,7 +2334,7 @@ void ScChart2DataSequence::HiddenRangeListener::notify() ScChart2DataSequence::ScChart2DataSequence( ScDocument* pDoc, const uno::Reference < chart2::data::XDataProvider >& xDP, - vector<ScSharedTokenRef>* pTokens, + vector<ScTokenRef>* pTokens, bool bIncludeHiddenCells ) : m_bIncludeHiddenCells( bIncludeHiddenCells) , m_nObjectId( 0 ) @@ -2438,7 +2364,7 @@ ScChart2DataSequence::ScChart2DataSequence( ScDocument* pDoc, // rRangeList->Format( aStr, SCR_ABS_3D, m_pDocument ); // m_aIdentifier = ::rtl::OUString( aStr ); -// m_aIdentifier = ::rtl::OUString::createFromAscii( "ID_"); +// m_aIdentifier = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ID_")); // static sal_Int32 nID = 0; // m_aIdentifier += ::rtl::OUString::valueOf( ++nID); } @@ -2476,7 +2402,7 @@ void ScChart2DataSequence::RefChanged() pCLC->EndListeningHiddenRange(m_pHiddenListener.get()); } - vector<ScSharedTokenRef>::const_iterator itr = m_pTokens->begin(), itrEnd = m_pTokens->end(); + vector<ScTokenRef>::const_iterator itr = m_pTokens->begin(), itrEnd = m_pTokens->end(); for (; itr != itrEnd; ++itr) { ScRange aRange; @@ -2510,7 +2436,7 @@ void ScChart2DataSequence::BuildDataCache() sal_Int32 nDataCount = 0; sal_Int32 nHiddenValueCount = 0; - for (vector<ScSharedTokenRef>::const_iterator itr = m_pTokens->begin(), itrEnd = m_pTokens->end(); + for (vector<ScTokenRef>::const_iterator itr = m_pTokens->begin(), itrEnd = m_pTokens->end(); itr != itrEnd; ++itr) { if (ScRefTokenHelper::isExternalRef(*itr)) @@ -2621,7 +2547,7 @@ void ScChart2DataSequence::RebuildDataCache() } } -sal_Int32 ScChart2DataSequence::FillCacheFromExternalRef(const ScSharedTokenRef& pToken) +sal_Int32 ScChart2DataSequence::FillCacheFromExternalRef(const ScTokenRef& pToken) { ScExternalRefManager* pRefMgr = m_pDocument->GetExternalRefManager(); ScRange aRange; @@ -2709,11 +2635,10 @@ void ScChart2DataSequence::UpdateTokensFromRanges(const ScRangeList& rRanges) if (!m_pRangeIndices.get()) return; - sal_uInt32 nCount = rRanges.Count(); - for (sal_uInt32 i = 0; i < nCount; ++i) + for ( size_t i = 0, nCount = rRanges.size(); i < nCount; ++i ) { - ScSharedTokenRef pToken; - ScRange* pRange = static_cast<ScRange*>(rRanges.GetObject(i)); + ScTokenRef pToken; + const ScRange* pRange = rRanges[i]; DBG_ASSERT(pRange, "range object is NULL."); ScRefTokenHelper::getTokenFromRange(pToken, *pRange); @@ -2828,8 +2753,8 @@ void ScChart2DataSequence::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ScRangeList aRanges; m_pRangeIndices.reset(new vector<sal_uInt32>()); - vector<ScSharedTokenRef>::const_iterator itrBeg = m_pTokens->begin(), itrEnd = m_pTokens->end(); - for (vector<ScSharedTokenRef>::const_iterator itr = itrBeg ;itr != itrEnd; ++itr) + vector<ScTokenRef>::const_iterator itrBeg = m_pTokens->begin(), itrEnd = m_pTokens->end(); + for (vector<ScTokenRef>::const_iterator itr = itrBeg ;itr != itrEnd; ++itr) { if (!ScRefTokenHelper::isExternalRef(*itr)) { @@ -2841,7 +2766,7 @@ void ScChart2DataSequence::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint } } - DBG_ASSERT(m_pRangeIndices->size() == static_cast<size_t>(aRanges.Count()), + DBG_ASSERT(m_pRangeIndices->size() == static_cast<size_t>(aRanges.size()), "range list and range index list have different sizes."); auto_ptr<ScRangeList> pUndoRanges; @@ -2854,7 +2779,7 @@ void ScChart2DataSequence::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint if (bChanged) { - DBG_ASSERT(m_pRangeIndices->size() == static_cast<size_t>(aRanges.Count()), + DBG_ASSERT(m_pRangeIndices->size() == aRanges.size(), "range list and range index list have different sizes after the reference update."); // Bring the change back from the range list to the token list. @@ -2884,7 +2809,7 @@ void ScChart2DataSequence::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint const ScRangeList& rRanges = rUndoHint.GetRanges(); - sal_uInt32 nCount = rRanges.Count(); + size_t nCount = rRanges.size(); if (nCount != m_pRangeIndices->size()) { DBG_ERROR("range count and range index count differ."); @@ -3056,7 +2981,7 @@ namespace { * This function object is used to accumulatively count the numbers of * columns and rows in all reference tokens. */ -class AccumulateRangeSize : public unary_function<ScSharedTokenRef, void> +class AccumulateRangeSize : public unary_function<ScTokenRef, void> { public: AccumulateRangeSize() : @@ -3065,7 +2990,7 @@ public: AccumulateRangeSize(const AccumulateRangeSize& r) : mnCols(r.mnCols), mnRows(r.mnRows) {} - void operator() (const ScSharedTokenRef& pToken) + void operator() (const ScTokenRef& pToken) { ScRange r; bool bExternal = ScRefTokenHelper::isExternalRef(pToken); @@ -3086,7 +3011,7 @@ private: * This function object is used to generate label strings from a list of * reference tokens. */ -class GenerateLabelStrings : public unary_function<ScSharedTokenRef, void> +class GenerateLabelStrings : public unary_function<ScTokenRef, void> { public: GenerateLabelStrings(sal_Int32 nSize, chart2::data::LabelOrigin eOrigin, bool bColumn) : @@ -3101,7 +3026,7 @@ public: mnCount(r.mnCount), mbColumn(r.mbColumn) {} - void operator() (const ScSharedTokenRef& pToken) + void operator() (const ScTokenRef& pToken) { bool bExternal = ScRefTokenHelper::isExternalRef(pToken); ScRange aRange; @@ -3219,7 +3144,7 @@ uno::Sequence< ::rtl::OUString > SAL_CALL ScChart2DataSequence::generateLabel(ch sal_Int32 nCount = 0; bool bFound = false; - ScRangePtr p; + ScRange* p; uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( lcl_GetSpreadSheetDocument( m_pDocument )); if (!xSpreadDoc.is()) @@ -3232,8 +3157,9 @@ uno::Sequence< ::rtl::OUString > SAL_CALL ScChart2DataSequence::generateLabel(ch ScRangeList aRanges; ScRefTokenHelper::getRangeListFromTokens(aRanges, *m_pTokens); uno::Reference< table::XCellRange > xSheet; - for ( p = aRanges.First(); p && !bFound; p = aRanges.Next()) + for ( size_t rIndex = 0, nRanges = aRanges.size(); (rIndex < nRanges) && !bFound; ++rIndex ) { + p = aRanges[ rIndex ]; // TODO: use DocIter? table::CellAddress aStart, aEnd; ScUnoConversion::FillApiAddress( aStart, p->aStart ); @@ -3287,16 +3213,16 @@ uno::Reference< util::XCloneable > SAL_CALL ScChart2DataSequence::createClone() { SolarMutexGuard aGuard; - auto_ptr< vector<ScSharedTokenRef> > pTokensNew; + auto_ptr< vector<ScTokenRef> > pTokensNew; if (m_pTokens.get()) { // Clone tokens. - pTokensNew.reset(new vector<ScSharedTokenRef>); + pTokensNew.reset(new vector<ScTokenRef>); pTokensNew->reserve(m_pTokens->size()); - vector<ScSharedTokenRef>::const_iterator itr = m_pTokens->begin(), itrEnd = m_pTokens->end(); + vector<ScTokenRef>::const_iterator itr = m_pTokens->begin(), itrEnd = m_pTokens->end(); for (; itr != itrEnd; ++itr) { - ScSharedTokenRef p(static_cast<ScToken*>((*itr)->Clone())); + ScTokenRef p(static_cast<ScToken*>((*itr)->Clone())); pTokensNew->push_back(p); } } @@ -3335,7 +3261,7 @@ void SAL_CALL ScChart2DataSequence::addModifyListener( const uno::Reference< uti if( m_pDocument ) { ScChartListenerCollection* pCLC = m_pDocument->GetChartListenerCollection(); - vector<ScSharedTokenRef>::const_iterator itr = m_pTokens->begin(), itrEnd = m_pTokens->end(); + vector<ScTokenRef>::const_iterator itr = m_pTokens->begin(), itrEnd = m_pTokens->end(); for (; itr != itrEnd; ++itr) { ScRange aRange; @@ -3507,46 +3433,6 @@ void ScChart2DataSequence::setDataChangedHint(bool b) m_bGotDataChangedHint = b; } -// XUnoTunnel - -// sal_Int64 SAL_CALL ScChart2DataSequence::getSomething( -// const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException) -// { -// if ( rId.getLength() == 16 && -// 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(), -// rId.getConstArray(), 16 ) ) -// { -// return (sal_Int64)this; -// } -// return 0; -// } - -// // static -// const uno::Sequence<sal_Int8>& ScChart2DataSequence::getUnoTunnelId() -// { -// static uno::Sequence<sal_Int8> * pSeq = 0; -// if( !pSeq ) -// { -// osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() ); -// if( !pSeq ) -// { -// static uno::Sequence< sal_Int8 > aSeq( 16 ); -// rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True ); -// pSeq = &aSeq; -// } -// } -// return *pSeq; -// } - -// // static -// ScChart2DataSequence* ScChart2DataSequence::getImplementation( const uno::Reference<uno::XInterface> xObj ) -// { -// ScChart2DataSequence* pRet = NULL; -// uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY ); -// if (xUT.is()) -// pRet = (ScChart2DataSequence*) xUT->getSomething( getUnoTunnelId() ); -// return pRet; -// } #if USE_CHART2_EMPTYDATASEQUENCE // DataSequence ============================================================== @@ -3572,7 +3458,7 @@ ScChart2EmptyDataSequence::ScChart2EmptyDataSequence( ScDocument* pDoc, // rRangeList->Format( aStr, SCR_ABS_3D, m_pDocument ); // m_aIdentifier = ::rtl::OUString( aStr ); -// m_aIdentifier = ::rtl::OUString::createFromAscii( "ID_"); +// m_aIdentifier = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ID_")); // static sal_Int32 nID = 0; // m_aIdentifier += ::rtl::OUString::valueOf( ++nID); } @@ -3613,7 +3499,7 @@ uno::Sequence< rtl::OUString > SAL_CALL ScChart2EmptyDataSequence::getTextualDat throw uno::RuntimeException(); sal_Int32 nCount = 0; - ScRangePtr p; + ScRange* p; DBG_ASSERT(m_xRanges->Count() == 1, "not handled count of ranges"); @@ -3820,46 +3706,6 @@ void SAL_CALL ScChart2EmptyDataSequence::removeVetoableChangeListener( OSL_ENSURE( false, "Not yet implemented" ); } -// XUnoTunnel - -// sal_Int64 SAL_CALL ScChart2EmptyDataSequence::getSomething( -// const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException) -// { -// if ( rId.getLength() == 16 && -// 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(), -// rId.getConstArray(), 16 ) ) -// { -// return (sal_Int64)this; -// } -// return 0; -// } - -// // static -// const uno::Sequence<sal_Int8>& ScChart2EmptyDataSequence::getUnoTunnelId() -// { -// static uno::Sequence<sal_Int8> * pSeq = 0; -// if( !pSeq ) -// { -// osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() ); -// if( !pSeq ) -// { -// static uno::Sequence< sal_Int8 > aSeq( 16 ); -// rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True ); -// pSeq = &aSeq; -// } -// } -// return *pSeq; -// } - -// // static -// ScChart2DataSequence* ScChart2EmptyDataSequence::getImplementation( const uno::Reference<uno::XInterface> xObj ) -// { -// ScChart2DataSequence* pRet = NULL; -// uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY ); -// if (xUT.is()) -// pRet = (ScChart2EmptyDataSequence*) xUT->getSomething( getUnoTunnelId() ); -// return pRet; -// } #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/unoobj/chartuno.cxx b/sc/source/ui/unoobj/chartuno.cxx index 0212ea15dff3..0b0b500402c5 100644 --- a/sc/source/ui/unoobj/chartuno.cxx +++ b/sc/source/ui/unoobj/chartuno.cxx @@ -272,16 +272,16 @@ void SAL_CALL ScChartsObj::addNewByName( const rtl::OUString& aName, // set arguments uno::Sequence< beans::PropertyValue > aArgs( 4 ); aArgs[0] = beans::PropertyValue( - ::rtl::OUString::createFromAscii("CellRangeRepresentation"), -1, + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CellRangeRepresentation")), -1, uno::makeAny( ::rtl::OUString( sRangeStr )), beans::PropertyState_DIRECT_VALUE ); aArgs[1] = beans::PropertyValue( - ::rtl::OUString::createFromAscii("HasCategories"), -1, + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HasCategories")), -1, uno::makeAny( bRowHeaders ), beans::PropertyState_DIRECT_VALUE ); aArgs[2] = beans::PropertyValue( - ::rtl::OUString::createFromAscii("FirstCellAsLabel"), -1, + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FirstCellAsLabel")), -1, uno::makeAny( bColumnHeaders ), beans::PropertyState_DIRECT_VALUE ); aArgs[3] = beans::PropertyValue( - ::rtl::OUString::createFromAscii("DataRowSource"), -1, + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DataRowSource")), -1, uno::makeAny( chart::ChartDataRowSource_COLUMNS ), beans::PropertyState_DIRECT_VALUE ); xReceiver->setArguments( aArgs ); } @@ -466,7 +466,7 @@ ScChartObj::ScChartObj(ScDocShell* pDocSh, SCTAB nT, const String& rN) pDocShell->GetDocument()->AddUnoObject(*this); uno::Sequence< table::CellRangeAddress > aInitialPropValue; - registerPropertyNoMember( ::rtl::OUString::createFromAscii( "RelatedCellRanges" ), + registerPropertyNoMember( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "RelatedCellRanges" )), PROP_HANDLE_RELATED_CELLRANGES, beans::PropertyAttribute::MAYBEVOID, ::getCppuType( &aInitialPropValue ), &aInitialPropValue ); } @@ -627,12 +627,12 @@ void ScChartObj::getFastPropertyValue( uno::Any& rValue, sal_Int32 nHandle ) con const ScRangeListRef& rRangeList = pListener->GetRangeList(); if ( rRangeList.Is() ) { - ULONG nCount = rRangeList->Count(); + size_t nCount = rRangeList->size(); uno::Sequence< table::CellRangeAddress > aCellRanges( nCount ); table::CellRangeAddress* pCellRanges = aCellRanges.getArray(); - for ( USHORT i = 0; i < nCount; ++i ) + for ( size_t i = 0; i < nCount; ++i ) { - ScRange aRange( *rRangeList->GetObject( i ) ); + ScRange aRange( *(*rRangeList)[i] ); table::CellRangeAddress aCellRange; ScUnoConversion::FillApiRange( aCellRange, aRange ); pCellRanges[ i ] = aCellRange; @@ -725,14 +725,14 @@ uno::Sequence<table::CellRangeAddress> SAL_CALL ScChartObj::getRanges() throw(un GetData_Impl( xRanges, bColHeaders, bRowHeaders ); if ( xRanges.Is() ) { - ULONG nCount = xRanges->Count(); + size_t nCount = xRanges->size(); table::CellRangeAddress aRangeAddress; uno::Sequence<table::CellRangeAddress> aSeq(nCount); table::CellRangeAddress* pAry = aSeq.getArray(); - for (USHORT i=0; i<nCount; i++) + for (size_t i = 0; i < nCount; i++) { - ScRange aRange(*xRanges->GetObject(i)); + ScRange aRange( *(*xRanges)[i] ); aRangeAddress.Sheet = aRange.aStart.Tab(); aRangeAddress.StartColumn = aRange.aStart.Col(); diff --git a/sc/source/ui/unoobj/confuno.cxx b/sc/source/ui/unoobj/confuno.cxx index a00d65061007..5fbbe2a007f5 100644 --- a/sc/source/ui/unoobj/confuno.cxx +++ b/sc/source/ui/unoobj/confuno.cxx @@ -85,9 +85,7 @@ const SfxItemPropertyMapEntry* lcl_GetConfigPropertyMap() {MAP_CHAR_LEN(SC_UNO_UPDTEMPL), 0, &getBooleanCppuType(), 0, 0}, /*Stampit enable/disable print cancel */ {MAP_CHAR_LEN(SC_UNO_ALLOWPRINTJOBCANCEL), 0, &getBooleanCppuType(), 0, 0}, - // --> PB 2004-08-25 #i33095# Security Options {MAP_CHAR_LEN(SC_UNO_LOADREADONLY), 0, &getBooleanCppuType(), 0, 0}, - // <-- {MAP_CHAR_LEN(SC_UNO_SHAREDOC), 0, &getBooleanCppuType(), 0, 0}, {MAP_CHAR_LEN(SC_UNO_MODIFYPASSWORDINFO), 0, &getCppuType((uno::Sequence< beans::PropertyValue >*)0), 0, 0}, {0,0,0,0,0,0} @@ -421,7 +419,6 @@ uno::Any SAL_CALL ScDocumentConfiguration::getPropertyValue( const rtl::OUString aRet <<= pDocShell->IsQueryLoadTemplate(); else if ( aPropertyName.compareToAscii( SC_UNO_LOADREADONLY ) == 0 ) aRet <<= pDocShell->IsLoadReadonly(); - // <-- else if ( aPropertyName.compareToAscii( SC_UNO_SHAREDOC ) == 0 ) { ScUnoHelpFunctions::SetBoolInAny( aRet, pDocShell->HasSharedXMLFlagSet() ); @@ -464,7 +461,7 @@ SC_IMPL_DUMMY_PROPERTY_LISTENER( ScDocumentConfiguration ) rtl::OUString SAL_CALL ScDocumentConfiguration::getImplementationName() throw(uno::RuntimeException) { - return rtl::OUString::createFromAscii( "ScDocumentConfiguration" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ScDocumentConfiguration" )); } sal_Bool SAL_CALL ScDocumentConfiguration::supportsService( const rtl::OUString& rServiceName ) @@ -480,8 +477,8 @@ uno::Sequence<rtl::OUString> SAL_CALL ScDocumentConfiguration::getSupportedServi { uno::Sequence<rtl::OUString> aRet(2); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCCOMPSCPREADSHEETSETTINGS_SERVICE ); - pArray[1] = rtl::OUString::createFromAscii( SCDOCUMENTSETTINGS_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCCOMPSCPREADSHEETSETTINGS_SERVICE )); + pArray[1] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCDOCUMENTSETTINGS_SERVICE )); return aRet; } diff --git a/sc/source/ui/unoobj/cursuno.cxx b/sc/source/ui/unoobj/cursuno.cxx index 4685a4137c15..528b506d9f8a 100644 --- a/sc/source/ui/unoobj/cursuno.cxx +++ b/sc/source/ui/unoobj/cursuno.cxx @@ -120,8 +120,8 @@ void SAL_CALL ScCellCursorObj::collapseToCurrentRegion() throw(uno::RuntimeExcep { SolarMutexGuard aGuard; const ScRangeList& rRanges = GetRangeList(); - DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" ); - ScRange aOneRange(*rRanges.GetObject(0)); + DBG_ASSERT( rRanges.size() == 1, "Range? Ranges?" ); + ScRange aOneRange( *rRanges[ 0 ] ); aOneRange.Justify(); ScDocShell* pDocSh = GetDocShell(); @@ -145,8 +145,8 @@ void SAL_CALL ScCellCursorObj::collapseToCurrentArray() throw(uno::RuntimeExcept { SolarMutexGuard aGuard; const ScRangeList& rRanges = GetRangeList(); - DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" ); - ScRange aOneRange(*rRanges.GetObject(0)); + DBG_ASSERT( rRanges.size() == 1, "Range? Ranges?" ); + ScRange aOneRange( *rRanges[ 0 ] ); aOneRange.Justify(); ScAddress aCursor(aOneRange.aStart); // use the start address of the range @@ -180,8 +180,8 @@ void SAL_CALL ScCellCursorObj::collapseToMergedArea() throw(uno::RuntimeExceptio if ( pDocSh ) { const ScRangeList& rRanges = GetRangeList(); - DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" ); - ScRange aNewRange(*rRanges.GetObject(0)); + DBG_ASSERT( rRanges.size() == 1, "Range? Ranges?" ); + ScRange aNewRange( *rRanges[ 0 ] ); ScDocument* pDoc = pDocSh->GetDocument(); pDoc->ExtendOverlapped( aNewRange ); @@ -195,8 +195,8 @@ void SAL_CALL ScCellCursorObj::expandToEntireColumns() throw(uno::RuntimeExcepti { SolarMutexGuard aGuard; const ScRangeList& rRanges = GetRangeList(); - DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" ); - ScRange aNewRange(*rRanges.GetObject(0)); + DBG_ASSERT( rRanges.size() == 1, "Range? Ranges?" ); + ScRange aNewRange( *rRanges[ 0 ] ); aNewRange.aStart.SetRow( 0 ); aNewRange.aEnd.SetRow( MAXROW ); @@ -208,8 +208,8 @@ void SAL_CALL ScCellCursorObj::expandToEntireRows() throw(uno::RuntimeException) { SolarMutexGuard aGuard; const ScRangeList& rRanges = GetRangeList(); - DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" ); - ScRange aNewRange(*rRanges.GetObject(0)); + DBG_ASSERT( rRanges.size() == 1, "Range? Ranges?" ); + ScRange aNewRange( *rRanges[ 0 ] ); aNewRange.aStart.SetCol( 0 ); aNewRange.aEnd.SetCol( MAXCOL ); @@ -229,8 +229,8 @@ void SAL_CALL ScCellCursorObj::collapseToSize( sal_Int32 nColumns, sal_Int32 nRo else { const ScRangeList& rRanges = GetRangeList(); - DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" ); - ScRange aNewRange(*rRanges.GetObject(0)); + DBG_ASSERT( rRanges.size() == 1, "Range? Ranges?" ); + ScRange aNewRange( *rRanges[ 0 ] ); aNewRange.Justify(); //! wirklich? @@ -261,8 +261,8 @@ void SAL_CALL ScCellCursorObj::gotoStartOfUsedArea( sal_Bool bExpand ) if ( pDocSh ) { const ScRangeList& rRanges = GetRangeList(); - DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" ); - ScRange aNewRange(*rRanges.GetObject(0)); + DBG_ASSERT( rRanges.size() == 1, "Range? Ranges?" ); + ScRange aNewRange( *rRanges[0] ); SCTAB nTab = aNewRange.aStart.Tab(); SCCOL nUsedX = 0; // Anfang holen @@ -289,8 +289,8 @@ void SAL_CALL ScCellCursorObj::gotoEndOfUsedArea( sal_Bool bExpand ) if ( pDocSh ) { const ScRangeList& rRanges = GetRangeList(); - DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" ); - ScRange aNewRange(*rRanges.GetObject(0)); + DBG_ASSERT( rRanges.size() == 1, "Range? Ranges?" ); + ScRange aNewRange( *rRanges[ 0 ]); SCTAB nTab = aNewRange.aStart.Tab(); SCCOL nUsedX = 0; // Ende holen @@ -318,8 +318,8 @@ void SAL_CALL ScCellCursorObj::gotoStart() throw(uno::RuntimeException) SolarMutexGuard aGuard; const ScRangeList& rRanges = GetRangeList(); - DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" ); - ScRange aOneRange(*rRanges.GetObject(0)); + DBG_ASSERT( rRanges.size() == 1, "Range? Ranges?" ); + ScRange aOneRange( *rRanges[ 0 ]); aOneRange.Justify(); ScDocShell* pDocSh = GetDocShell(); @@ -346,8 +346,8 @@ void SAL_CALL ScCellCursorObj::gotoEnd() throw(uno::RuntimeException) SolarMutexGuard aGuard; const ScRangeList& rRanges = GetRangeList(); - DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" ); - ScRange aOneRange(*rRanges.GetObject(0)); + DBG_ASSERT( rRanges.size() == 1, "Range? Ranges?" ); + ScRange aOneRange( *rRanges[ 0 ] ); aOneRange.Justify(); ScDocShell* pDocSh = GetDocShell(); @@ -371,8 +371,8 @@ void SAL_CALL ScCellCursorObj::gotoNext() throw(uno::RuntimeException) { SolarMutexGuard aGuard; const ScRangeList& rRanges = GetRangeList(); - DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" ); - ScRange aOneRange(*rRanges.GetObject(0)); + DBG_ASSERT( rRanges.size() == 1, "Range? Ranges?" ); + ScRange aOneRange( *rRanges[ 0 ] ); aOneRange.Justify(); ScAddress aCursor(aOneRange.aStart); // bei Block immer den Start nehmen @@ -393,8 +393,8 @@ void SAL_CALL ScCellCursorObj::gotoPrevious() throw(uno::RuntimeException) { SolarMutexGuard aGuard; const ScRangeList& rRanges = GetRangeList(); - DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" ); - ScRange aOneRange(*rRanges.GetObject(0)); + DBG_ASSERT( rRanges.size() == 1, "Range? Ranges?" ); + ScRange aOneRange( *rRanges[ 0 ] ); aOneRange.Justify(); ScAddress aCursor(aOneRange.aStart); // bei Block immer den Start nehmen @@ -416,8 +416,8 @@ void SAL_CALL ScCellCursorObj::gotoOffset( sal_Int32 nColumnOffset, sal_Int32 nR { SolarMutexGuard aGuard; const ScRangeList& rRanges = GetRangeList(); - DBG_ASSERT( rRanges.Count() == 1, "Range? Ranges?" ); - ScRange aOneRange(*rRanges.GetObject(0)); + DBG_ASSERT( rRanges.size() == 1, "Range? Ranges?" ); + ScRange aOneRange( *rRanges[ 0 ] ); aOneRange.Justify(); if ( aOneRange.aStart.Col() + nColumnOffset >= 0 && @@ -473,7 +473,7 @@ uno::Reference<table::XCellRange> SAL_CALL ScCellCursorObj::getCellRangeByName( rtl::OUString SAL_CALL ScCellCursorObj::getImplementationName() throw(uno::RuntimeException) { - return rtl::OUString::createFromAscii( "ScCellCursorObj" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ScCellCursorObj" )); } sal_Bool SAL_CALL ScCellCursorObj::supportsService( const rtl::OUString& rServiceName ) @@ -496,8 +496,8 @@ uno::Sequence<rtl::OUString> SAL_CALL ScCellCursorObj::getSupportedServiceNames( // SheetCellCursor should be first (?) uno::Sequence<rtl::OUString> aTotalSeq( nParentLen + 2 ); rtl::OUString* pTotalArr = aTotalSeq.getArray(); - pTotalArr[0] = rtl::OUString::createFromAscii( SCSHEETCELLCURSOR_SERVICE ); - pTotalArr[1] = rtl::OUString::createFromAscii( SCCELLCURSOR_SERVICE ); + pTotalArr[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCSHEETCELLCURSOR_SERVICE )); + pTotalArr[1] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCCELLCURSOR_SERVICE )); // append cell range services for (long i=0; i<nParentLen; i++) diff --git a/sc/source/ui/unoobj/dapiuno.cxx b/sc/source/ui/unoobj/dapiuno.cxx index fc3aa7583552..bec89eaeb9e0 100644 --- a/sc/source/ui/unoobj/dapiuno.cxx +++ b/sc/source/ui/unoobj/dapiuno.cxx @@ -265,8 +265,8 @@ ScDPObject* lcl_GetDPObject( ScDocShell* pDocShell, SCTAB nTab, const String& rN ScDPCollection* pColl = pDoc->GetDPCollection(); if ( pColl ) { - USHORT nCount = pColl->GetCount(); - for (USHORT i=0; i<nCount; i++) + size_t nCount = pColl->GetCount(); + for (size_t i=0; i<nCount; ++i) { ScDPObject* pDPObj = (*pColl)[i]; if ( pDPObj->GetOutRange().aStart.Tab() == nTab && @@ -347,8 +347,8 @@ ScDataPilotTableObj* ScDataPilotTablesObj::GetObjectByIndex_Impl( sal_Int32 nInd // api only handles sheet data at this time //! allow all data sources!!! sal_Int32 nFound = 0; - USHORT nCount = pColl->GetCount(); - for (USHORT i=0; i<nCount; i++) + size_t nCount = pColl->GetCount(); + for (size_t i=0; i<nCount; ++i) { ScDPObject* pDPObj = (*pColl)[i]; if ( pDPObj->GetOutRange().aStart.Tab() == nTab ) @@ -499,8 +499,8 @@ sal_Int32 SAL_CALL ScDataPilotTablesObj::getCount() throw(RuntimeException) //! allow all data sources!!! USHORT nFound = 0; - USHORT nCount = pColl->GetCount(); - for (USHORT i=0; i<nCount; i++) + size_t nCount = pColl->GetCount(); + for (size_t i=0; i<nCount; ++i) { ScDPObject* pDPObj = (*pColl)[i]; if ( pDPObj->GetOutRange().aStart.Tab() == nTab ) @@ -562,9 +562,9 @@ Sequence<OUString> SAL_CALL ScDataPilotTablesObj::getElementNames() //! allow all data sources!!! USHORT nFound = 0; - USHORT nCount = pColl->GetCount(); - USHORT i; - for (i=0; i<nCount; i++) + size_t nCount = pColl->GetCount(); + size_t i; + for (i=0; i<nCount; ++i) { ScDPObject* pDPObj = (*pColl)[i]; if ( pDPObj->GetOutRange().aStart.Tab() == nTab ) @@ -574,7 +574,7 @@ Sequence<OUString> SAL_CALL ScDataPilotTablesObj::getElementNames() USHORT nPos = 0; Sequence<OUString> aSeq(nFound); OUString* pAry = aSeq.getArray(); - for (i=0; i<nCount; i++) + for (i=0; i<nCount; ++i) { ScDPObject* pDPObj = (*pColl)[i]; if ( pDPObj->GetOutRange().aStart.Tab() == nTab ) @@ -598,8 +598,8 @@ sal_Bool SAL_CALL ScDataPilotTablesObj::hasByName( const OUString& aName ) if ( pColl ) { String aNamStr(aName); - USHORT nCount = pColl->GetCount(); - for (USHORT i=0; i<nCount; i++) + size_t nCount = pColl->GetCount(); + for (size_t i=0; i<nCount; ++i) { // api only handles sheet data at this time //! allow all data sources!!! @@ -1008,13 +1008,13 @@ Any SAL_CALL ScDataPilotDescriptorBase::getPropertyValue( const OUString& aPrope { uno::Sequence<beans::PropertyValue> aSeq( 4 ); beans::PropertyValue* pArray = aSeq.getArray(); - pArray[0].Name = rtl::OUString::createFromAscii( SC_UNO_SOURCENAME ); + pArray[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNO_SOURCENAME )); pArray[0].Value <<= rtl::OUString( pServiceDesc->aParSource ); - pArray[1].Name = rtl::OUString::createFromAscii( SC_UNO_OBJECTNAME ); + pArray[1].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNO_OBJECTNAME )); pArray[1].Value <<= rtl::OUString( pServiceDesc->aParName ); - pArray[2].Name = rtl::OUString::createFromAscii( SC_UNO_USERNAME ); + pArray[2].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNO_USERNAME )); pArray[2].Value <<= rtl::OUString( pServiceDesc->aParUser ); - pArray[3].Name = rtl::OUString::createFromAscii( SC_UNO_PASSWORD ); + pArray[3].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNO_PASSWORD )); pArray[3].Value <<= rtl::OUString( pServiceDesc->aParPass ); aRet <<= aSeq; } @@ -1090,7 +1090,6 @@ sal_Int64 SAL_CALL ScDataPilotDescriptorBase::getSomething( return 0; } -// static const Sequence<sal_Int8>& ScDataPilotDescriptorBase::getUnoTunnelId() { static Sequence<sal_Int8> * pSeq = 0; @@ -1107,7 +1106,6 @@ const Sequence<sal_Int8>& ScDataPilotDescriptorBase::getUnoTunnelId() return *pSeq; } -// static ScDataPilotDescriptorBase* ScDataPilotDescriptorBase::getImplementation( const Reference<XDataPilotDescriptor> xObj ) { @@ -1282,14 +1280,6 @@ void SAL_CALL ScDataPilotTableObj::refresh() throw(RuntimeException) SolarMutexGuard aGuard; if( ScDPObject* pDPObj = lcl_GetDPObject(GetDocShell(), nTab, aName) ) RefreshDPObject( pDPObj, NULL, GetDocShell(), TRUE, TRUE ); - //if (pDPObj) - //{ - // ScDPObject* pNew = new ScDPObject(*pDPObj); - // ScDBDocFunc aFunc(*GetDocShell()); - // aFunc.DataPilotUpdate( pDPObj, pNew, TRUE, TRUE ); - // delete pNew; // DataPilotUpdate copies settings from "new" object - //} - } Sequence< Sequence<Any> > SAL_CALL ScDataPilotTableObj::getDrillDownData(const CellAddress& aAddr) @@ -2097,7 +2087,7 @@ void ScDataPilotFieldObj::setOrientation(DataPilotFieldOrientation eNew) if ( pOneDim->GetOrientation() == DataPilotFieldOrientation_HIDDEN ) pNewDim = pOneDim; // use this one else - ++nFound; // count existing non-hidden occurences + ++nFound; // count existing non-hidden occurrences } } @@ -2952,7 +2942,7 @@ void SAL_CALL ScDataPilotFieldGroupsObj::insertByName( const OUString& rName, co if( !lclExtractGroupMembers( aMembers, rElement ) ) throw IllegalArgumentException(); - // create the new entry if no error has been occured + // create the new entry if no error has been occurred maGroups.resize( maGroups.size() + 1 ); ScFieldGroup& rGroup = maGroups.back(); rGroup.maName = rName; @@ -3035,8 +3025,6 @@ void ScDataPilotFieldGroupsObj::renameFieldGroup( const OUString& rOldName, cons aOldIt->maName = rNewName; } -// private - ScFieldGroups::iterator ScDataPilotFieldGroupsObj::implFindByName( const OUString& rName ) { for( ScFieldGroups::iterator aIt = maGroups.begin(), aEnd = maGroups.end(); aIt != aEnd; ++aIt ) diff --git a/sc/source/ui/unoobj/datauno.cxx b/sc/source/ui/unoobj/datauno.cxx index 8cc00f714eab..a27e9b8ee7b3 100644 --- a/sc/source/ui/unoobj/datauno.cxx +++ b/sc/source/ui/unoobj/datauno.cxx @@ -151,7 +151,6 @@ SC_SIMPLE_SERVICE_INFO( ScSubTotalFieldObj, "ScSubTotalFieldObj", "com.sun.star. //------------------------------------------------------------------------ -// static ScSubTotalFunc ScDataUnoConversion::GeneralToSubTotal( sheet::GeneralFunction eSummary ) { ScSubTotalFunc eSubTotal; @@ -177,7 +176,6 @@ ScSubTotalFunc ScDataUnoConversion::GeneralToSubTotal( sheet::GeneralFunction eS return eSubTotal; } -// static sheet::GeneralFunction ScDataUnoConversion::SubTotalToGeneral( ScSubTotalFunc eSubTotal ) { sheet::GeneralFunction eGeneral; @@ -233,22 +231,22 @@ void ScImportDescriptor::FillProperties( uno::Sequence<beans::PropertyValue>& rS aDescriptor.setDataSource(rParam.aDBName); if (aDescriptor.has( svx::daDataSource )) { - pArray[0].Name = rtl::OUString::createFromAscii( SC_UNONAME_DBNAME ); + pArray[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_DBNAME )); pArray[0].Value <<= rtl::OUString( rParam.aDBName ); } else if (aDescriptor.has( svx::daConnectionResource )) { - pArray[0].Name = rtl::OUString::createFromAscii( SC_UNONAME_CONRES ); + pArray[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_CONRES )); pArray[0].Value <<= rtl::OUString( rParam.aDBName ); } - pArray[1].Name = rtl::OUString::createFromAscii( SC_UNONAME_SRCTYPE ); + pArray[1].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_SRCTYPE )); pArray[1].Value <<= eMode; - pArray[2].Name = rtl::OUString::createFromAscii( SC_UNONAME_SRCOBJ ); + pArray[2].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_SRCOBJ )); pArray[2].Value <<= rtl::OUString( rParam.aStatement ); - pArray[3].Name = rtl::OUString::createFromAscii( SC_UNONAME_ISNATIVE ); + pArray[3].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_ISNATIVE )); ScUnoHelpFunctions::SetBoolInAny( pArray[3].Value, rParam.bNative ); } @@ -356,31 +354,31 @@ void ScSortDescriptor::FillProperties( uno::Sequence<beans::PropertyValue>& rSeq // Sequence fuellen - pArray[0].Name = rtl::OUString::createFromAscii( SC_UNONAME_ISSORTCOLUMNS ); + pArray[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_ISSORTCOLUMNS )); pArray[0].Value = ::cppu::bool2any(!rParam.bByRow); - pArray[1].Name = rtl::OUString::createFromAscii( SC_UNONAME_CONTHDR ); + pArray[1].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_CONTHDR )); ScUnoHelpFunctions::SetBoolInAny( pArray[1].Value, rParam.bHasHeader ); - pArray[2].Name = rtl::OUString::createFromAscii( SC_UNONAME_MAXFLD ); + pArray[2].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_MAXFLD )); pArray[2].Value <<= (sal_Int32) MAXSORT; - pArray[3].Name = rtl::OUString::createFromAscii( SC_UNONAME_SORTFLD ); + pArray[3].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_SORTFLD )); pArray[3].Value <<= aFields; - pArray[4].Name = rtl::OUString::createFromAscii( SC_UNONAME_BINDFMT ); + pArray[4].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_BINDFMT )); ScUnoHelpFunctions::SetBoolInAny( pArray[4].Value, rParam.bIncludePattern ); - pArray[5].Name = rtl::OUString::createFromAscii( SC_UNONAME_COPYOUT ); + pArray[5].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_COPYOUT )); ScUnoHelpFunctions::SetBoolInAny( pArray[5].Value, !rParam.bInplace ); - pArray[6].Name = rtl::OUString::createFromAscii( SC_UNONAME_OUTPOS ); + pArray[6].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_OUTPOS )); pArray[6].Value <<= aOutPos; - pArray[7].Name = rtl::OUString::createFromAscii( SC_UNONAME_ISULIST ); + pArray[7].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_ISULIST )); ScUnoHelpFunctions::SetBoolInAny( pArray[7].Value, rParam.bUserDef ); - pArray[8].Name = rtl::OUString::createFromAscii( SC_UNONAME_UINDEX ); + pArray[8].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_UINDEX )); pArray[8].Value <<= (sal_Int32) rParam.nUserIndex; } @@ -856,7 +854,6 @@ sal_Int64 SAL_CALL ScSubTotalDescriptorBase::getSomething( return 0; } -// static const uno::Sequence<sal_Int8>& ScSubTotalDescriptorBase::getUnoTunnelId() { static uno::Sequence<sal_Int8> * pSeq = 0; @@ -873,7 +870,6 @@ const uno::Sequence<sal_Int8>& ScSubTotalDescriptorBase::getUnoTunnelId() return *pSeq; } -// static ScSubTotalDescriptorBase* ScSubTotalDescriptorBase::getImplementation( const uno::Reference<sheet::XSubTotalDescriptor> xObj ) { @@ -2148,7 +2144,7 @@ SC_IMPL_DUMMY_PROPERTY_LISTENER( ScDatabaseRangeObj ) rtl::OUString SAL_CALL ScDatabaseRangeObj::getImplementationName() throw(uno::RuntimeException) { - return rtl::OUString::createFromAscii( "ScDatabaseRangeObj" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ScDatabaseRangeObj" )); } sal_Bool SAL_CALL ScDatabaseRangeObj::supportsService( const rtl::OUString& rServiceName ) @@ -2164,8 +2160,8 @@ uno::Sequence<rtl::OUString> SAL_CALL ScDatabaseRangeObj::getSupportedServiceNam { uno::Sequence<rtl::OUString> aRet(2); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCDATABASERANGEOBJ_SERVICE ); - pArray[1] = rtl::OUString::createFromAscii( SCLINKTARGET_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCDATABASERANGEOBJ_SERVICE )); + pArray[1] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCLINKTARGET_SERVICE )); return aRet; } diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx index 41bf1a16859f..5d9207818694 100644 --- a/sc/source/ui/unoobj/docuno.cxx +++ b/sc/source/ui/unoobj/docuno.cxx @@ -341,7 +341,6 @@ void ScPrintUIOptions::SetDefaults() } } -// static void ScModelObj::CreateAndSet(ScDocShell* pDocSh) { if (pDocSh) @@ -998,7 +997,7 @@ uno::Sequence<beans::PropertyValue> SAL_CALL ScModelObj::getRenderer( sal_Int32 uno::Sequence<beans::PropertyValue> aSequence(1); beans::PropertyValue* pArray = aSequence.getArray(); - pArray[0].Name = rtl::OUString::createFromAscii( SC_UNONAME_PAGESIZE ); + pArray[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_PAGESIZE )); pArray[0].Value <<= aPageSize; if( ! pPrinterOptions ) @@ -1045,17 +1044,17 @@ uno::Sequence<beans::PropertyValue> SAL_CALL ScModelObj::getRenderer( sal_Int32 long nPropCount = bWasCellRange ? 3 : 2; uno::Sequence<beans::PropertyValue> aSequence(nPropCount); beans::PropertyValue* pArray = aSequence.getArray(); - pArray[0].Name = rtl::OUString::createFromAscii( SC_UNONAME_PAGESIZE ); + pArray[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_PAGESIZE )); pArray[0].Value <<= aPageSize; // #i111158# all positions are relative to the whole page, including non-printable area - pArray[1].Name = rtl::OUString::createFromAscii( SC_UNONAME_INC_NP_AREA ); + pArray[1].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_INC_NP_AREA )); pArray[1].Value = uno::makeAny( sal_True ); if ( bWasCellRange ) { table::CellRangeAddress aRangeAddress( nTab, aCellRange.aStart.Col(), aCellRange.aStart.Row(), aCellRange.aEnd.Col(), aCellRange.aEnd.Row() ); - pArray[2].Name = rtl::OUString::createFromAscii( SC_UNONAME_SOURCERANGE ); + pArray[2].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_SOURCERANGE )); pArray[2].Value <<= aRangeAddress; } @@ -1256,7 +1255,7 @@ void SAL_CALL ScModelObj::render( sal_Int32 nSelRenderer, const uno::Any& aSelec // external link, use as-is pPDFData->SetLinkURL( aIter->nLinkId, aBookmark ); } - aIter++; + ++aIter; } rBookmarks.clear(); } @@ -1997,7 +1996,7 @@ uno::Sequence<rtl::OUString> SAL_CALL ScModelObj::getAvailableServiceNames() rtl::OUString SAL_CALL ScModelObj::getImplementationName() throw(uno::RuntimeException) { - return rtl::OUString::createFromAscii( "ScModelObj" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ScModelObj" )); } sal_Bool SAL_CALL ScModelObj::supportsService( const rtl::OUString& rServiceName ) @@ -2014,8 +2013,8 @@ uno::Sequence<rtl::OUString> SAL_CALL ScModelObj::getSupportedServiceNames() { uno::Sequence<rtl::OUString> aRet(2); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCMODELOBJ_SERVICE ); - pArray[1] = rtl::OUString::createFromAscii( SCDOCSETTINGS_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCMODELOBJ_SERVICE )); + pArray[1] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCDOCSETTINGS_SERVICE )); return aRet; } @@ -2060,7 +2059,6 @@ sal_Int64 SAL_CALL ScModelObj::getSomething( return 0; } -// static const uno::Sequence<sal_Int8>& ScModelObj::getUnoTunnelId() { static uno::Sequence<sal_Int8> * pSeq = 0; @@ -2077,7 +2075,6 @@ const uno::Sequence<sal_Int8>& ScModelObj::getUnoTunnelId() return *pSeq; } -// static ScModelObj* ScModelObj::getImplementation( const uno::Reference<uno::XInterface> xObj ) { ScModelObj* pRet = NULL; @@ -2121,13 +2118,13 @@ void ScModelObj::NotifyChanges( const ::rtl::OUString& rOperation, const ScRange aEvent.Source.set( static_cast< cppu::OWeakObject* >( this ) ); aEvent.Base <<= aEvent.Source; - ULONG nRangeCount = rRanges.Count(); + size_t nRangeCount = rRanges.size(); aEvent.Changes.realloc( static_cast< sal_Int32 >( nRangeCount ) ); - for ( ULONG nIndex = 0; nIndex < nRangeCount; ++nIndex ) + for ( size_t nIndex = 0; nIndex < nRangeCount; ++nIndex ) { uno::Reference< table::XCellRange > xRangeObj; - ScRange aRange( *rRanges.GetObject( nIndex ) ); + ScRange aRange( *rRanges[ nIndex ] ); if ( aRange.aStart == aRange.aEnd ) { xRangeObj.set( new ScCellObj( pDocShell, aRange.aStart ) ); @@ -2174,20 +2171,20 @@ void ScModelObj::NotifyChanges( const ::rtl::OUString& rOperation, const ScRange if (pScript) { ScRangeList aTabRanges; // collect ranges on this sheet - ULONG nRangeCount = rRanges.Count(); - for ( ULONG nIndex = 0; nIndex < nRangeCount; ++nIndex ) + size_t nRangeCount = rRanges.size(); + for ( size_t nIndex = 0; nIndex < nRangeCount; ++nIndex ) { - ScRange aRange( *rRanges.GetObject( nIndex ) ); + ScRange aRange( *rRanges[ nIndex ] ); if ( aRange.aStart.Tab() == nTab ) aTabRanges.Append( aRange ); } - ULONG nTabRangeCount = aTabRanges.Count(); + size_t nTabRangeCount = aTabRanges.size(); if ( nTabRangeCount > 0 ) { uno::Reference<uno::XInterface> xTarget; if ( nTabRangeCount == 1 ) { - ScRange aRange( *aTabRanges.GetObject( 0 ) ); + ScRange aRange( *aTabRanges[ 0 ] ); if ( aRange.aStart == aRange.aEnd ) xTarget.set( static_cast<cppu::OWeakObject*>( new ScCellObj( pDocShell, aRange.aStart ) ) ); else @@ -2642,13 +2639,13 @@ uno::Sequence < uno::Reference< table::XCellRange > > SAL_CALL ScTableSheetsObj: ScDocument* pDoc = pDocShell->GetDocument(); if (ScRangeStringConverter::GetRangeListFromString( aRangeList, aRange, pDoc, ::formula::FormulaGrammar::CONV_OOO, ';' )) { - sal_Int32 nCount = aRangeList.Count(); + size_t nCount = aRangeList.size(); if (nCount) { xRet.realloc(nCount); - for( sal_Int32 nIndex = 0; nIndex < nCount; nIndex++ ) + for( size_t nIndex = 0; nIndex < nCount; nIndex++ ) { - const ScRange* pRange = aRangeList.GetObject( nIndex ); + const ScRange* pRange = aRangeList[ nIndex ]; if( pRange ) xRet[nIndex] = new ScCellRangeObj(pDocShell, *pRange); } diff --git a/sc/source/ui/unoobj/eventuno.cxx b/sc/source/ui/unoobj/eventuno.cxx index 8f0b38c0eed9..4edd9b8fb801 100644 --- a/sc/source/ui/unoobj/eventuno.cxx +++ b/sc/source/ui/unoobj/eventuno.cxx @@ -155,10 +155,10 @@ uno::Any SAL_CALL ScSheetEventsObj::getByName( const rtl::OUString& aName ) { uno::Sequence<beans::PropertyValue> aPropSeq( 2 ); aPropSeq[0] = beans::PropertyValue( - rtl::OUString::createFromAscii("EventType"), -1, - uno::makeAny( rtl::OUString::createFromAscii("Script") ), beans::PropertyState_DIRECT_VALUE ); + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("EventType")), -1, + uno::makeAny( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Script")) ), beans::PropertyState_DIRECT_VALUE ); aPropSeq[1] = beans::PropertyValue( - rtl::OUString::createFromAscii("Script"), -1, + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Script")), -1, uno::makeAny( *pScript ), beans::PropertyState_DIRECT_VALUE ); aRet <<= aPropSeq; } diff --git a/sc/source/ui/unoobj/fielduno.cxx b/sc/source/ui/unoobj/fielduno.cxx index 3af71007dfcf..5cbabe2d2679 100644 --- a/sc/source/ui/unoobj/fielduno.cxx +++ b/sc/source/ui/unoobj/fielduno.cxx @@ -808,7 +808,6 @@ sal_Int64 SAL_CALL ScCellFieldObj::getSomething( return 0; } -// static const uno::Sequence<sal_Int8>& ScCellFieldObj::getUnoTunnelId() { static uno::Sequence<sal_Int8> * pSeq = 0; @@ -825,7 +824,6 @@ const uno::Sequence<sal_Int8>& ScCellFieldObj::getUnoTunnelId() return *pSeq; } -// static ScCellFieldObj* ScCellFieldObj::getImplementation( const uno::Reference<text::XTextContent> xObj ) { @@ -840,7 +838,7 @@ ScCellFieldObj* ScCellFieldObj::getImplementation( rtl::OUString SAL_CALL ScCellFieldObj::getImplementationName() throw(uno::RuntimeException) { - return rtl::OUString::createFromAscii( "ScCellFieldObj" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ScCellFieldObj" )); } sal_Bool SAL_CALL ScCellFieldObj::supportsService( const rtl::OUString& rServiceName ) @@ -856,8 +854,8 @@ uno::Sequence<rtl::OUString> SAL_CALL ScCellFieldObj::getSupportedServiceNames() { uno::Sequence<rtl::OUString> aRet(2); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCTEXTFIELD_SERVICE ); - pArray[1] = rtl::OUString::createFromAscii( SCTEXTCONTENT_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCTEXTFIELD_SERVICE )); + pArray[1] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCTEXTCONTENT_SERVICE )); return aRet; } @@ -1469,7 +1467,6 @@ sal_Int64 SAL_CALL ScHeaderFieldObj::getSomething( return 0; } -// static const uno::Sequence<sal_Int8>& ScHeaderFieldObj::getUnoTunnelId() { static uno::Sequence<sal_Int8> * pSeq = 0; @@ -1486,7 +1483,6 @@ const uno::Sequence<sal_Int8>& ScHeaderFieldObj::getUnoTunnelId() return *pSeq; } -// static ScHeaderFieldObj* ScHeaderFieldObj::getImplementation( const uno::Reference<text::XTextContent> xObj ) { @@ -1501,7 +1497,7 @@ ScHeaderFieldObj* ScHeaderFieldObj::getImplementation( rtl::OUString SAL_CALL ScHeaderFieldObj::getImplementationName() throw(uno::RuntimeException) { - return rtl::OUString::createFromAscii( "ScHeaderFieldObj" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ScHeaderFieldObj" )); } sal_Bool SAL_CALL ScHeaderFieldObj::supportsService( const rtl::OUString& rServiceName ) @@ -1517,8 +1513,8 @@ uno::Sequence<rtl::OUString> SAL_CALL ScHeaderFieldObj::getSupportedServiceNames { uno::Sequence<rtl::OUString> aRet(2); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCTEXTFIELD_SERVICE ); - pArray[1] = rtl::OUString::createFromAscii( SCTEXTCONTENT_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCTEXTFIELD_SERVICE )); + pArray[1] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCTEXTCONTENT_SERVICE )); return aRet; } diff --git a/sc/source/ui/unoobj/filtuno.cxx b/sc/source/ui/unoobj/filtuno.cxx index ed1880380089..257489993850 100644 --- a/sc/source/ui/unoobj/filtuno.cxx +++ b/sc/source/ui/unoobj/filtuno.cxx @@ -91,14 +91,14 @@ uno::Reference<uno::XInterface> SAL_CALL ScFilterOptionsObj_CreateInstance( rtl::OUString ScFilterOptionsObj::getImplementationName_Static() { - return rtl::OUString::createFromAscii( SCFILTEROPTIONSOBJ_IMPLNAME ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCFILTEROPTIONSOBJ_IMPLNAME )); } uno::Sequence<rtl::OUString> ScFilterOptionsObj::getSupportedServiceNames_Static() { uno::Sequence<rtl::OUString> aRet(1); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCFILTEROPTIONSOBJ_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCFILTEROPTIONSOBJ_SERVICE )); return aRet; } @@ -109,7 +109,7 @@ uno::Sequence<beans::PropertyValue> SAL_CALL ScFilterOptionsObj::getPropertyValu uno::Sequence<beans::PropertyValue> aRet(1); beans::PropertyValue* pArray = aRet.getArray(); - pArray[0].Name = rtl::OUString::createFromAscii( SC_UNONAME_FILTEROPTIONS ); + pArray[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_FILTEROPTIONS )); pArray[0].Value <<= aFilterOptions; return aRet; diff --git a/sc/source/ui/unoobj/fmtuno.cxx b/sc/source/ui/unoobj/fmtuno.cxx index 72c10ee29c62..2dea92c13e5e 100644 --- a/sc/source/ui/unoobj/fmtuno.cxx +++ b/sc/source/ui/unoobj/fmtuno.cxx @@ -491,7 +491,6 @@ sal_Int64 SAL_CALL ScTableConditionalFormat::getSomething( return 0; } -// static const uno::Sequence<sal_Int8>& ScTableConditionalFormat::getUnoTunnelId() { static uno::Sequence<sal_Int8> * pSeq = 0; @@ -508,7 +507,6 @@ const uno::Sequence<sal_Int8>& ScTableConditionalFormat::getUnoTunnelId() return *pSeq; } -// static ScTableConditionalFormat* ScTableConditionalFormat::getImplementation( const uno::Reference<sheet::XSheetConditionalEntries> xObj ) { @@ -1027,7 +1025,6 @@ sal_Int64 SAL_CALL ScTableValidationObj::getSomething( return 0; } -// static const uno::Sequence<sal_Int8>& ScTableValidationObj::getUnoTunnelId() { static uno::Sequence<sal_Int8> * pSeq = 0; @@ -1044,7 +1041,6 @@ const uno::Sequence<sal_Int8>& ScTableValidationObj::getUnoTunnelId() return *pSeq; } -// static ScTableValidationObj* ScTableValidationObj::getImplementation( const uno::Reference<beans::XPropertySet> xObj ) { diff --git a/sc/source/ui/unoobj/funcuno.cxx b/sc/source/ui/unoobj/funcuno.cxx index 7b1efbd8e20f..784eb4f9bad2 100644 --- a/sc/source/ui/unoobj/funcuno.cxx +++ b/sc/source/ui/unoobj/funcuno.cxx @@ -89,7 +89,6 @@ public: //------------------------------------------------------------------------ -// static ScDocument* ScTempDocSource::CreateDocument() { ScDocument* pDoc = new ScDocument; // SCDOCMODE_DOCUMENT @@ -262,14 +261,14 @@ uno::Reference<uno::XInterface> SAL_CALL ScFunctionAccess_CreateInstance( rtl::OUString ScFunctionAccess::getImplementationName_Static() { - return rtl::OUString::createFromAscii( "stardiv.StarCalc.ScFunctionAccess" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "stardiv.StarCalc.ScFunctionAccess" )); } uno::Sequence<rtl::OUString> ScFunctionAccess::getSupportedServiceNames_Static() { uno::Sequence<rtl::OUString> aRet(1); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCFUNCTIONACCESS_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCFUNCTIONACCESS_SERVICE )); return aRet; } @@ -277,7 +276,7 @@ uno::Sequence<rtl::OUString> ScFunctionAccess::getSupportedServiceNames_Static() rtl::OUString SAL_CALL ScFunctionAccess::getImplementationName() throw(uno::RuntimeException) { - return rtl::OUString::createFromAscii( "ScFunctionAccess" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ScFunctionAccess") ); } sal_Bool SAL_CALL ScFunctionAccess::supportsService( const rtl::OUString& rServiceName ) @@ -293,8 +292,8 @@ uno::Sequence<rtl::OUString> SAL_CALL ScFunctionAccess::getSupportedServiceNames { uno::Sequence<rtl::OUString> aRet(2); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCFUNCTIONACCESS_SERVICE ); - pArray[1] = rtl::OUString::createFromAscii( SCDOCSETTINGS_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCFUNCTIONACCESS_SERVICE )); + pArray[1] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCDOCSETTINGS_SERVICE )); return aRet; } @@ -467,7 +466,7 @@ public: else mbArgError = true; } - bool hasArgError() { return mbArgError; } + bool hasArgError() const { return mbArgError; } }; template< class seq > @@ -554,8 +553,6 @@ uno::Any SAL_CALL ScFunctionAccess::callFunction( const rtl::OUString& aName, ScAddress aAdr; ScCompiler aCompiler(pDoc,aAdr); aCompiler.SetGrammar(pDoc->GetGrammar()); - //if (!ScCompiler::IsInitialized()) - // ScCompiler::InitSymbolsEnglish(); // // find function @@ -647,9 +644,9 @@ uno::Any SAL_CALL ScFunctionAccess::callFunction( const rtl::OUString& aName, { ScDocument* pSrcDoc = pImpl->GetDocument(); const ScRangeList& rRanges = pImpl->GetRangeList(); - if ( pSrcDoc && rRanges.Count() == 1 ) + if ( pSrcDoc && rRanges.size() == 1 ) { - ScRange aSrcRange = *rRanges.GetObject(0); + ScRange aSrcRange = *rRanges[ 0 ]; long nStartRow = nDocRow; long nColCount = aSrcRange.aEnd.Col() - aSrcRange.aStart.Col() + 1; diff --git a/sc/source/ui/unoobj/linkuno.cxx b/sc/source/ui/unoobj/linkuno.cxx index 9f5d7a5dd1c2..4a06fec9725b 100644 --- a/sc/source/ui/unoobj/linkuno.cxx +++ b/sc/source/ui/unoobj/linkuno.cxx @@ -1474,7 +1474,7 @@ uno::Reference< sheet::XDDELink > ScDDELinksObj::addDDELink( break; } - if ( pDoc->CreateDdeLink( aApplication, aTopic, aItem, nMod ) ) + if ( pDoc->CreateDdeLink( aApplication, aTopic, aItem, nMod, ScMatrixRef() ) ) { const ::rtl::OUString aName( lcl_BuildDDEName( aApplication, aTopic, aItem ) ); xLink.set( GetObjectByName_Impl( aName ) ); @@ -1687,8 +1687,8 @@ Reference< container::XEnumeration > SAL_CALL ScExternalDocLinkObj::createEnumer { SolarMutexGuard aGuard; Reference< container::XEnumeration > aRef( - new ScIndexEnumeration(this, OUString::createFromAscii( - "com.sun.star.sheet.ExternalDocLink"))); + new ScIndexEnumeration(this, OUString(RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.sheet.ExternalDocLink")))); return aRef; } @@ -1801,8 +1801,8 @@ Reference< container::XEnumeration > SAL_CALL ScExternalDocLinksObj::createEnume { SolarMutexGuard aGuard; Reference< container::XEnumeration > aRef( - new ScIndexEnumeration(this, OUString::createFromAscii( - "com.sun.star.sheet.ExternalDocLinks"))); + new ScIndexEnumeration(this, OUString(RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.sheet.ExternalDocLinks")))); return aRef; } diff --git a/sc/source/ui/unoobj/miscuno.cxx b/sc/source/ui/unoobj/miscuno.cxx index f0c1798e8c73..cef54bb1a3ed 100644 --- a/sc/source/ui/unoobj/miscuno.cxx +++ b/sc/source/ui/unoobj/miscuno.cxx @@ -47,7 +47,6 @@ SC_SIMPLE_SERVICE_INFO( ScNameToIndexAccess, "ScNameToIndexAccess", "stardiv.unk //------------------------------------------------------------------------ -// static uno::Reference<uno::XInterface> ScUnoHelpFunctions::AnyToInterface( const uno::Any& rAny ) { if ( rAny.getValueTypeClass() == uno::TypeClass_INTERFACE ) @@ -57,7 +56,6 @@ uno::Reference<uno::XInterface> ScUnoHelpFunctions::AnyToInterface( const uno::A return uno::Reference<uno::XInterface>(); //! Exception? } -// static sal_Bool ScUnoHelpFunctions::GetBoolProperty( const uno::Reference<beans::XPropertySet>& xProp, const rtl::OUString& rName, sal_Bool bDefault ) { @@ -83,7 +81,6 @@ sal_Bool ScUnoHelpFunctions::GetBoolProperty( const uno::Reference<beans::XPrope return bRet; } -// static sal_Int32 ScUnoHelpFunctions::GetLongProperty( const uno::Reference<beans::XPropertySet>& xProp, const rtl::OUString& rName, long nDefault ) { @@ -103,7 +100,6 @@ sal_Int32 ScUnoHelpFunctions::GetLongProperty( const uno::Reference<beans::XProp return nRet; } -// static sal_Int32 ScUnoHelpFunctions::GetEnumProperty( const uno::Reference<beans::XPropertySet>& xProp, const rtl::OUString& rName, long nDefault ) { @@ -133,7 +129,6 @@ sal_Int32 ScUnoHelpFunctions::GetEnumProperty( const uno::Reference<beans::XProp return nRet; } -// static OUString ScUnoHelpFunctions::GetStringProperty( const Reference<beans::XPropertySet>& xProp, const OUString& rName, const OUString& rDefault ) { @@ -153,7 +148,6 @@ OUString ScUnoHelpFunctions::GetStringProperty( return aRet; } -// static sal_Bool ScUnoHelpFunctions::GetBoolFromAny( const uno::Any& aAny ) { if ( aAny.getValueTypeClass() == uno::TypeClass_BOOLEAN ) @@ -161,7 +155,6 @@ sal_Bool ScUnoHelpFunctions::GetBoolFromAny( const uno::Any& aAny ) return FALSE; } -// static sal_Int16 ScUnoHelpFunctions::GetInt16FromAny( const uno::Any& aAny ) { sal_Int16 nRet = 0; @@ -170,7 +163,6 @@ sal_Int16 ScUnoHelpFunctions::GetInt16FromAny( const uno::Any& aAny ) return 0; } -// static sal_Int32 ScUnoHelpFunctions::GetInt32FromAny( const uno::Any& aAny ) { sal_Int32 nRet = 0; @@ -179,7 +171,6 @@ sal_Int32 ScUnoHelpFunctions::GetInt32FromAny( const uno::Any& aAny ) return 0; } -// static sal_Int32 ScUnoHelpFunctions::GetEnumFromAny( const uno::Any& aAny ) { sal_Int32 nRet = 0; @@ -190,13 +181,11 @@ sal_Int32 ScUnoHelpFunctions::GetEnumFromAny( const uno::Any& aAny ) return nRet; } -// static void ScUnoHelpFunctions::SetBoolInAny( uno::Any& rAny, sal_Bool bValue ) { rAny.setValue( &bValue, getBooleanCppuType() ); } -// static void ScUnoHelpFunctions::SetOptionalPropertyValue( Reference<beans::XPropertySet>& rPropSet, const sal_Char* pPropName, const Any& rVal ) { @@ -251,7 +240,7 @@ uno::Any SAL_CALL ScIndexEnumeration::nextElement() throw(container::NoSuchEleme ::rtl::OUString SAL_CALL ScIndexEnumeration::getImplementationName() throw(::com::sun::star::uno::RuntimeException) { - return ::rtl::OUString::createFromAscii("ScIndexEnumeration"); + return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ScIndexEnumeration")); } sal_Bool SAL_CALL ScIndexEnumeration::supportsService( const ::rtl::OUString& ServiceName ) diff --git a/sc/source/ui/unoobj/nameuno.cxx b/sc/source/ui/unoobj/nameuno.cxx index abc2eaef0514..c71487d8f6db 100644 --- a/sc/source/ui/unoobj/nameuno.cxx +++ b/sc/source/ui/unoobj/nameuno.cxx @@ -218,7 +218,7 @@ void SAL_CALL ScNamedRangeObj::setName( const rtl::OUString& aNewName ) // GRAM_PODF_A1 for API compatibility. Modify_Impl( &aNewStr, NULL, NULL, NULL, NULL,formula::FormulaGrammar::GRAM_PODF_A1 ); - if ( aName != aNewStr ) // some error occured... + if ( aName != aNewStr ) // some error occurred... throw uno::RuntimeException(); // no other exceptions specified } @@ -461,7 +461,6 @@ sal_Int64 SAL_CALL ScNamedRangeObj::getSomething( return 0; } -// static const uno::Sequence<sal_Int8>& ScNamedRangeObj::getUnoTunnelId() { static uno::Sequence<sal_Int8> * pSeq = 0; @@ -478,7 +477,6 @@ const uno::Sequence<sal_Int8>& ScNamedRangeObj::getUnoTunnelId() return *pSeq; } -// static ScNamedRangeObj* ScNamedRangeObj::getImplementation( const uno::Reference<uno::XInterface> xObj ) { ScNamedRangeObj* pRet = NULL; @@ -1042,15 +1040,15 @@ void ScLabelRangesObj::Notify( SfxBroadcaster&, const SfxHint& rHint ) // sheet::XLabelRanges -ScLabelRangeObj* ScLabelRangesObj::GetObjectByIndex_Impl(sal_uInt16 nIndex) +ScLabelRangeObj* ScLabelRangesObj::GetObjectByIndex_Impl(size_t nIndex) { if (pDocShell) { ScDocument* pDoc = pDocShell->GetDocument(); ScRangePairList* pList = bColumn ? pDoc->GetColNameRanges() : pDoc->GetRowNameRanges(); - if ( pList && nIndex < pList->Count() ) + if ( pList && nIndex < pList->size() ) { - ScRangePair* pData = pList->GetObject(nIndex); + ScRangePair* pData = (*pList)[nIndex]; if (pData) return new ScLabelRangeObj( pDocShell, bColumn, pData->GetRange(0) ); } @@ -1101,11 +1099,11 @@ void SAL_CALL ScLabelRangesObj::removeByIndex( sal_Int32 nIndex ) ScDocument* pDoc = pDocShell->GetDocument(); ScRangePairList* pOldList = bColumn ? pDoc->GetColNameRanges() : pDoc->GetRowNameRanges(); - if ( pOldList && nIndex >= 0 && nIndex < (sal_Int32)pOldList->Count() ) + if ( pOldList && nIndex >= 0 && nIndex < (sal_Int32)pOldList->size() ) { ScRangePairListRef xNewList(pOldList->Clone()); - ScRangePair* pEntry = xNewList->GetObject( nIndex ); + ScRangePair* pEntry = (*xNewList)[nIndex]; if (pEntry) { xNewList->Remove( pEntry ); @@ -1148,7 +1146,7 @@ sal_Int32 SAL_CALL ScLabelRangesObj::getCount() throw(uno::RuntimeException) ScDocument* pDoc = pDocShell->GetDocument(); ScRangePairList* pList = bColumn ? pDoc->GetColNameRanges() : pDoc->GetRowNameRanges(); if (pList) - return pList->Count(); + return pList->size(); } return 0; } diff --git a/sc/source/ui/unoobj/optuno.cxx b/sc/source/ui/unoobj/optuno.cxx index bfd6e631bd31..e8a5f535a35c 100644 --- a/sc/source/ui/unoobj/optuno.cxx +++ b/sc/source/ui/unoobj/optuno.cxx @@ -43,7 +43,6 @@ using namespace com::sun::star; //------------------------------------------------------------------------ -// static const SfxItemPropertyMapEntry* ScDocOptionsHelper::GetPropertyMap() { static SfxItemPropertyMapEntry aMap[] = @@ -65,7 +64,6 @@ const SfxItemPropertyMapEntry* ScDocOptionsHelper::GetPropertyMap() return aMap; } -// static sal_Bool ScDocOptionsHelper::setPropertyValue( ScDocOptions& rOptions, const SfxItemPropertyMap& rPropMap, const rtl::OUString& aPropertyName, const uno::Any& aValue ) @@ -138,7 +136,6 @@ sal_Bool ScDocOptionsHelper::setPropertyValue( ScDocOptions& rOptions, return sal_True; } -// static uno::Any ScDocOptionsHelper::getPropertyValue( const ScDocOptions& rOptions, const SfxItemPropertyMap& rPropMap, diff --git a/sc/source/ui/unoobj/scdetect.cxx b/sc/source/ui/unoobj/scdetect.cxx index d16edbbd9ea0..7dfbcfcae12f 100644 --- a/sc/source/ui/unoobj/scdetect.cxx +++ b/sc/source/ui/unoobj/scdetect.cxx @@ -97,32 +97,32 @@ ScFilterDetect::~ScFilterDetect() { } -static const sal_Char __FAR_DATA pFilterSc50[] = "StarCalc 5.0"; -static const sal_Char __FAR_DATA pFilterSc50Temp[] = "StarCalc 5.0 Vorlage/Template"; -static const sal_Char __FAR_DATA pFilterSc40[] = "StarCalc 4.0"; -static const sal_Char __FAR_DATA pFilterSc40Temp[] = "StarCalc 4.0 Vorlage/Template"; -static const sal_Char __FAR_DATA pFilterSc30[] = "StarCalc 3.0"; -static const sal_Char __FAR_DATA pFilterSc30Temp[] = "StarCalc 3.0 Vorlage/Template"; -static const sal_Char __FAR_DATA pFilterSc10[] = "StarCalc 1.0"; -static const sal_Char __FAR_DATA pFilterXML[] = "StarOffice XML (Calc)"; -static const sal_Char __FAR_DATA pFilterAscii[] = "Text - txt - csv (StarCalc)"; -static const sal_Char __FAR_DATA pFilterLotus[] = "Lotus"; -static const sal_Char __FAR_DATA pFilterQPro6[] = "Quattro Pro 6.0"; -static const sal_Char __FAR_DATA pFilterExcel4[] = "MS Excel 4.0"; -static const sal_Char __FAR_DATA pFilterEx4Temp[] = "MS Excel 4.0 Vorlage/Template"; -static const sal_Char __FAR_DATA pFilterExcel5[] = "MS Excel 5.0/95"; -static const sal_Char __FAR_DATA pFilterEx5Temp[] = "MS Excel 5.0/95 Vorlage/Template"; -static const sal_Char __FAR_DATA pFilterExcel95[] = "MS Excel 95"; -static const sal_Char __FAR_DATA pFilterEx95Temp[] = "MS Excel 95 Vorlage/Template"; -static const sal_Char __FAR_DATA pFilterExcel97[] = "MS Excel 97"; -static const sal_Char __FAR_DATA pFilterEx97Temp[] = "MS Excel 97 Vorlage/Template"; -static const sal_Char __FAR_DATA pFilter2003XML[] = "MS Excel 2003 XML"; -static const sal_Char __FAR_DATA pFilterDBase[] = "dBase"; -static const sal_Char __FAR_DATA pFilterDif[] = "DIF"; -static const sal_Char __FAR_DATA pFilterSylk[] = "SYLK"; -static const sal_Char __FAR_DATA pFilterHtml[] = "HTML (StarCalc)"; -static const sal_Char __FAR_DATA pFilterHtmlWeb[] = "calc_HTML_WebQuery"; -static const sal_Char __FAR_DATA pFilterRtf[] = "Rich Text Format (StarCalc)"; +static const sal_Char pFilterSc50[] = "StarCalc 5.0"; +static const sal_Char pFilterSc50Temp[] = "StarCalc 5.0 Vorlage/Template"; +static const sal_Char pFilterSc40[] = "StarCalc 4.0"; +static const sal_Char pFilterSc40Temp[] = "StarCalc 4.0 Vorlage/Template"; +static const sal_Char pFilterSc30[] = "StarCalc 3.0"; +static const sal_Char pFilterSc30Temp[] = "StarCalc 3.0 Vorlage/Template"; +static const sal_Char pFilterSc10[] = "StarCalc 1.0"; +static const sal_Char pFilterXML[] = "StarOffice XML (Calc)"; +static const sal_Char pFilterAscii[] = "Text - txt - csv (StarCalc)"; +static const sal_Char pFilterLotus[] = "Lotus"; +static const sal_Char pFilterQPro6[] = "Quattro Pro 6.0"; +static const sal_Char pFilterExcel4[] = "MS Excel 4.0"; +static const sal_Char pFilterEx4Temp[] = "MS Excel 4.0 Vorlage/Template"; +static const sal_Char pFilterExcel5[] = "MS Excel 5.0/95"; +static const sal_Char pFilterEx5Temp[] = "MS Excel 5.0/95 Vorlage/Template"; +static const sal_Char pFilterExcel95[] = "MS Excel 95"; +static const sal_Char pFilterEx95Temp[] = "MS Excel 95 Vorlage/Template"; +static const sal_Char pFilterExcel97[] = "MS Excel 97"; +static const sal_Char pFilterEx97Temp[] = "MS Excel 97 Vorlage/Template"; +static const sal_Char pFilter2003XML[] = "MS Excel 2003 XML"; +static const sal_Char pFilterDBase[] = "dBase"; +static const sal_Char pFilterDif[] = "DIF"; +static const sal_Char pFilterSylk[] = "SYLK"; +static const sal_Char pFilterHtml[] = "HTML (StarCalc)"; +static const sal_Char pFilterHtmlWeb[] = "calc_HTML_WebQuery"; +static const sal_Char pFilterRtf[] = "Rich Text Format (StarCalc)"; static BOOL lcl_MayBeAscii( SvStream& rStream ) @@ -435,10 +435,10 @@ static BOOL lcl_MayBeDBase( SvStream& rStream ) { // Excel-5: detect through contained streams // there are some "excel" formats from 3rd party vendors that need to be distinguished - String aStreamName(RTL_CONSTASCII_STRINGPARAM("Workbook")); + String aStreamName(RTL_CONSTASCII_USTRINGPARAM("Workbook")); BOOL bExcel97Stream = ( aStorage->IsStream( aStreamName ) ); - aStreamName = String(RTL_CONSTASCII_STRINGPARAM("Book")); + aStreamName = String(RTL_CONSTASCII_USTRINGPARAM("Book")); BOOL bExcel5Stream = ( aStorage->IsStream( aStreamName ) ); if ( bExcel97Stream || bExcel5Stream ) { @@ -637,8 +637,6 @@ static BOOL lcl_MayBeDBase( SvStream& rStream ) pFilterQPro6 }; - // const UINT16 nByteMask = 0xFF; - // suchen Sie jetzt! // ... realisiert ueber 'Mustererkennung' @@ -764,7 +762,7 @@ static BOOL lcl_MayBeDBase( SvStream& rStream ) { // if input stream wasn't part of the descriptor, now it should be, otherwise the content would be opend twice lDescriptor.realloc( nPropertyCount + 1 ); - lDescriptor[nPropertyCount].Name = ::rtl::OUString::createFromAscii("InputStream"); + lDescriptor[nPropertyCount].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("InputStream")); lDescriptor[nPropertyCount].Value <<= xStream; nPropertyCount++; } @@ -773,7 +771,7 @@ static BOOL lcl_MayBeDBase( SvStream& rStream ) { // if input stream wasn't part of the descriptor, now it should be, otherwise the content would be opend twice lDescriptor.realloc( nPropertyCount + 1 ); - lDescriptor[nPropertyCount].Name = ::rtl::OUString::createFromAscii("UCBContent"); + lDescriptor[nPropertyCount].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("UCBContent")); lDescriptor[nPropertyCount].Value <<= xContent; nPropertyCount++; } @@ -783,7 +781,7 @@ static BOOL lcl_MayBeDBase( SvStream& rStream ) if ( nIndexOfReadOnlyFlag == -1 ) { lDescriptor.realloc( nPropertyCount + 1 ); - lDescriptor[nPropertyCount].Name = ::rtl::OUString::createFromAscii("ReadOnly"); + lDescriptor[nPropertyCount].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ReadOnly")); lDescriptor[nPropertyCount].Value <<= bReadOnly; nPropertyCount++; } @@ -794,7 +792,7 @@ static BOOL lcl_MayBeDBase( SvStream& rStream ) if ( !bRepairPackage && bRepairAllowed ) { lDescriptor.realloc( nPropertyCount + 1 ); - lDescriptor[nPropertyCount].Name = ::rtl::OUString::createFromAscii("RepairPackage"); + lDescriptor[nPropertyCount].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("RepairPackage")); lDescriptor[nPropertyCount].Value <<= bRepairAllowed; nPropertyCount++; @@ -808,7 +806,7 @@ static BOOL lcl_MayBeDBase( SvStream& rStream ) if ( nIndexOfTemplateFlag == -1 ) { lDescriptor.realloc( nPropertyCount + 1 ); - lDescriptor[nPropertyCount].Name = ::rtl::OUString::createFromAscii("AsTemplate"); + lDescriptor[nPropertyCount].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AsTemplate")); lDescriptor[nPropertyCount].Value <<= bOpenAsTemplate; nPropertyCount++; } @@ -822,7 +820,7 @@ static BOOL lcl_MayBeDBase( SvStream& rStream ) if ( nIndexOfDocumentTitle == -1 ) { lDescriptor.realloc( nPropertyCount + 1 ); - lDescriptor[nPropertyCount].Name = ::rtl::OUString::createFromAscii("DocumentTitle"); + lDescriptor[nPropertyCount].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DocumentTitle")); lDescriptor[nPropertyCount].Value <<= aDocumentTitle; nPropertyCount++; } @@ -835,7 +833,7 @@ static BOOL lcl_MayBeDBase( SvStream& rStream ) if ( nIndexOfFilterName == -1 ) { lDescriptor.realloc( nPropertyCount + 1 ); - lDescriptor[nPropertyCount].Name = ::rtl::OUString::createFromAscii("FilterName"); + lDescriptor[nPropertyCount].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FilterName")); lDescriptor[nPropertyCount].Value <<= rtl::OUString(pFilter->GetName()); nPropertyCount++; } @@ -884,14 +882,14 @@ UNOSEQUENCE< UNOOUSTRING > ScFilterDetect::impl_getStaticSupportedServiceNames() { UNOMUTEXGUARD aGuard( UNOMUTEX::getGlobalMutex() ); UNOSEQUENCE< UNOOUSTRING > seqServiceNames( 1 ); - seqServiceNames.getArray() [0] = UNOOUSTRING::createFromAscii( "com.sun.star.frame.ExtendedTypeDetection" ); + seqServiceNames.getArray() [0] = UNOOUSTRING(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.ExtendedTypeDetection" )); return seqServiceNames ; } /* Helper for XServiceInfo */ UNOOUSTRING ScFilterDetect::impl_getStaticImplementationName() { - return UNOOUSTRING::createFromAscii( "com.sun.star.comp.calc.FormatDetector" ); + return UNOOUSTRING(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.calc.FormatDetector" )); } /* Helper for registry */ diff --git a/sc/source/ui/unoobj/servuno.cxx b/sc/source/ui/unoobj/servuno.cxx index b942c7dd9f11..c96e7e4b851e 100644 --- a/sc/source/ui/unoobj/servuno.cxx +++ b/sc/source/ui/unoobj/servuno.cxx @@ -247,7 +247,7 @@ struct ProvNamesId_Type sal_uInt16 nType; }; -static const ProvNamesId_Type __FAR_DATA aProvNamesId[] = +static const ProvNamesId_Type aProvNamesId[] = { { "com.sun.star.sheet.Spreadsheet", SC_SERVICE_SHEET }, { "com.sun.star.text.TextField.URL", SC_SERVICE_URLFIELD }, @@ -315,7 +315,7 @@ static const ProvNamesId_Type __FAR_DATA aProvNamesId[] = // in case some macro is still using them // -static const sal_Char* __FAR_DATA aOldNames[SC_SERVICE_COUNT] = +static const sal_Char* aOldNames[SC_SERVICE_COUNT] = { "", // SC_SERVICE_SHEET "stardiv.one.text.TextField.URL", // SC_SERVICE_URLFIELD diff --git a/sc/source/ui/unoobj/shapeuno.cxx b/sc/source/ui/unoobj/shapeuno.cxx index 3f9ea0aabcab..3db616762f53 100644 --- a/sc/source/ui/unoobj/shapeuno.cxx +++ b/sc/source/ui/unoobj/shapeuno.cxx @@ -74,12 +74,13 @@ const SfxItemPropertyMapEntry* lcl_GetShapeMap() {MAP_CHAR_LEN(SC_UNONAME_MOVEPROTECT), 0, &getCppuType((sal_Bool*)0), 0, 0 }, // #i66550 HLINK_FOR_SHAPES {MAP_CHAR_LEN(SC_UNONAME_HYPERLINK), 0, &getCppuType((rtl::OUString*)0), 0, 0 }, + {MAP_CHAR_LEN(SC_UNONAME_URL), 0, &getCppuType((rtl::OUString*)0), 0, 0 }, + {0,0,0,0,0,0} }; return aShapeMap_Impl; } -// static const SvEventDescription* ScShapeObj::GetSupportedMacroItems() { static const SvEventDescription aMacroDescriptionsImpl[] = @@ -385,20 +386,9 @@ void SAL_CALL ScShapeObj::setPropertyValue( table::CellRangeAddress aAddress = xRangeAdd->getRangeAddress(); if (nTab == aAddress.Sheet) { - if (aAddress.StartRow != aAddress.EndRow) //should be a Spreadsheet - { - DBG_ASSERT(aAddress.StartRow == 0 && aAddress.EndRow == MAXROW && - aAddress.StartColumn == 0 && aAddress.EndColumn == MAXCOL, "here should be a XSpreadsheet"); - ScDrawLayer::SetAnchor(pObj, SCA_PAGE); - } - else - { - DBG_ASSERT(aAddress.StartRow == aAddress.EndRow && - aAddress.StartColumn == aAddress.EndColumn, "here should be a XCell"); - ScDrawLayer::SetAnchor(pObj, SCA_CELL); - } Rectangle aRect(pDoc->GetMMRect( static_cast<SCCOL>(aAddress.StartColumn), static_cast<SCROW>(aAddress.StartRow), static_cast<SCCOL>(aAddress.EndColumn), static_cast<SCROW>(aAddress.EndRow), aAddress.Sheet )); + awt::Point aRelPoint; uno::Reference<drawing::XShape> xShape( mxShapeAgg, uno::UNO_QUERY ); if (xShape.is()) { @@ -417,7 +407,8 @@ void SAL_CALL ScShapeObj::setPropertyValue( awt::Size aUnoSize; awt::Point aCaptionPoint; ScRange aRange; - awt::Point aUnoPoint(lcl_GetRelativePos( xShape, pDoc, nTab, aRange, aUnoSize, aCaptionPoint )); + aRelPoint = lcl_GetRelativePos( xShape, pDoc, nTab, aRange, aUnoSize, aCaptionPoint ); + awt::Point aUnoPoint(aRelPoint); aUnoPoint.X += aPoint.X(); aUnoPoint.Y += aPoint.Y(); @@ -446,6 +437,24 @@ void SAL_CALL ScShapeObj::setPropertyValue( xShape->setPosition(aUnoPoint); pDocSh->SetModified(); } + + if (aAddress.StartRow != aAddress.EndRow) //should be a Spreadsheet + { + DBG_ASSERT(aAddress.StartRow == 0 && aAddress.EndRow == MAXROW && + aAddress.StartColumn == 0 && aAddress.EndColumn == MAXCOL, "here should be a XSpreadsheet"); + ScDrawLayer::SetPageAnchored(*pObj); + } + else + { + DBG_ASSERT(aAddress.StartRow == aAddress.EndRow && + aAddress.StartColumn == aAddress.EndColumn, "here should be a XCell"); + ScDrawObjData aAnchor; + aAnchor.maStart = ScAddress(aAddress.StartColumn, aAddress.StartRow, aAddress.Sheet); + aAnchor.maStartOffset = Point(aRelPoint.X, aRelPoint.Y); + ScDrawLayer::SetCellAnchored(*pObj, aAnchor); + //Currently we've only got a start anchor, not an end-anchor, so generate that now + ScDrawLayer::UpdateCellAnchorFromPositionEnd(*pObj, *pDoc, aAddress.Sheet); + } } } } @@ -505,7 +514,7 @@ void SAL_CALL ScShapeObj::setPropertyValue( uno::Reference<drawing::XShape> xShape( mxShapeAgg, uno::UNO_QUERY ); if (xShape.is()) { - if (ScDrawLayer::GetAnchor(pObj) == SCA_PAGE) + if (ScDrawLayer::GetAnchorType(*pObj) == SCA_PAGE) { awt::Point aPoint(xShape->getPosition()); awt::Size aSize(xShape->getSize()); @@ -532,7 +541,7 @@ void SAL_CALL ScShapeObj::setPropertyValue( xShape->setPosition(aPoint); pDocSh->SetModified(); } - else if (ScDrawLayer::GetAnchor(pObj) == SCA_CELL) + else if (ScDrawLayer::GetAnchorType(*pObj) == SCA_CELL) { awt::Size aUnoSize; awt::Point aCaptionPoint; @@ -603,7 +612,7 @@ void SAL_CALL ScShapeObj::setPropertyValue( uno::Reference<drawing::XShape> xShape( mxShapeAgg, uno::UNO_QUERY ); if (xShape.is()) { - if (ScDrawLayer::GetAnchor(pObj) == SCA_PAGE) + if (ScDrawLayer::GetAnchorType(*pObj) == SCA_PAGE) { awt::Point aPoint = xShape->getPosition(); awt::Point aCaptionPoint; @@ -616,7 +625,7 @@ void SAL_CALL ScShapeObj::setPropertyValue( xShape->setPosition(aPoint); pDocSh->SetModified(); } - else if (ScDrawLayer::GetAnchor(pObj) == SCA_CELL) + else if (ScDrawLayer::GetAnchorType(*pObj) == SCA_CELL) { awt::Size aUnoSize; awt::Point aCaptionPoint; @@ -647,7 +656,8 @@ void SAL_CALL ScShapeObj::setPropertyValue( } } } - else if ( aNameString.EqualsAscii( SC_UNONAME_HYPERLINK ) ) + else if ( aNameString.EqualsAscii( SC_UNONAME_HYPERLINK ) || + aNameString.EqualsAscii( SC_UNONAME_URL) ) { rtl::OUString sHlink; ScMacroInfo* pInfo = lcl_getShapeHyperMacroInfo(this, TRUE); @@ -699,23 +709,10 @@ uno::Any SAL_CALL ScShapeObj::getPropertyValue( const rtl::OUString& aPropertyNa { ScDocShell* pDocSh = (ScDocShell*)pObjSh; uno::Reference< uno::XInterface > xAnchor; - if (ScDrawLayer::GetAnchor(pObj) == SCA_CELL) - { - uno::Reference<drawing::XShape> xShape( mxShapeAgg, uno::UNO_QUERY ); - if (xShape.is()) - { - awt::Size aUnoSize; - awt::Point aCaptionPoint; - ScRange aRange; - awt::Point aUnoPoint(lcl_GetRelativePos( xShape, pDoc, nTab, aRange, aUnoSize, aCaptionPoint )); - - xAnchor.set(static_cast<cppu::OWeakObject*>(new ScCellObj( pDocSh, aRange.aStart ))); - } - } + if (ScDrawObjData *pAnchor = ScDrawLayer::GetObjDataTab(pObj, nTab)) + xAnchor.set(static_cast<cppu::OWeakObject*>(new ScCellObj( pDocSh, pAnchor->maStart))); else - { xAnchor.set(static_cast<cppu::OWeakObject*>(new ScTableSheetObj( pDocSh, nTab ))); - } aAny <<= xAnchor; } } @@ -758,7 +755,7 @@ uno::Any SAL_CALL ScShapeObj::getPropertyValue( const rtl::OUString& aPropertyNa uno::Reference<drawing::XShape> xShape( mxShapeAgg, uno::UNO_QUERY ); if (xShape.is()) { - if (ScDrawLayer::GetAnchor(pObj) == SCA_CELL) + if (ScDrawLayer::GetAnchorType(*pObj) == SCA_CELL) { awt::Size aUnoSize; awt::Point aCaptionPoint; @@ -818,7 +815,7 @@ uno::Any SAL_CALL ScShapeObj::getPropertyValue( const rtl::OUString& aPropertyNa if (xShape.is()) { uno::Reference< uno::XInterface > xAnchor; - if (ScDrawLayer::GetAnchor(pObj) == SCA_CELL) + if (ScDrawLayer::GetAnchorType(*pObj) == SCA_CELL) { awt::Size aUnoSize; awt::Point aCaptionPoint; @@ -844,7 +841,8 @@ uno::Any SAL_CALL ScShapeObj::getPropertyValue( const rtl::OUString& aPropertyNa } } } - else if ( aNameString.EqualsAscii( SC_UNONAME_HYPERLINK ) ) + else if ( aNameString.EqualsAscii( SC_UNONAME_HYPERLINK ) || + aNameString.EqualsAscii( SC_UNONAME_URL ) ) { rtl::OUString sHlink; if ( ScMacroInfo* pInfo = lcl_getShapeHyperMacroInfo(this) ) diff --git a/sc/source/ui/unoobj/srchuno.cxx b/sc/source/ui/unoobj/srchuno.cxx index 6402f60d91aa..6bc561ec4201 100644 --- a/sc/source/ui/unoobj/srchuno.cxx +++ b/sc/source/ui/unoobj/srchuno.cxx @@ -207,7 +207,7 @@ SC_IMPL_DUMMY_PROPERTY_LISTENER( ScCellSearchObj ) rtl::OUString SAL_CALL ScCellSearchObj::getImplementationName() throw(uno::RuntimeException) { - return rtl::OUString::createFromAscii( "ScCellSearchObj" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ScCellSearchObj" )); } sal_Bool SAL_CALL ScCellSearchObj::supportsService( const rtl::OUString& rServiceName ) @@ -223,8 +223,8 @@ uno::Sequence<rtl::OUString> SAL_CALL ScCellSearchObj::getSupportedServiceNames( { uno::Sequence<rtl::OUString> aRet(2); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCSEARCHDESCRIPTOR_SERVICE ); - pArray[1] = rtl::OUString::createFromAscii( SCREPLACEDESCRIPTOR_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCSEARCHDESCRIPTOR_SERVICE )); + pArray[1] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCREPLACEDESCRIPTOR_SERVICE )); return aRet; } @@ -242,7 +242,6 @@ sal_Int64 SAL_CALL ScCellSearchObj::getSomething( return 0; } -// static const uno::Sequence<sal_Int8>& ScCellSearchObj::getUnoTunnelId() { static uno::Sequence<sal_Int8> * pSeq = 0; @@ -259,7 +258,6 @@ const uno::Sequence<sal_Int8>& ScCellSearchObj::getUnoTunnelId() return *pSeq; } -// static ScCellSearchObj* ScCellSearchObj::getImplementation( const uno::Reference<util::XSearchDescriptor> xObj ) { diff --git a/sc/source/ui/unoobj/styleuno.cxx b/sc/source/ui/unoobj/styleuno.cxx index 9383816528ab..61ab291076f2 100644 --- a/sc/source/ui/unoobj/styleuno.cxx +++ b/sc/source/ui/unoobj/styleuno.cxx @@ -492,7 +492,6 @@ BOOL lcl_EndsWithUser( const String& rString ) pChar[nLen-1] == ')'; } -// static String ScStyleNameConversion::DisplayToProgrammaticName( const String& rDispName, UINT16 nType ) { BOOL bDisplayIsProgrammatic = FALSE; @@ -523,7 +522,6 @@ String ScStyleNameConversion::DisplayToProgrammaticName( const String& rDispName return rDispName; } -// static String ScStyleNameConversion::ProgrammaticToDisplayName( const String& rProgName, UINT16 nType ) { if ( lcl_EndsWithUser( rProgName ) ) @@ -671,8 +669,8 @@ uno::Sequence<rtl::OUString> SAL_CALL ScStyleFamiliesObj::getElementNames() SolarMutexGuard aGuard; uno::Sequence<rtl::OUString> aNames(SC_STYLE_FAMILY_COUNT); rtl::OUString* pNames = aNames.getArray(); - pNames[0] = rtl::OUString::createFromAscii( SC_FAMILYNAME_CELL ); - pNames[1] = rtl::OUString::createFromAscii( SC_FAMILYNAME_PAGE ); + pNames[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_FAMILYNAME_CELL )); + pNames[1] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_FAMILYNAME_PAGE )); return aNames; } @@ -734,13 +732,13 @@ uno::Sequence<beans::PropertyValue> SAL_CALL ScStyleFamiliesObj::getStyleLoaderO uno::Sequence<beans::PropertyValue> aSequence(3); beans::PropertyValue* pArray = aSequence.getArray(); - pArray[0].Name = rtl::OUString::createFromAscii( SC_UNONAME_OVERWSTL ); + pArray[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_OVERWSTL )); ScUnoHelpFunctions::SetBoolInAny( pArray[0].Value, TRUE ); - pArray[1].Name = rtl::OUString::createFromAscii( SC_UNONAME_LOADCELL ); + pArray[1].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_LOADCELL )); ScUnoHelpFunctions::SetBoolInAny( pArray[1].Value, TRUE ); - pArray[2].Name = rtl::OUString::createFromAscii( SC_UNONAME_LOADPAGE ); + pArray[2].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_LOADPAGE )); ScUnoHelpFunctions::SetBoolInAny( pArray[2].Value, TRUE ); return aSequence; @@ -1132,7 +1130,6 @@ sal_Int64 SAL_CALL ScStyleObj::getSomething( return 0; } -// static const uno::Sequence<sal_Int8>& ScStyleObj::getUnoTunnelId() { static uno::Sequence<sal_Int8> * pSeq = 0; @@ -1149,7 +1146,6 @@ const uno::Sequence<sal_Int8>& ScStyleObj::getUnoTunnelId() return *pSeq; } -// static ScStyleObj* ScStyleObj::getImplementation( const uno::Reference<uno::XInterface> xObj ) { @@ -1304,7 +1300,6 @@ void SAL_CALL ScStyleObj::setName( const rtl::OUString& aNewName ) } } -// static uno::Reference<container::XIndexReplace> ScStyleObj::CreateEmptyNumberingRules() { SvxNumRule aRule( 0, 0, TRUE ); // nothing supported @@ -2039,7 +2034,7 @@ uno::Any SAL_CALL ScStyleObj::getPropertyValue( const rtl::OUString& aPropertyNa BYTE nValue = ((const SvxPaperBinItem&)pItemSet->Get(nWhich)).GetValue(); rtl::OUString aName; if ( nValue == PAPERBIN_PRINTER_SETTINGS ) - aName = rtl::OUString::createFromAscii( SC_PAPERBIN_DEFAULTNAME ); + aName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_PAPERBIN_DEFAULTNAME )); else { Printer* pPrinter = pDocShell->GetPrinter(); @@ -2107,7 +2102,7 @@ SC_IMPL_DUMMY_PROPERTY_LISTENER( ScStyleObj ) rtl::OUString SAL_CALL ScStyleObj::getImplementationName() throw(uno::RuntimeException) { - return rtl::OUString::createFromAscii( "ScStyleObj" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ScStyleObj" )); } sal_Bool SAL_CALL ScStyleObj::supportsService( const rtl::OUString& rServiceName ) @@ -2125,9 +2120,9 @@ uno::Sequence<rtl::OUString> SAL_CALL ScStyleObj::getSupportedServiceNames() BOOL bPage = ( eFamily == SFX_STYLE_FAMILY_PAGE ); uno::Sequence<rtl::OUString> aRet(2); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCSTYLE_SERVICE ); - pArray[1] = rtl::OUString::createFromAscii( bPage ? SCPAGESTYLE_SERVICE - : SCCELLSTYLE_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCSTYLE_SERVICE )); + pArray[1] = bPage ? rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SCPAGESTYLE_SERVICE)) + : rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SCCELLSTYLE_SERVICE)); return aRet; } diff --git a/sc/source/ui/unoobj/targuno.cxx b/sc/source/ui/unoobj/targuno.cxx index 6509b03d864d..c239c489c5a2 100644 --- a/sc/source/ui/unoobj/targuno.cxx +++ b/sc/source/ui/unoobj/targuno.cxx @@ -243,8 +243,7 @@ void ScLinkTargetTypeObj::SetLinkTargetBitmap( uno::Any& rRet, sal_uInt16 nType } if (nImgId) { - BOOL bHighContrast = Application::GetSettings().GetStyleSettings().GetHighContrastMode(); - ImageList aEntryImages( ScResId( bHighContrast ? RID_IMAGELIST_H_NAVCONT : RID_IMAGELIST_NAVCONT ) ); + ImageList aEntryImages( ScResId( RID_IMAGELIST_NAVCONT ) ); const Image& rImage = aEntryImages.GetImage( nImgId ); rRet <<= uno::Reference< awt::XBitmap > (VCLUnoHelper::CreateBitmap( rImage.GetBitmapEx() )); } diff --git a/sc/source/ui/unoobj/textuno.cxx b/sc/source/ui/unoobj/textuno.cxx index d97cce02b426..254cff9403d7 100644 --- a/sc/source/ui/unoobj/textuno.cxx +++ b/sc/source/ui/unoobj/textuno.cxx @@ -200,7 +200,6 @@ sal_Int64 SAL_CALL ScHeaderFooterContentObj::getSomething( return 0; } -// static const uno::Sequence<sal_Int8>& ScHeaderFooterContentObj::getUnoTunnelId() { static uno::Sequence<sal_Int8> * pSeq = 0; @@ -217,7 +216,6 @@ const uno::Sequence<sal_Int8>& ScHeaderFooterContentObj::getUnoTunnelId() return *pSeq; } -// static ScHeaderFooterContentObj* ScHeaderFooterContentObj::getImplementation( const uno::Reference<sheet::XHeaderFooterContent> xObj ) { @@ -385,7 +383,7 @@ uno::Reference<text::XTextCursor> SAL_CALL ScHeaderFooterTextObj::createTextCurs //! wie ScCellObj::createTextCursorByRange, wenn SvxUnoTextRange_getReflection verfuegbar } -void ScHeaderFooterTextObj::FillDummyFieldData( ScHeaderFieldData& rData ) // static +void ScHeaderFooterTextObj::FillDummyFieldData( ScHeaderFieldData& rData ) { String aDummy(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( "???" ))); rData.aTitle = aDummy; @@ -694,7 +692,6 @@ sal_Int64 SAL_CALL ScCellTextCursor::getSomething( return SvxUnoTextCursor::getSomething( rId ); } -// static const uno::Sequence<sal_Int8>& ScCellTextCursor::getUnoTunnelId() { static uno::Sequence<sal_Int8> * pSeq = 0; @@ -711,7 +708,6 @@ const uno::Sequence<sal_Int8>& ScCellTextCursor::getUnoTunnelId() return *pSeq; } -// static ScCellTextCursor* ScCellTextCursor::getImplementation( const uno::Reference<uno::XInterface> xObj ) { ScCellTextCursor* pRet = NULL; @@ -798,7 +794,6 @@ sal_Int64 SAL_CALL ScHeaderFooterTextCursor::getSomething( return SvxUnoTextCursor::getSomething( rId ); } -// static const uno::Sequence<sal_Int8>& ScHeaderFooterTextCursor::getUnoTunnelId() { static uno::Sequence<sal_Int8> * pSeq = 0; @@ -815,7 +810,6 @@ const uno::Sequence<sal_Int8>& ScHeaderFooterTextCursor::getUnoTunnelId() return *pSeq; } -// static ScHeaderFooterTextCursor* ScHeaderFooterTextCursor::getImplementation( const uno::Reference<uno::XInterface> xObj ) { @@ -902,7 +896,6 @@ sal_Int64 SAL_CALL ScDrawTextCursor::getSomething( return SvxUnoTextCursor::getSomething( rId ); } -// static const uno::Sequence<sal_Int8>& ScDrawTextCursor::getUnoTunnelId() { static uno::Sequence<sal_Int8> * pSeq = 0; @@ -919,7 +912,6 @@ const uno::Sequence<sal_Int8>& ScDrawTextCursor::getUnoTunnelId() return *pSeq; } -// static ScDrawTextCursor* ScDrawTextCursor::getImplementation( const uno::Reference<uno::XInterface> xObj ) { ScDrawTextCursor* pRet = NULL; diff --git a/sc/source/ui/unoobj/tokenuno.cxx b/sc/source/ui/unoobj/tokenuno.cxx index fff4fe64d8ba..aa736ac5ad5b 100644 --- a/sc/source/ui/unoobj/tokenuno.cxx +++ b/sc/source/ui/unoobj/tokenuno.cxx @@ -336,14 +336,12 @@ void lcl_SingleRefToApi( sheet::SingleReference& rAPI, const ScSingleRefData& rR rAPI.Flags = nFlags; } -// static bool ScTokenConversion::ConvertToTokenArray( ScDocument& rDoc, ScTokenArray& rTokenArray, const uno::Sequence<sheet::FormulaToken>& rSequence ) { return !rTokenArray.Fill(rSequence,rDoc.GetExternalRefManager()); } -// static bool ScTokenConversion::ConvertToTokenSequence( ScDocument& rDoc, uno::Sequence<sheet::FormulaToken>& rSequence, const ScTokenArray& rTokenArray ) { diff --git a/sc/source/ui/unoobj/viewuno.cxx b/sc/source/ui/unoobj/viewuno.cxx index 297ae74b5de1..71f5bc0d3a42 100644 --- a/sc/source/ui/unoobj/viewuno.cxx +++ b/sc/source/ui/unoobj/viewuno.cxx @@ -469,7 +469,7 @@ private: ScTabViewObj* pViewObj; uno::Reference< script::vba::XVBAEventProcessor > xVbaEventsHelper; sal_Bool bDelaySelectionEvent; - sal_Bool bSelectionChangeOccured; + sal_Bool bSelectionChangeOccurred; void fireSelectionChangeEvent(); @@ -487,7 +487,7 @@ public: }; ScTabViewEventListener::ScTabViewEventListener(ScTabViewObj* pObj, uno::Reference< script::vba::XVBAEventProcessor >& rVbaEventsHelper): - pViewObj( pObj ),xVbaEventsHelper( rVbaEventsHelper ), bDelaySelectionEvent( sal_False ), bSelectionChangeOccured( sal_False ) + pViewObj( pObj ),xVbaEventsHelper( rVbaEventsHelper ), bDelaySelectionEvent( sal_False ), bSelectionChangeOccurred( sal_False ) { } @@ -514,14 +514,14 @@ void ScTabViewEventListener::fireSelectionChangeEvent() } } bDelaySelectionEvent = sal_False; - bSelectionChangeOccured = sal_False; + bSelectionChangeOccurred = sal_False; } sal_Bool SAL_CALL ScTabViewEventListener::mousePressed( const awt::EnhancedMouseEvent& e ) throw (uno::RuntimeException) { // Delay to fire the selection change event if clicking the left mouse button to do selection. bDelaySelectionEvent = ( e.Buttons == ::com::sun::star::awt::MouseButton::RIGHT ) ? sal_False : sal_True; - bSelectionChangeOccured = sal_False; + bSelectionChangeOccurred = sal_False; // ScTabViewObj::MousePressed should handle process BeforeDoubleClick and BeforeRightClick events return sal_True; @@ -529,7 +529,7 @@ sal_Bool SAL_CALL ScTabViewEventListener::mousePressed( const awt::EnhancedMouse sal_Bool SAL_CALL ScTabViewEventListener::mouseReleased( const awt::EnhancedMouseEvent&/*e*/) throw (uno::RuntimeException) { - if ( bSelectionChangeOccured ) + if ( bSelectionChangeOccurred ) fireSelectionChangeEvent(); return sal_True; } @@ -542,7 +542,7 @@ void SAL_CALL ScTabViewEventListener::selectionChanged( const lang::EventObject& } else { - bSelectionChangeOccured = sal_True; + bSelectionChangeOccurred = sal_True; } } @@ -755,10 +755,9 @@ uno::Sequence<sal_Int8> SAL_CALL ScTabViewObj::getImplementationId() BOOL lcl_TabInRanges( SCTAB nTab, const ScRangeList& rRanges ) { - ULONG nCount = rRanges.Count(); - for (ULONG i=0; i<nCount; i++) + for (size_t i = 0, nCount = rRanges.size(); i < nCount; ++i) { - const ScRange* pRange = rRanges.GetObject(i); + const ScRange* pRange = rRanges[ i ]; if ( nTab >= pRange->aStart.Tab() && nTab <= pRange->aEnd.Tab() ) return TRUE; } @@ -868,17 +867,17 @@ sal_Bool SAL_CALL ScTabViewObj::select( const uno::Any& aSelection ) // Ranges selektieren const ScRangeList& rRanges = pRangesImp->GetRangeList(); - ULONG nRangeCount = rRanges.Count(); + size_t nRangeCount = rRanges.size(); // for empty range list, remove selection (cursor remains where it was) if ( nRangeCount == 0 ) pViewSh->Unmark(); else if ( nRangeCount == 1 ) - pViewSh->MarkRange( *rRanges.GetObject(0) ); + pViewSh->MarkRange( *rRanges[ 0 ] ); else { // Mehrfachselektion - const ScRange* pFirst = rRanges.GetObject(0); + const ScRange* pFirst = rRanges[ 0 ]; if ( pFirst && !lcl_TabInRanges( pViewData->GetTabNo(), rRanges ) ) pViewSh->SetTabNo( pFirst->aStart.Tab() ); pViewSh->DoneBlockMode(); @@ -1042,7 +1041,7 @@ uno::Any SAL_CALL ScTabViewObj::getSelection() throw(uno::RuntimeException) ScRangeList aRangeList; aFilteredMark.FillRangeListWithMarks( &aRangeList, FALSE); // Theoretically a selection may start and end on a filtered row. - switch (aRangeList.Count()) + switch ( aRangeList.size() ) { case 0: // No unfiltered row, we have to return some object, so @@ -1051,7 +1050,7 @@ uno::Any SAL_CALL ScTabViewObj::getSelection() throw(uno::RuntimeException) break; case 1: { - const ScRange& rRange = *(aRangeList.GetObject(0)); + const ScRange& rRange = *(aRangeList[ 0 ]); if (rRange.aStart == rRange.aEnd) pObj = new ScCellObj( pDocSh, rRange.aStart ); else @@ -1203,7 +1202,7 @@ uno::Reference<sheet::XSpreadsheet> SAL_CALL ScTabViewObj::getActiveSheet() return NULL; } -//liuchen 2009-9-2 support expand (but not replace) the active sheet +// support expand (but not replace) the active sheet void SAL_CALL ScTabViewObj::setActiveSheet( const uno::Reference<sheet::XSpreadsheet>& xActiveSheet ) throw(uno::RuntimeException) { @@ -1227,9 +1226,9 @@ ScTabViewObj::selectSheet( const uno::Reference<sheet::XSpreadsheet>& xActiveShe if ( pRangesImp && pViewSh->GetViewData()->GetDocShell() == pRangesImp->GetDocShell() ) { const ScRangeList& rRanges = pRangesImp->GetRangeList(); - if ( rRanges.Count() == 1 ) + if ( rRanges.size() == 1 ) { - SCTAB nNewTab = rRanges.GetObject(0)->aStart.Tab(); + SCTAB nNewTab = rRanges[ 0 ]->aStart.Tab(); if ( pViewSh->GetViewData()->GetDocument()->HasTable(nNewTab) ) pViewSh->SetTabNo( nNewTab, bNew, bExpand ); } @@ -2255,7 +2254,7 @@ void ScTabViewObj::RangeSelChanged( const String& rText ) rtl::OUString SAL_CALL ScTabViewObj::getImplementationName() throw(uno::RuntimeException) { - return rtl::OUString::createFromAscii( "ScTabViewObj" ); + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ScTabViewObj" )); } sal_Bool SAL_CALL ScTabViewObj::supportsService( const rtl::OUString& rServiceName ) @@ -2271,8 +2270,8 @@ uno::Sequence<rtl::OUString> SAL_CALL ScTabViewObj::getSupportedServiceNames() { uno::Sequence<rtl::OUString> aRet(2); rtl::OUString* pArray = aRet.getArray(); - pArray[0] = rtl::OUString::createFromAscii( SCTABVIEWOBJ_SERVICE ); - pArray[1] = rtl::OUString::createFromAscii( SCVIEWSETTINGS_SERVICE ); + pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCTABVIEWOBJ_SERVICE )); + pArray[1] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCVIEWSETTINGS_SERVICE )); return aRet; } @@ -2290,7 +2289,6 @@ sal_Int64 SAL_CALL ScTabViewObj::getSomething( return 0; } -// static const uno::Sequence<sal_Int8>& ScTabViewObj::getUnoTunnelId() { static uno::Sequence<sal_Int8> * pSeq = 0; @@ -2307,7 +2305,6 @@ const uno::Sequence<sal_Int8>& ScTabViewObj::getUnoTunnelId() return *pSeq; } -// static ScTabViewObj* ScTabViewObj::getImplementation( const uno::Reference<uno::XInterface> xObj ) { ScTabViewObj* pRet = NULL; diff --git a/sc/source/ui/vba/excelvbahelper.cxx b/sc/source/ui/vba/excelvbahelper.cxx index 3ca5ba861dc8..99fda2b57a81 100644 --- a/sc/source/ui/vba/excelvbahelper.cxx +++ b/sc/source/ui/vba/excelvbahelper.cxx @@ -377,7 +377,7 @@ void CompileExcelFormulaToODF( ScDocument* pDoc, const String& rOldFormula, Stri } ScCompiler aCompiler( pDoc, ScAddress() ); aCompiler.SetGrammar( excel::GetFormulaGrammar( pDoc, ScAddress(), uno::Any( rtl::OUString( rOldFormula ) ) ) ); - ScTokenArray* pCode = aCompiler.CompileString( rOldFormula ); + aCompiler.CompileString( rOldFormula ); aCompiler.SetGrammar( formula::FormulaGrammar::GRAM_PODF_A1 ); aCompiler.CreateStringFromTokenArray( rNewFormula ); } diff --git a/sc/source/ui/vba/service.cxx b/sc/source/ui/vba/service.cxx index e0ed82fbc0fd..05dc4ab91820 100644 --- a/sc/source/ui/vba/service.cxx +++ b/sc/source/ui/vba/service.cxx @@ -89,35 +89,10 @@ extern "C" lang::XMultiServiceFactory * pServiceManager, registry::XRegistryKey * pRegistryKey ) { OSL_TRACE("In component_writeInfo"); -#if 0 - // Component registration - if ( component_writeInfoHelper( pServiceManager, pRegistryKey, - range::serviceDecl, workbook::serviceDecl, worksheet::serviceDecl, globals::serviceDecl, window::serviceDecl, hyperlink::serviceDecl, application::serviceDecl ) && component_writeInfoHelper( pServiceManager, pRegistryKey, vbaeventshelper::serviceDecl ) ) - { - // Singleton registration - try - { - registry::XRegistryKey * pKey = - reinterpret_cast< registry::XRegistryKey * >(pRegistryKey); - Reference< registry::XRegistryKey >xKey = pKey->createKey( - rtl::OUString::createFromAscii( ("ooo.vba.Globals/UNO/SINGLETONS/ooo.vba.theGlobals") ) ); - xKey->setStringValue( ::rtl::OUString::createFromAscii( - ("ooo.vba.Globals") ) ); - return sal_True; - } - catch( uno::Exception& /*e*/ ) - { - //recomp & friends will detect false returned and fail - } - } - return sal_False; -#else // Component registration return component_writeInfoHelper( pServiceManager, pRegistryKey, range::serviceDecl, workbook::serviceDecl, worksheet::serviceDecl, globals::serviceDecl, window::serviceDecl, hyperlink::serviceDecl, application::serviceDecl ) && component_writeInfoHelper( pServiceManager, pRegistryKey, vbaeventshelper::serviceDecl, textframe::serviceDecl ); -#endif - } SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory( diff --git a/sc/source/ui/vba/testvba/testvba.cxx b/sc/source/ui/vba/testvba/testvba.cxx index cf04d45250db..d93f2515cc35 100644 --- a/sc/source/ui/vba/testvba/testvba.cxx +++ b/sc/source/ui/vba/testvba/testvba.cxx @@ -45,7 +45,7 @@ using ::rtl::OUString; using ::std::auto_ptr; -const OUString EXTN = rtl::OUString::createFromAscii(".xls"); +const OUString EXTN(RTL_CONSTASCII_USTRINGPARAM(".xls")); OUString convertToURL( const OUString& rPath ) { @@ -59,7 +59,7 @@ OUString convertToURL( const OUString& rPath ) { osl::FileBase::getFileURLFromSystemPath( rPath, aURL ); if ( aURL.equals( rPath ) ) - throw uno::RuntimeException( rtl::OUString::createFromAscii( "could'nt convert " ).concat( rPath ).concat( rtl::OUString::createFromAscii( " to a URL, is it a fully qualified path name? " ) ), Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "could'nt convert " )).concat( rPath ).concat( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( " to a URL, is it a fully qualified path name? " )) ), Reference< uno::XInterface >() ); } return aURL; } @@ -98,34 +98,28 @@ public: const rtl::OUString& _outDirPath ) : mxContext( _xContext ), mxMCF( _xMCF ), mxCompLoader( _xCompLoader ), msOutDirPath( convertToURL( _outDirPath ) ) { - mxSFA.set( mxMCF->createInstanceWithContext( rtl::OUString::createFromAscii( "com.sun.star.ucb.SimpleFileAccess" ), mxContext), uno::UNO_QUERY_THROW ); + mxSFA.set( mxMCF->createInstanceWithContext( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ucb.SimpleFileAccess" )), mxContext), uno::UNO_QUERY_THROW ); } rtl::OUString getLogLocation() throw ( beans::UnknownPropertyException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::Exception ) { rtl::OUString sLogLocation; - Reference< XPropertySet > pathSettings( mxMCF->createInstanceWithContext( rtl::OUString::createFromAscii( "com.sun.star.comp.framework.PathSettings" ), mxContext), uno::UNO_QUERY_THROW ); - pathSettings->getPropertyValue( rtl::OUString::createFromAscii( "Work" ) ) >>= sLogLocation; - sLogLocation = sLogLocation.concat( rtl::OUString::createFromAscii( "/" ) ).concat( rtl::OUString::createFromAscii( "HelperAPI-test.log" ) ); + Reference< XPropertySet > pathSettings( mxMCF->createInstanceWithContext( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.framework.PathSettings" )), mxContext), uno::UNO_QUERY_THROW ); + pathSettings->getPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Work" )) ) >>= sLogLocation; + sLogLocation = sLogLocation.concat( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "/" )) ).concat( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "HelperAPI-test.log" )) ); return sLogLocation; } rtl::OUString getLogLocationWithName( OUString fileName ) throw ( beans::UnknownPropertyException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::Exception ) { printf("%s\n", getenv("HOME") ); printf("file name %s\n", rtl::OUStringToOString( fileName, RTL_TEXTENCODING_UTF8 ).getStr() ); - //rtl::OUString sLogLocation( rtl::OUString::createFromAscii( getenv("HOME") ) ); rtl::OUString sLogLocation; - Reference< XPropertySet > pathSettings( mxMCF->createInstanceWithContext( rtl::OUString::createFromAscii( "com.sun.star.comp.framework.PathSettings" ), mxContext), uno::UNO_QUERY_THROW ); - pathSettings->getPropertyValue( rtl::OUString::createFromAscii( "Work" ) ) >>= sLogLocation; - sLogLocation = sLogLocation.concat( rtl::OUString::createFromAscii( "/" ) ).concat( fileName.copy ( 0, fileName.lastIndexOf( EXTN ) ) + rtl::OUString::createFromAscii( ".log" ) ); + Reference< XPropertySet > pathSettings( mxMCF->createInstanceWithContext( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.framework.PathSettings" )), mxContext), uno::UNO_QUERY_THROW ); + pathSettings->getPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Work" )) ) >>= sLogLocation; + sLogLocation = sLogLocation.concat( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "/" )) ).concat( fileName.copy ( 0, fileName.lastIndexOf( EXTN ) ) + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ".log" )) ); return sLogLocation; } - void init() - { - // blow away previous logs? - } - void proccessDocument( const rtl::OUString& sUrl ) { if ( !mxSFA->isFolder( sUrl ) && sUrl.endsWithIgnoreAsciiCaseAsciiL( ".xls", 4 ) ) @@ -137,13 +131,13 @@ mxCompLoader( _xCompLoader ), msOutDirPath( convertToURL( _outDirPath ) ) printf( "processing %s\n", rtl::OUStringToOString( sUrl, RTL_TEXTENCODING_UTF8 ).getStr() ); // Loading the wanted document Sequence< PropertyValue > propertyValues(1); - propertyValues[0].Name = rtl::OUString::createFromAscii( "Hidden" ); + propertyValues[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Hidden" )); propertyValues[0].Value <<= sal_False; rtl::OUString sfileUrl = convertToURL( sUrl ); printf( "try to get xDoc %s\n", rtl::OUStringToOString( sfileUrl, RTL_TEXTENCODING_UTF8 ).getStr() ); Reference< uno::XInterface > xDoc = - mxCompLoader->loadComponentFromURL( sfileUrl, rtl::OUString::createFromAscii( "_blank" ), 0, propertyValues); + mxCompLoader->loadComponentFromURL( sfileUrl, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "_blank" )), 0, propertyValues); printf( "got xDoc\n" ); OUString logFileURL = convertToURL( getLogLocation() ); @@ -160,15 +154,15 @@ mxCompLoader( _xCompLoader ), msOutDirPath( convertToURL( _outDirPath ) ) Reference< script::provider::XScript > xScript; try { - xScript = xProv->getScript( rtl::OUString::createFromAscii( "vnd.sun.star.script:VBAProject.TestMacros.Main?language=Basic&location=document" )); + xScript = xProv->getScript( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "vnd.sun.star.script:VBAProject.TestMacros.Main?language=Basic&location=document") )); } catch ( uno::Exception& e ) { try { - xScript = xProv->getScript( rtl::OUString::createFromAscii( "vnd.sun.star.script:VBAProject.testMacro.Main?language=Basic&location=document" )); + xScript = xProv->getScript( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "vnd.sun.star.script:VBAProject.testMacro.Main?language=Basic&location=document" ))); } catch ( uno::Exception& e2 ) { - xScript = xProv->getScript( rtl::OUString::createFromAscii( "vnd.sun.star.script:VBAProject.testMain.Main?language=Basic&location=document" )); + xScript = xProv->getScript( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "vnd.sun.star.script:VBAProject.testMain.Main?language=Basic&location=document" ))); } } OSL_TRACE("Got script for doc %s", rtl::OUStringToOString( sUrl, RTL_TEXTENCODING_UTF8 ).getStr() ); @@ -180,7 +174,7 @@ mxCompLoader( _xCompLoader ), msOutDirPath( convertToURL( _outDirPath ) ) xScript->invoke(aArgs, aOutArgsIndex, aOutArgs); OUString fileName = sUrl.copy ( sUrl.lastIndexOf( '/' ) ); - OUString newLocation = msOutDirPath + fileName.copy ( 0, fileName.lastIndexOf( EXTN ) ) + rtl::OUString::createFromAscii( ".log" ); + OUString newLocation = msOutDirPath + fileName.copy ( 0, fileName.lastIndexOf( EXTN ) ) + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ".log" )); try { printf("move log file\n"); @@ -240,7 +234,7 @@ mxCompLoader( _xCompLoader ), msOutDirPath( convertToURL( _outDirPath ) ) rtl::OUString sFileDirectoryURL = convertToURL( sFileDirectory ); if ( !mxSFA->isFolder( sFileDirectoryURL) ) { - throw lang::IllegalArgumentException( rtl::OUString::createFromAscii( "not a directory: ").concat( sFileDirectoryURL ), Reference<uno::XInterface>(), 1 ); + throw lang::IllegalArgumentException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "not a directory: ")).concat( sFileDirectoryURL ), Reference<uno::XInterface>(), 1 ); } // Getting all files and directories in the current directory Sequence<OUString> entries = mxSFA->getFolderContents( sFileDirectoryURL, sal_False ); @@ -298,8 +292,6 @@ int main( int argv, char** argc ) dTest->traverse( ascii( argc[ 1 ] ) ); } delete dTest; -// tryDispose( xLoader, "desktop" ); -// tryDispose( xCC, "remote context" ); } catch( uno::Exception& e ) diff --git a/sc/source/ui/vba/vbaapplication.cxx b/sc/source/ui/vba/vbaapplication.cxx index 7ed96e7f900e..fa9ae584c88e 100644 --- a/sc/source/ui/vba/vbaapplication.cxx +++ b/sc/source/ui/vba/vbaapplication.cxx @@ -49,14 +49,12 @@ #include <com/sun/star/ui/dialogs/XFilePicker2.hpp> #include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp> #include <com/sun/star/ui/dialogs/TemplateDescription.hpp> -//2009-11-06 add by limingl #include <com/sun/star/ui/dialogs/XFilterManager.hpp> #include <com/sun/star/ui/dialogs/XExecutableDialog.hpp> -//end #include<ooo/vba/XCommandBars.hpp> -#include <ooo/vba/excel/XlEnableCancelKey.hpp> //liuchen 2009-11-26 -#include <ooo/vba/excel/XlApplicationInternational.hpp> //liuchen 2009-11-26 -#include <unotools/localedatawrapper.hxx> //liuchen 2009-11-26 +#include <ooo/vba/excel/XlEnableCancelKey.hpp> +#include <ooo/vba/excel/XlApplicationInternational.hpp> +#include <unotools/localedatawrapper.hxx> #include "vbaapplication.hxx" #include "vbaworkbooks.hxx" @@ -75,12 +73,12 @@ #include <vbahelper/vbashape.hxx> #include "vbatextboxshape.hxx" #include "vbaassistant.hxx" -#include "vbafilesearch.hxx" //liuchen 2009-8-18, add the support of VBA Application.FileSearch +#include "vbafilesearch.hxx" // add the support of VBA Application.FileSearch #include "sc.hrc" #include "macromgr.hxx" -#include "global.hxx" //liuchen 2009-11-26 -#include "scmod.hxx" //liuchen 2009-11-26 -#include "docoptio.hxx" //liuchen 2009-11-26 +#include "global.hxx" +#include "scmod.hxx" +#include "docoptio.hxx" #include "appoptio.hxx" #include <osl/file.hxx> @@ -122,7 +120,7 @@ #include <basic/sbx.hxx> #include <basic/sbxobj.hxx> #include <basic/sbuno.hxx> -//limingl 2009-07-20 + #include "vbafiledialog.hxx" using namespace ::ooo::vba; using namespace ::com::sun::star; @@ -280,7 +278,7 @@ ScVbaApplication::getAssistant() throw (uno::RuntimeException) return uno::Reference< XAssistant >( new ScVbaAssistant( this, mxContext ) ); } -//liuchen 2009-8-18, add support of VBA Application.FileSearch +// add support of VBA Application.FileSearch uno::Reference< XFileSearch > SAL_CALL ScVbaApplication::getFileSearch() throw (uno::RuntimeException) { @@ -291,7 +289,6 @@ ScVbaApplication::getFileSearch() throw (uno::RuntimeException) return m_xFileSearch; } -//liuchen uno::Any SAL_CALL ScVbaApplication::getSelection() throw (uno::RuntimeException) @@ -301,7 +298,7 @@ ScVbaApplication::getSelection() throw (uno::RuntimeException) Reference< view::XSelectionSupplier > xSelSupp( xModel->getCurrentController(), UNO_QUERY_THROW ); Reference< beans::XPropertySet > xPropSet( xSelSupp, UNO_QUERY_THROW ); - OUString aPropName = OUString::createFromAscii( SC_UNO_FILTERED_RANGE_SELECTION ); + OUString aPropName( RTL_CONSTASCII_USTRINGPARAM( SC_UNO_FILTERED_RANGE_SELECTION ) ); uno::Any aOldVal = xPropSet->getPropertyValue( aPropName ); uno::Any any; any <<= sal_False; @@ -313,7 +310,7 @@ ScVbaApplication::getSelection() throw (uno::RuntimeException) if (!aSelection.is()) { throw uno::RuntimeException( - rtl::OUString::createFromAscii("failed to obtain current selection"), + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("failed to obtain current selection")), uno::Reference< uno::XInterface >() ); } @@ -338,8 +335,8 @@ ScVbaApplication::getSelection() throw (uno::RuntimeException) } return uno::makeAny( uno::Reference< msforms::XShape >(new ScVbaShape( this, mxContext, xShape, xShapes, xModel, ScVbaShape::getType( xShape ) ) ) ); } - else if( xServiceInfo->supportsService( rtl::OUString::createFromAscii("com.sun.star.sheet.SheetCellRange")) || - xServiceInfo->supportsService( rtl::OUString::createFromAscii("com.sun.star.sheet.SheetCellRanges"))) + else if( xServiceInfo->supportsService( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sheet.SheetCellRange")) ) || + xServiceInfo->supportsService( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sheet.SheetCellRanges")) ) ) { uno::Reference< table::XCellRange > xRange( aSelection, ::uno::UNO_QUERY); if ( !xRange.is() ) @@ -353,7 +350,8 @@ ScVbaApplication::getSelection() throw (uno::RuntimeException) } else { - throw uno::RuntimeException( sImplementationName + rtl::OUString::createFromAscii(" not supported"), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( sImplementationName + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( + " not supported")), uno::Reference< uno::XInterface >() ); } } @@ -364,10 +362,10 @@ ScVbaApplication::getActiveCell() throw (uno::RuntimeException ) uno::Reference< table::XCellRange > xRange( xView->getActiveSheet(), ::uno::UNO_QUERY_THROW); ScTabViewShell* pViewShell = excel::getCurrentBestViewShell(mxContext); if ( !pViewShell ) - throw uno::RuntimeException( rtl::OUString::createFromAscii("No ViewShell available"), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("No ViewShell available")), uno::Reference< uno::XInterface >() ); ScViewData* pTabView = pViewShell->GetViewData(); if ( !pTabView ) - throw uno::RuntimeException( rtl::OUString::createFromAscii("No ViewData available"), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("No ViewData available")), uno::Reference< uno::XInterface >() ); sal_Int32 nCursorX = pTabView->GetCurX(); sal_Int32 nCursorY = pTabView->GetCurY(); @@ -399,8 +397,8 @@ ScVbaApplication::Worksheets( const uno::Any& aIndex ) throw (uno::RuntimeExcept else // Fixme - check if this is reasonable/desired behavior - throw uno::RuntimeException( rtl::OUString::createFromAscii( - "No ActiveWorkBook available" ), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "No ActiveWorkBook available" )), + uno::Reference< uno::XInterface >() ); return result; } @@ -535,7 +533,7 @@ ScVbaApplication::setStatusBar( const uno::Any& _statusbar ) throw (uno::Runtime } } else - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Invalid prarameter. It should be a string or False" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Invalid prarameter. It should be a string or False" )), uno::Reference< uno::XInterface >() ); } @@ -607,7 +605,9 @@ ScVbaApplication::Names( const css::uno::Any& aIndex ) throw ( uno::RuntimeExcep { uno::Reference< frame::XModel > xModel( getCurrentDocument(), uno::UNO_QUERY_THROW ); uno::Reference< beans::XPropertySet > xPropertySet( xModel, uno::UNO_QUERY_THROW ); - uno::Reference< sheet::XNamedRanges > xNamedRanges( xPropertySet->getPropertyValue( rtl::OUString::createFromAscii("NamedRanges")) , uno::UNO_QUERY_THROW ); + uno::Reference< sheet::XNamedRanges > xNamedRanges( xPropertySet->getPropertyValue( + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "NamedRanges" )) ), uno::UNO_QUERY_THROW ); + css::uno::Reference< excel::XNames > xNames ( new ScVbaNames( this , mxContext , xNamedRanges , xModel ) ); if ( aIndex.getValueTypeClass() == uno::TypeClass_VOID ) { @@ -635,8 +635,8 @@ ScVbaApplication::getActiveSheet() throw (uno::RuntimeException) if ( !result.is() ) { // Fixme - check if this is reasonable/desired behavior - throw uno::RuntimeException( rtl::OUString::createFromAscii( - "No activeSheet available" ), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "No activeSheet available" )), + uno::Reference< uno::XInterface >() ); } return result; @@ -667,7 +667,7 @@ ScVbaApplication::GoTo( const uno::Any& Reference, const uno::Any& Scroll ) thro bScroll = aScroll; } else - throw uno::RuntimeException( rtl::OUString::createFromAscii( "sencond parameter should be boolean" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "second parameter should be boolean" )), uno::Reference< uno::XInterface >() ); } @@ -709,11 +709,11 @@ ScVbaApplication::GoTo( const uno::Any& Reference, const uno::Any& Scroll ) thro { //maybe this should be a procedure name //TODO for procedure name - //browse::XBrowseNodeFactory is a singlton. OUString::createFromAscii( "/singletons/com.sun.star.script.browse.theBrowseNodeFactory") + //browse::XBrowseNodeFactory is a singlton. OUString(RTL_CONSTASCII_USTRINGPARAM( "/singletons/com.sun.star.script.browse.theBrowseNodeFactory")) //and the createView( browse::BrowseNodeFactoryViewTypes::MACROSELECTOR ) to get a root browse::XBrowseNode. //for query XInvocation interface. //but how to directly get the XInvocation? - throw uno::RuntimeException( rtl::OUString::createFromAscii( "invalid reference for range name, it should be procedure name" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "invalid reference for range name, it should be procedure name" )), uno::Reference< uno::XInterface >() ); } return; @@ -748,7 +748,7 @@ ScVbaApplication::GoTo( const uno::Any& Reference, const uno::Any& Scroll ) thro } return; } - throw uno::RuntimeException( rtl::OUString::createFromAscii( "invalid reference or name" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "invalid reference or name" )), uno::Reference< uno::XInterface >() ); } @@ -864,7 +864,7 @@ ScVbaApplication::setVisible(sal_Bool /*bVisible*/) throw (uno::RuntimeException { } -//liuchen 2009-11-25 add the support of Excel VBA Application.Iteration +//add the support of Excel VBA Application.Iteration //The Excel Iteration option is global and unique, but in Symphony there is an Iteration property in ScModule and one in every ScDocument, //so the set method will set all the Iteration properties sal_Bool SAL_CALL @@ -886,7 +886,7 @@ ScVbaApplication::setIteration(sal_Bool bIteration) throw (uno::RuntimeException uno::Any aIteration; aIteration <<= bIteration; - OUString aPropName = OUString::createFromAscii( "IsIterationEnabled" ); + OUString aPropName(RTL_CONSTASCII_USTRINGPARAM( "IsIterationEnabled" )); uno::Reference< XCollection > xWorkbooks( new ScVbaWorkbooks( this, mxContext ) ); sal_Int32 nCount = xWorkbooks->getCount(); @@ -903,9 +903,8 @@ ScVbaApplication::setIteration(sal_Bool bIteration) throw (uno::RuntimeException xPropertySet->setPropertyValue( aPropName, aIteration ); } } -//liuchen 2009-11-25 end -//liuchen 2009-11-26 add the support of Excel VBA Application.EnableCancelKey +//add the support of Excel VBA Application.EnableCancelKey sal_Int32 SAL_CALL ScVbaApplication::getEnableCancelKey() throw (uno::RuntimeException) { @@ -916,7 +915,6 @@ void SAL_CALL ScVbaApplication::setEnableCancelKey(sal_Int32 /*lEnableCancelKey*/) throw (uno::RuntimeException) { } -//liuchen 2009-11-26 end sal_Int32 SAL_CALL ScVbaApplication::getSheetsInNewWorkbook() throw (uno::RuntimeException) { @@ -928,7 +926,8 @@ void SAL_CALL ScVbaApplication::setSheetsInNewWorkbook( sal_Int32 SheetsInNewWor { if ( SheetsInNewWorkbook < 1 || SheetsInNewWorkbook > MAXTAB ) { - DebugHelper::exception( OUString::createFromAscii("The number must be between 1 and 255"), uno::Exception(), SbERR_METHOD_FAILED, OUString() ); + DebugHelper::exception( OUString(RTL_CONSTASCII_USTRINGPARAM("The number must be between 1 and 255")), + uno::Exception(), SbERR_METHOD_FAILED, OUString() ); } else { @@ -951,7 +950,7 @@ uno::Reference< beans::XPropertySet > lcl_getPathSettingsService( const uno::Ref if ( !xPathSettings.is() ) { uno::Reference< lang::XMultiComponentFactory > xSMgr( xContext->getServiceManager(), uno::UNO_QUERY_THROW ); - xPathSettings.set( xSMgr->createInstanceWithContext(::rtl::OUString::createFromAscii("com.sun.star.util.PathSettings"), xContext), uno::UNO_QUERY_THROW ); + xPathSettings.set( xSMgr->createInstanceWithContext( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.util.PathSettings")), xContext ), uno::UNO_QUERY_THROW ); } return xPathSettings; } @@ -1173,12 +1172,12 @@ uno::Reference< excel::XRange > lclCreateVbaRange( for( ListOfScRange::const_iterator aIt = rList.begin(), aEnd = rList.end(); aIt != aEnd; ++aIt ) aCellRanges.Append( *aIt ); - if( aCellRanges.Count() == 1 ) + if( aCellRanges.size() == 1 ) { - uno::Reference< table::XCellRange > xRange( new ScCellRangeObj( pDocShell, *aCellRanges.First() ) ); + uno::Reference< table::XCellRange > xRange( new ScCellRangeObj( pDocShell, *aCellRanges.front() ) ); return new ScVbaRange( excel::getUnoSheetModuleObj( xRange ), rxContext, xRange ); } - if( aCellRanges.Count() > 1 ) + if( aCellRanges.size() > 1 ) { uno::Reference< sheet::XSheetCellRangeContainer > xRanges( new ScCellRangesObj( pDocShell, aCellRanges ) ); return new ScVbaRange( excel::getUnoSheetModuleObj( xRanges ), rxContext, xRanges ); @@ -1366,14 +1365,13 @@ ScVbaApplication::Caller( const uno::Any& /*aIndex*/ ) throw ( uno::RuntimeExcep return aRet; } -//Add by minz@cn.ibm.com. 2009-07-08. uno::Any SAL_CALL ScVbaApplication::GetOpenFilename(const uno::Any& FileFilter, const uno::Any& FilterIndex, const uno::Any& Title, const uno::Any& ButtonText, const uno::Any& MultiSelect) throw (uno::RuntimeException) { uno::Any aRet = uno::makeAny( sal_False ); try { - const ::rtl::OUString sServiceName = ::rtl::OUString::createFromAscii( "com.sun.star.ui.dialogs.FilePicker" ); + const rtl::OUString sServiceName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" )); uno::Reference< lang::XMultiServiceFactory > xMSF( comphelper::getProcessServiceFactory(), uno::UNO_QUERY ); // Set the type of File Picker Dialog: TemplateDescription::FILEOPEN_SIMPLE. uno::Sequence< uno::Any > aDialogType( 1 ); @@ -1405,7 +1403,8 @@ ScVbaApplication::GetOpenFilename(const uno::Any& FileFilter, const uno::Any& Fi } else if ( nCommaID < 0 && nIndex == 1 ) { - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Invalid FileFilter format!" ), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Invalid FileFilter format!" )), + uno::Reference< uno::XInterface >() ); } xFilterManager->appendFilter( aFilterTitleToken, aFilterToken ); if ( nFilterIndex == nIndex ) @@ -1511,7 +1510,6 @@ ScVbaApplication::GetOpenFilename(const uno::Any& FileFilter, const uno::Any& Fi return aRet; } -//liming 2009-7-17 ::com::sun::star::uno::Reference< ::ooo::vba::XFileDialog > SAL_CALL ScVbaApplication::getFileDialog() throw (::com::sun::star::uno::RuntimeException) { @@ -1521,14 +1519,13 @@ ScVbaApplication::getFileDialog() throw (::com::sun::star::uno::RuntimeException typedef std::map< ::rtl::OUString, ::rtl::OUString > FileFilterMap; -//2009-11-06 add by limingl uno::Any SAL_CALL ScVbaApplication::GetSaveAsFilename( const ::com::sun::star::uno::Any& InitialFilename, const ::com::sun::star::uno::Any& FileFilter, const ::com::sun::star::uno::Any& FilterIndex, const ::com::sun::star::uno::Any& Title, const ::com::sun::star::uno::Any& ButtonText ) throw (::com::sun::star::uno::RuntimeException) { uno::Any strRet; try { - const ::rtl::OUString sServiceName = ::rtl::OUString::createFromAscii( "com.sun.star.ui.dialogs.FilePicker" ); + const rtl::OUString sServiceName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" )); uno::Reference< lang::XMultiServiceFactory > xMSF( comphelper::getProcessServiceFactory(), uno::UNO_QUERY ); uno::Sequence< uno::Any > aDialogType( 1 ); @@ -1568,7 +1565,8 @@ ScVbaApplication::GetSaveAsFilename( const ::com::sun::star::uno::Any& InitialFi } else if ( nCommaID < 0 && nIndex == 1 ) { - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Invalid FileFilter format!" ), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Invalid FileFilter format!" )), + uno::Reference< uno::XInterface >() ); } FileFilterMap::const_iterator aIt = mFilterNameMap.find( aFilterTitleToken ); @@ -1633,7 +1631,7 @@ ScVbaApplication::GetSaveAsFilename( const ::com::sun::star::uno::Any& InitialFi if ( sFileExtension.equalsAscii("") ) { sFileExtension = sFirstFilter.equalsAscii("*.*") ? sFileExtension : sFirstFilter.copy( sFirstFilter.indexOfAsciiL("*.", 2) + 2 ); - aPathStr = sFileExtension.equalsAscii("") ? aPathStr : aPathStr + ::rtl::OUString::createFromAscii(".") + sFileExtension; + aPathStr = sFileExtension.equalsAscii("") ? aPathStr : aPathStr + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".")) + sFileExtension; } else { @@ -1646,7 +1644,7 @@ ScVbaApplication::GetSaveAsFilename( const ::com::sun::star::uno::Any& InitialFi do { ::rtl::OUString aFilterToken = sSelectedFilters.getToken( 0, ';' , nSemicolonID ); - if ( aFilterToken.trim().equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("*.") + sFileExtension) ) + if ( aFilterToken.trim().equalsIgnoreAsciiCase( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("*.")) + sFileExtension) ) { bValidFilter = sal_True; break; @@ -1660,8 +1658,10 @@ ScVbaApplication::GetSaveAsFilename( const ::com::sun::star::uno::Any& InitialFi } if ( !bValidFilter ) { - sFileExtension = sFirstFilter.equalsAscii("*.*") ? ::rtl::OUString::createFromAscii("") : sFirstFilter.copy( sFirstFilter.indexOfAsciiL("*.", 2) + 2 ); - aPathStr = sFileExtension.equalsAscii("") ? aPathStr : aPathStr + ::rtl::OUString::createFromAscii(".") + sFileExtension; + sFileExtension = sFirstFilter.equalsAscii("*.*") ? rtl::OUString() + : sFirstFilter.copy( sFirstFilter.indexOfAsciiL("*.", 2) + 2 ); + aPathStr = sFileExtension.equalsAscii("") ? aPathStr + : aPathStr + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".")) + sFileExtension; } } } @@ -1698,39 +1698,39 @@ ScVbaApplication::MenuBars( const uno::Any& aIndex ) throw (uno::RuntimeExceptio return uno::Any( xMenuBars ); } -//liuchen 2009-11-26 add the support of Application.International +//add the support of Application.International sal_Int32 SAL_CALL ConvertCountryCode(const OUString& language) { sal_Int32 nCode = 0; - if( language == OUString::createFromAscii("ar") ) nCode = 966; // Arabic - else if ( language == OUString::createFromAscii("cs") ) nCode = 42; // Czech - else if ( language == OUString::createFromAscii("da") ) nCode = 45; // Danish - else if ( language == OUString::createFromAscii("de") ) nCode = 49; // German - else if ( language == OUString::createFromAscii("en") ) nCode = 1; // English - else if ( language == OUString::createFromAscii("es") ) nCode = 34; // Spanish - else if ( language == OUString::createFromAscii("el") ) nCode = 30; // Greek - else if ( language == OUString::createFromAscii("fa") ) nCode = 98; // Persian = Farsi - else if ( language == OUString::createFromAscii("fi") ) nCode = 358; // Finnish - else if ( language == OUString::createFromAscii("fr") ) nCode = 33; // French - else if ( language == OUString::createFromAscii("he") ) nCode = 972; // Hebrew - else if ( language == OUString::createFromAscii("hi") ) nCode = 91; // Indian = Hindi - else if ( language == OUString::createFromAscii("hu") ) nCode = 36; // Hungarian - else if ( language == OUString::createFromAscii("it") ) nCode = 39; // Italian - else if ( language == OUString::createFromAscii("ja") ) nCode = 81; // Japanese - else if ( language == OUString::createFromAscii("ko") ) nCode = 82; // Korean - else if ( language == OUString::createFromAscii("nl") ) nCode = 31; // Dutch - else if ( language == OUString::createFromAscii("no") ) nCode = 47; // Norwegian - else if ( language == OUString::createFromAscii("pl") ) nCode = 48; // Polish - else if ( language == OUString::createFromAscii("pt") ) nCode = 351; // Portuguese - else if ( language == OUString::createFromAscii("ru") ) nCode = 7; // Russian - else if ( language == OUString::createFromAscii("sv") ) nCode = 46; // Swedish - else if ( language == OUString::createFromAscii("th") ) nCode = 66; // Thai - else if ( language == OUString::createFromAscii("tk") ) nCode = 90; // Turkish - else if ( language == OUString::createFromAscii("ur") ) nCode = 92; // Urdu - else if ( language == OUString::createFromAscii("vi") ) nCode = 84; // Vietnamese - else if ( language == OUString::createFromAscii("zh") ) nCode = 86; // Simplified Chinese + if( language == OUString(RTL_CONSTASCII_USTRINGPARAM("ar")) ) nCode = 966; // Arabic + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("cs")) ) nCode = 42; // Czech + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("da")) ) nCode = 45; // Danish + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("de")) ) nCode = 49; // German + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("en")) ) nCode = 1; // English + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("es")) ) nCode = 34; // Spanish + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("el")) ) nCode = 30; // Greek + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("fa")) ) nCode = 98; // Persian = Farsi + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("fi")) ) nCode = 358; // Finnish + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("fr")) ) nCode = 33; // French + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("he")) ) nCode = 972; // Hebrew + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("hi")) ) nCode = 91; // Indian = Hindi + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("hu")) ) nCode = 36; // Hungarian + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("it")) ) nCode = 39; // Italian + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("ja")) ) nCode = 81; // Japanese + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("ko")) ) nCode = 82; // Korean + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("nl")) ) nCode = 31; // Dutch + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("no")) ) nCode = 47; // Norwegian + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("pl")) ) nCode = 48; // Polish + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("pt")) ) nCode = 351; // Portuguese + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("ru")) ) nCode = 7; // Russian + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("sv")) ) nCode = 46; // Swedish + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("th")) ) nCode = 66; // Thai + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("tk")) ) nCode = 90; // Turkish + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("ur")) ) nCode = 92; // Urdu + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("vi")) ) nCode = 84; // Vietnamese + else if ( language == OUString(RTL_CONSTASCII_USTRINGPARAM("zh")) ) nCode = 86; // Simplified Chinese return nCode; } @@ -1759,9 +1759,7 @@ ScVbaApplication::International( sal_Int32 Index ) throw (uno::RuntimeException) } return aRet; } -//liuchen 2009-11-26 end -//2009-12-11 add by limingl void SAL_CALL ScVbaApplication::Undo( ) throw (::com::sun::star::uno::RuntimeException) { SfxAllItemSet reqList( SFX_APP()->GetPool() ); @@ -1773,7 +1771,6 @@ void SAL_CALL ScVbaApplication::Undo( ) throw (::com::sun::star::uno::RuntimeEx pViewShell->ExecuteUndo(rReq); } } -//end double SAL_CALL ScVbaApplication::InchesToPoints( double Inches ) throw (uno::RuntimeException) { diff --git a/sc/source/ui/vba/vbaapplication.hxx b/sc/source/ui/vba/vbaapplication.hxx index 6a5f655f0dbe..bc047b82c7b9 100644 --- a/sc/source/ui/vba/vbaapplication.hxx +++ b/sc/source/ui/vba/vbaapplication.hxx @@ -37,7 +37,6 @@ #include <vbahelper/vbaapplicationbase.hxx> #include <cppuhelper/implbase1.hxx> -//typedef InheritedHelperInterfaceImpl1< ov::excel::XApplication > ScVbaApplication_BASE; typedef cppu::ImplInheritanceHelper1< VbaApplicationBase, ov::excel::XApplication > ScVbaApplication_BASE; class ScVbaApplication : public ScVbaApplication_BASE @@ -48,7 +47,7 @@ private: sal_Bool m_bEnableEvents; rtl::OUString getOfficePath( const rtl::OUString& sPath ) throw ( css::uno::RuntimeException ); - css::uno::Reference< ov::XFileSearch > m_xFileSearch; // + css::uno::Reference< ov::XFileSearch > m_xFileSearch; protected: virtual css::uno::Reference< css::frame::XModel > getCurrentDocument() throw (css::uno::RuntimeException); @@ -91,7 +90,7 @@ public: virtual void SAL_CALL setDisplayFormulaBar( ::sal_Bool _displayformulabar ) throw ( css::uno::RuntimeException ); virtual css::uno::Reference< ov::XAssistant > SAL_CALL getAssistant() throw (css::uno::RuntimeException); - virtual css::uno::Reference< ov::XFileSearch > SAL_CALL getFileSearch() throw (css::uno::RuntimeException); //liuchen 2009-8-18 add the support of Application.FileSearch + virtual css::uno::Reference< ov::XFileSearch > SAL_CALL getFileSearch() throw (css::uno::RuntimeException); // add the support of Application.FileSearch virtual css::uno::Reference< ov::excel::XWorkbook > SAL_CALL getThisWorkbook() throw (css::uno::RuntimeException); virtual css::uno::Any SAL_CALL Workbooks( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); virtual css::uno::Any SAL_CALL Worksheets( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); @@ -108,10 +107,10 @@ public: virtual sal_Bool SAL_CALL getVisible() throw (css::uno::RuntimeException); virtual void SAL_CALL setVisible( sal_Bool bVisible ) throw (css::uno::RuntimeException); - virtual sal_Bool SAL_CALL getIteration() throw (css::uno::RuntimeException); //liuchen 2009-11-25 add the support of Iteration - virtual void SAL_CALL setIteration( sal_Bool bIteration ) throw (css::uno::RuntimeException); //liuchen 2009-11-25 add the support of Iteration - virtual sal_Int32 SAL_CALL getEnableCancelKey() throw (css::uno::RuntimeException); //liuchen 2009-11-26 add the support of EnableCancelKey - virtual void SAL_CALL setEnableCancelKey( sal_Int32 lEnableCancelKey ) throw (css::uno::RuntimeException); //liuchen 2009-11-26 add the support of EnableCancelKey + virtual sal_Bool SAL_CALL getIteration() throw (css::uno::RuntimeException); // add the support of Iteration + virtual void SAL_CALL setIteration( sal_Bool bIteration ) throw (css::uno::RuntimeException); // add the support of Iteration + virtual sal_Int32 SAL_CALL getEnableCancelKey() throw (css::uno::RuntimeException); // add the support of EnableCancelKey + virtual void SAL_CALL setEnableCancelKey( sal_Int32 lEnableCancelKey ) throw (css::uno::RuntimeException); // add the support of EnableCancelKey virtual sal_Int32 SAL_CALL getSheetsInNewWorkbook() throw (css::uno::RuntimeException); virtual void SAL_CALL setSheetsInNewWorkbook( sal_Int32 SheetsInNewWorkbook ) throw (css::script::BasicErrorException, css::uno::RuntimeException); @@ -131,9 +130,8 @@ public: virtual css::uno::Any SAL_CALL Caller( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); virtual css::uno::Any SAL_CALL MenuBars( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); virtual css::uno::Any SAL_CALL GetOpenFilename( const css::uno::Any& FileFilter, const css::uno::Any& FilterIndex, const css::uno::Any& Title, const css::uno::Any& ButtonText, const css::uno::Any& MultiSelect ) throw (css::uno::RuntimeException); - virtual ::com::sun::star::uno::Reference< ::ooo::vba::XFileDialog > SAL_CALL getFileDialog() throw (::com::sun::star::uno::RuntimeException); //liminl 2009-08-12 add - virtual css::uno::Any SAL_CALL International( sal_Int32 Index ) throw (css::uno::RuntimeException); //liuchen 2009-11-26 - //2009-12-04 add by limingl + virtual ::com::sun::star::uno::Reference< ::ooo::vba::XFileDialog > SAL_CALL getFileDialog() throw (::com::sun::star::uno::RuntimeException); + virtual css::uno::Any SAL_CALL International( sal_Int32 Index ) throw (css::uno::RuntimeException); virtual css::uno::Any SAL_CALL GetSaveAsFilename( const ::com::sun::star::uno::Any& InitialFilename, const ::com::sun::star::uno::Any& FileFilter, const ::com::sun::star::uno::Any& FilterIndex, const ::com::sun::star::uno::Any& Title, const ::com::sun::star::uno::Any& ButtonText ) throw (::com::sun::star::uno::RuntimeException); virtual void SAL_CALL Undo( ) throw (::com::sun::star::uno::RuntimeException); virtual double SAL_CALL InchesToPoints( double Inches ) throw (css::uno::RuntimeException); diff --git a/sc/source/ui/vba/vbaassistant.cxx b/sc/source/ui/vba/vbaassistant.cxx index 714bb783f3cb..126719c6fd56 100644 --- a/sc/source/ui/vba/vbaassistant.cxx +++ b/sc/source/ui/vba/vbaassistant.cxx @@ -38,12 +38,12 @@ using namespace ooo::vba; using namespace ooo::vba::office::MsoAnimationType; -ScVbaAssistant::ScVbaAssistant( const uno::Reference< XHelperInterface > xParent, const uno::Reference< uno::XComponentContext > xContext ): ScVbaAssistantImpl_BASE( xParent, xContext ) +ScVbaAssistant::ScVbaAssistant( const uno::Reference< XHelperInterface > xParent, const uno::Reference< uno::XComponentContext > xContext ): ScVbaAssistantImpl_BASE( xParent, xContext ), +m_sName( RTL_CONSTASCII_USTRINGPARAM( "Clippit" ) ) { m_bIsVisible = sal_False; m_nPointsLeft = 795; m_nPointsTop = 248; - m_sName = rtl::OUString::createFromAscii( "Clippit" ); m_nAnimation = msoAnimationIdle; } diff --git a/sc/source/ui/vba/vbaaxes.cxx b/sc/source/ui/vba/vbaaxes.cxx index eac7083a797c..9005ffdf6069 100644 --- a/sc/source/ui/vba/vbaaxes.cxx +++ b/sc/source/ui/vba/vbaaxes.cxx @@ -73,7 +73,7 @@ ScVbaAxes::createAxis( const uno::Reference< excel::XChart >& xChart, const uno: { ScVbaChart* pChart = static_cast< ScVbaChart* >( xChart.get() ); if ( !pChart ) - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Object failure, can't access chart implementation" ), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Object failure, can't access chart implementation" )), uno::Reference< uno::XInterface >() ); uno::Reference< beans::XPropertySet > xAxisPropertySet; if (((nType == xlCategory) || (nType == xlSeriesAxis) || (nType == xlValue))) @@ -169,7 +169,7 @@ ScVbaAxes::Item( const css::uno::Any& _nType, const css::uno::Any& _oAxisGroup) sal_Int32 nAxisGroup = xlPrimary; sal_Int32 nType = -1; if ( !_nType.hasValue() || ( ( _nType >>= nType ) == sal_False ) ) - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Axes::Item Failed to extract type" ), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Axes::Item Failed to extract type" )), uno::Reference< uno::XInterface >() ); if ( _oAxisGroup.hasValue() ) _oAxisGroup >>= nAxisGroup ; diff --git a/sc/source/ui/vba/vbaaxis.cxx b/sc/source/ui/vba/vbaaxis.cxx index d51534264e38..3cab8e7cea53 100644 --- a/sc/source/ui/vba/vbaaxis.cxx +++ b/sc/source/ui/vba/vbaaxis.cxx @@ -47,7 +47,7 @@ ScVbaAxis::getChartPtr() throw( uno::RuntimeException ) { ScVbaChart* pChart = static_cast< ScVbaChart* >( moChartParent.get() ); if ( !pChart ) - throw uno::RuntimeException( rtl::OUString::createFromAscii("Can't access parent chart impl"), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Can't access parent chart impl")), uno::Reference< uno::XInterface >() ); return pChart; } @@ -173,7 +173,6 @@ ScVbaAxis::getCrosses( ) throw (script::BasicErrorException, uno::RuntimeExcept { double forigin = 0.0; mxPropertySet->getPropertyValue(ORIGIN) >>= forigin; -//obsolete double fmax = AnyConverter.toDouble(mxPropertySet.getPropertyValue("Max")); double fmin = 0.0; mxPropertySet->getPropertyValue(VBA_MIN) >>= fmin; if (forigin == fmin) @@ -195,11 +194,9 @@ ScVbaAxis::setCrossesAt( double _fCrossesAt ) throw (script::BasicErrorException { try { -// if (getCrosses() == xlAxisCrossesCustom){ setMaximumScaleIsAuto( sal_False ); setMinimumScaleIsAuto( sal_False ); mxPropertySet->setPropertyValue(ORIGIN, uno::makeAny(_fCrossesAt)); -// } } catch (uno::Exception& e) { diff --git a/sc/source/ui/vba/vbachart.cxx b/sc/source/ui/vba/vbachart.cxx index 705f79ed42f9..6e1459babd1f 100644 --- a/sc/source/ui/vba/vbachart.cxx +++ b/sc/source/ui/vba/vbachart.cxx @@ -96,7 +96,7 @@ ScVbaChart::getName() throw (css::uno::RuntimeException) { xProps->getPropertyValue( CHART_NAME ) >>= sName; } - catch( uno::Exception e ) // swallow exceptions + catch( uno::Exception & ) // swallow exceptions { } return sName; @@ -1035,7 +1035,6 @@ ScVbaChart::isSeriesIndexValid(sal_Int32 _seriesindex) throw( script::BasicError try { uno::Reference< chart::XChartDataArray > xChartDataArray( mxChartDocument->getData(), uno::UNO_QUERY_THROW ); - // dblValues = xChartDataArray.getData(); //TODO I guess we have to differentiate between XlRowCol if ( !xChartDataArray.is() ) { @@ -1213,13 +1212,8 @@ ScVbaChart::getAxisPropertySet(sal_Int32 _nAxisType, sal_Int32 _nAxisGroup) thro } break; case xlSeriesAxis: -// if (_nAxisGroup == xlPrimary){ xAxisProps = xAxisZSupplier->getZAxis(); break; -// } -// else if (_nAxisGroup == xlSecondary){ - // return xTwoAxisXSupplier.getSecondaryZAxis(); - // } case xlValue: if (_nAxisGroup == xlPrimary) xAxisProps = xAxisYSupplier->getYAxis(); diff --git a/sc/source/ui/vba/vbachart.hxx b/sc/source/ui/vba/vbachart.hxx index a0cee5d04a29..581255d4c244 100644 --- a/sc/source/ui/vba/vbachart.hxx +++ b/sc/source/ui/vba/vbachart.hxx @@ -69,12 +69,11 @@ friend class ScVbaAxis; bool hasMarkers() throw ( css::script::BasicErrorException ); sal_Int32 getMarkerType(sal_Int32 _nWithMarkers, sal_Int32 _nWithoutMarkers) throw ( css::script::BasicErrorException ); void assignDiagramAttributes(); - void setDefaultSeriesDescriptionLabels(){} public: ScVbaChart( const css::uno::Reference< ov::XHelperInterface >& _xParent, const css::uno::Reference< css::uno::XComponentContext >& _xContext, const css::uno::Reference< css::lang::XComponent >& _xChartComponent, const css::uno::Reference< css::table::XTableChart >& _xTableChart ); // Non-interface - css::uno::Reference< css::beans::XPropertySet > xDiagramPropertySet() { return mxDiagramPropertySet; } + css::uno::Reference< css::beans::XPropertySet > xDiagramPropertySet() const { return mxDiagramPropertySet; } bool isSeriesIndexValid(sal_Int32 _seriesindex) throw( css::script::BasicErrorException ); bool areIndicesValid(sal_Int32 _seriesindex, sal_Int32 _valindex) throw ( css::script::BasicErrorException ); void setSeriesName(sal_Int32 _index, rtl::OUString _sname) throw ( css::script::BasicErrorException ); diff --git a/sc/source/ui/vba/vbachartobject.cxx b/sc/source/ui/vba/vbachartobject.cxx index eaa42d1cc309..f624f3f3f9e1 100644 --- a/sc/source/ui/vba/vbachartobject.cxx +++ b/sc/source/ui/vba/vbachartobject.cxx @@ -205,7 +205,7 @@ ScVbaChartObject::setTop(double _fTop) } uno::Reference< uno::XInterface > -ScVbaChartObject::getUnoObject() throw (script::BasicErrorException) +ScVbaChartObject::getUnoObject() const throw (script::BasicErrorException) { return uno::Reference< uno::XInterface >( xShape, uno::UNO_QUERY ); } diff --git a/sc/source/ui/vba/vbachartobject.hxx b/sc/source/ui/vba/vbachartobject.hxx index 73aa3d1fe119..45ba3e3ff213 100644 --- a/sc/source/ui/vba/vbachartobject.hxx +++ b/sc/source/ui/vba/vbachartobject.hxx @@ -75,7 +75,7 @@ public: void setTop( double _ftop ); // should make this part of the XHelperInterface with a default // implementation returning NULL - css::uno::Reference< css::uno::XInterface > getUnoObject() throw ( css::script::BasicErrorException ); + css::uno::Reference< css::uno::XInterface > getUnoObject() const throw ( css::script::BasicErrorException ); }; #endif //SC_VBA_WINDOW_HXX diff --git a/sc/source/ui/vba/vbachartobjects.cxx b/sc/source/ui/vba/vbachartobjects.cxx index b8706b233462..0ca3fa9112f2 100644 --- a/sc/source/ui/vba/vbachartobjects.cxx +++ b/sc/source/ui/vba/vbachartobjects.cxx @@ -83,10 +83,10 @@ ScVbaChartObjects::getChartObjectNames() throw( css::script::BasicErrorException ScCellRangesBase* pUno= dynamic_cast< ScCellRangesBase* >( xIf.get() ); ScDocShell* pDocShell = NULL; if ( !pUno ) - throw uno::RuntimeException( rtl::OUString::createFromAscii("Failed to obtain the impl class from the drawpage"), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Failed to obtain the impl class from the drawpage")), uno::Reference< uno::XInterface >() ); pDocShell = pUno->GetDocShell(); if ( !pDocShell ) - throw uno::RuntimeException( rtl::OUString::createFromAscii("Failed to obtain the docshell implclass"), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Failed to obtain the docshell implclass")), uno::Reference< uno::XInterface >() ); uno::Reference< sheet::XSpreadsheetDocument > xSpreadsheetDocument( pDocShell->GetModel(), uno::UNO_QUERY_THROW ); uno::Reference< sheet::XSpreadsheets > xSpreadsheets = xSpreadsheetDocument->getSheets(); diff --git a/sc/source/ui/vba/vbadialog.cxx b/sc/source/ui/vba/vbadialog.cxx index 7b2a0edb4103..493d6b89db2f 100644 --- a/sc/source/ui/vba/vbadialog.cxx +++ b/sc/source/ui/vba/vbadialog.cxx @@ -32,7 +32,6 @@ using namespace ::ooo::vba; using namespace ::com::sun::star; -//liuchen 2009-7-27 //solve the problem that "Application.Dialogs.Item(***).Show" and "Application.Dialogs.Count" cannot get the correct result struct DialogMatch { @@ -72,7 +71,6 @@ static const DialogMatch aDialogMatchList[] = const sal_Int32 nDialogSize = SAL_N_ELEMENTS( aDialogMatchList ) ; -//liuchen modified 2009-2-27 rtl::OUString ScVbaDialog::mapIndexToName( sal_Int32 nIndex ) { @@ -106,7 +104,6 @@ ScVbaDialog::getServiceNames() return aServiceNames; } -//liuchen add 2009-7-27 sal_Int32 ScVbaDialog::GetSupportedDialogCount() { return nDialogSize; diff --git a/sc/source/ui/vba/vbadialog.hxx b/sc/source/ui/vba/vbadialog.hxx index da733ce92247..9a336937a7c1 100644 --- a/sc/source/ui/vba/vbadialog.hxx +++ b/sc/source/ui/vba/vbadialog.hxx @@ -47,7 +47,6 @@ public: virtual rtl::OUString& getServiceImplName(); virtual css::uno::Sequence<rtl::OUString> getServiceNames(); - //liuchen 2009-7-27 static sal_Int32 GetSupportedDialogCount(); }; diff --git a/sc/source/ui/vba/vbadialogs.cxx b/sc/source/ui/vba/vbadialogs.cxx index 361d1a45329c..c64babea9069 100644 --- a/sc/source/ui/vba/vbadialogs.cxx +++ b/sc/source/ui/vba/vbadialogs.cxx @@ -65,7 +65,6 @@ ScVbaDialogs::getServiceNames() return aServiceNames; } -//liuchen 2009-7-27 ::sal_Int32 ScVbaDialogs::getCount() throw (uno::RuntimeException) { diff --git a/sc/source/ui/vba/vbadialogs.hxx b/sc/source/ui/vba/vbadialogs.hxx index ff4e1553f52f..70c818fa0031 100644 --- a/sc/source/ui/vba/vbadialogs.hxx +++ b/sc/source/ui/vba/vbadialogs.hxx @@ -45,7 +45,7 @@ public: // XCollection virtual css::uno::Any SAL_CALL Item( const css::uno::Any& Index ) throw (css::uno::RuntimeException); - virtual ::sal_Int32 SAL_CALL getCount() throw (css::uno::RuntimeException); //liuchen 2009-7-27 + virtual ::sal_Int32 SAL_CALL getCount() throw (css::uno::RuntimeException); // XDialogs virtual void SAL_CALL Dummy() throw (css::uno::RuntimeException); diff --git a/sc/source/ui/vba/vbaeventshelper.cxx b/sc/source/ui/vba/vbaeventshelper.cxx index 5e9eab58e8c4..7cbcc8592721 100644 --- a/sc/source/ui/vba/vbaeventshelper.cxx +++ b/sc/source/ui/vba/vbaeventshelper.cxx @@ -314,7 +314,7 @@ void SAL_CALL ScVbaEventsListener::changesOccurred( const util::ChangesEvent& aE } } - if( (aRangeList.Count() > 0) && mpDocShell ) + if( ( !aRangeList.empty() ) && mpDocShell ) { uno::Reference< sheet::XSheetCellRangeContainer > xRanges( new ScCellRangesObj( mpDocShell, aRangeList ) ); uno::Sequence< uno::Any > aArgs(1); @@ -680,7 +680,7 @@ bool ScVbaEventsHelper::isSelectionChanged( const uno::Sequence< uno::Any >& rAr maOldSelection = pNewCellRanges->GetRangeList(); return bChanged; } - maOldSelection.Clear(); + maOldSelection.RemoveAll(); return true; } diff --git a/sc/source/ui/vba/vbafiledialog.cxx b/sc/source/ui/vba/vbafiledialog.cxx index 482e6ab2d5e1..b08f336f2af9 100644 --- a/sc/source/ui/vba/vbafiledialog.cxx +++ b/sc/source/ui/vba/vbafiledialog.cxx @@ -90,7 +90,7 @@ ScVbaFileDialog::Show( ) throw (::com::sun::star::uno::RuntimeException) { m_sSelectedItems.realloc(0); - const ::rtl::OUString sServiceName = ::rtl::OUString::createFromAscii( "com.sun.star.ui.dialogs.FilePicker" ); + const ::rtl::OUString sServiceName(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" )); Reference< lang::XMultiServiceFactory > xMSF( comphelper::getProcessServiceFactory(), uno::UNO_QUERY ); // Set the type of File Picker Dialog: TemplateDescription::FILEOPEN_SIMPLE. diff --git a/sc/source/ui/vba/vbafilesearch.cxx b/sc/source/ui/vba/vbafilesearch.cxx index 6df035c21c2b..a6d41d03f491 100644 --- a/sc/source/ui/vba/vbafilesearch.cxx +++ b/sc/source/ui/vba/vbafilesearch.cxx @@ -56,7 +56,7 @@ static Reference< XSimpleFileAccess3 > getFileAccess( void ) if( xSMgr.is() ) { xSFI = Reference< XSimpleFileAccess3 >( xSMgr->createInstance - ( ::rtl::OUString::createFromAscii( "com.sun.star.ucb.SimpleFileAccess" ) ), UNO_QUERY ); + ( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ucb.SimpleFileAccess" )) ), UNO_QUERY ); } } return xSFI; @@ -171,7 +171,7 @@ sal_Int32 SAL_CALL ScVbaFileSearch::Execute( ) throw (css::uno::RuntimeExceptio return 0; } - if ( m_sFileName == ::rtl::OUString::createFromAscii( "" ) ) + if ( m_sFileName == ::rtl::OUString() ) { return 1; } @@ -180,15 +180,15 @@ sal_Int32 SAL_CALL ScVbaFileSearch::Execute( ) throw (css::uno::RuntimeExceptio if ( IsWildCard( aTempFileName ) ) { bool bEndWithAsterisk = aTempFileName.endsWithAsciiL("*", 1); - bool bStartWithAsterisk = (aTempFileName.indexOf(::rtl::OUString::createFromAscii("*")) == 0); + bool bStartWithAsterisk = (aTempFileName.indexOf(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("*"))) == 0); if ( !bEndWithAsterisk && !bStartWithAsterisk ) { - aTempFileName = ::rtl::OUString::createFromAscii("*") + aTempFileName + ::rtl::OUString::createFromAscii("*"); + aTempFileName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("*")); + aTempFileName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("*")); } } else { - aTempFileName = ::rtl::OUString::createFromAscii("*") + aTempFileName + ::rtl::OUString::createFromAscii("*"); + aTempFileName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("*")); + aTempFileName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("*")); } WildCard wildCard( aTempFileName ); SearchWildCard( wildCard, m_sLookIn, m_bSearchSubFolders, m_aSearchedFiles ); @@ -196,7 +196,7 @@ sal_Int32 SAL_CALL ScVbaFileSearch::Execute( ) throw (css::uno::RuntimeExceptio return m_aSearchedFiles.getLength(); } -//liuchen 2009-11-5 set ScVbaApplication::getDefaultFilePath( ) as the InitPath for FileSearch +// set ScVbaApplication::getDefaultFilePath( ) as the InitPath for FileSearch ::rtl::OUString ScVbaFileSearch::getInitPath() throw (css::uno::RuntimeException) { String aPath; @@ -211,7 +211,7 @@ sal_Int32 SAL_CALL ScVbaFileSearch::Execute( ) throw (css::uno::RuntimeExceptio void SAL_CALL ScVbaFileSearch::NewSearch( ) throw (css::uno::RuntimeException) { - m_sFileName = ::rtl::OUString::createFromAscii( "" ); + m_sFileName = ::rtl::OUString(); m_sLookIn = getInitPath(); m_bSearchSubFolders = false; m_bMatchTextExactly = false; diff --git a/sc/source/ui/vba/vbaformatconditions.hxx b/sc/source/ui/vba/vbaformatconditions.hxx index dea8f4c45a62..192f9cdc5005 100644 --- a/sc/source/ui/vba/vbaformatconditions.hxx +++ b/sc/source/ui/vba/vbaformatconditions.hxx @@ -50,7 +50,7 @@ public: rtl::OUString getA1Formula(const css::uno::Any& _aFormula) throw ( css::script::BasicErrorException ); rtl::OUString getStyleName(); void removeFormatCondition( const rtl::OUString& _sStyleName, sal_Bool _bRemoveStyle) throw ( css::script::BasicErrorException ); - css::uno::Reference< css::sheet::XSheetConditionalEntries > getSheetConditionalEntries() { return mxSheetConditionalEntries; } + css::uno::Reference< css::sheet::XSheetConditionalEntries > getSheetConditionalEntries() const { return mxSheetConditionalEntries; } // XFormatConditions virtual void SAL_CALL Delete( ) throw (css::script::BasicErrorException, css::uno::RuntimeException); virtual css::uno::Reference< ov::excel::XFormatCondition > SAL_CALL Add( ::sal_Int32 Type, const css::uno::Any& Operator, const css::uno::Any& Formula1, const css::uno::Any& Formula2 ) throw (css::script::BasicErrorException, css::uno::RuntimeException); diff --git a/sc/source/ui/vba/vbaglobals.cxx b/sc/source/ui/vba/vbaglobals.cxx index e37a2bb933c0..59b8108858d5 100644 --- a/sc/source/ui/vba/vbaglobals.cxx +++ b/sc/source/ui/vba/vbaglobals.cxx @@ -57,7 +57,7 @@ ScVbaGlobals::ScVbaGlobals( uno::Sequence< uno::Any > const& aArgs, uno::Referen OSL_TRACE("ScVbaGlobals::ScVbaGlobals()"); uno::Sequence< beans::PropertyValue > aInitArgs( 2 ); - aInitArgs[ 0 ].Name = rtl::OUString::createFromAscii("Application"); + aInitArgs[ 0 ].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Application")); aInitArgs[ 0 ].Value = uno::makeAny( getApplication() ); aInitArgs[ 1 ].Name = sDocCtxName; aInitArgs[ 1 ].Value = uno::makeAny( getXSomethingFromArgs< frame::XModel >( aArgs, 0 ) ); @@ -101,8 +101,8 @@ ScVbaGlobals::getActiveWorkbook() throw (uno::RuntimeException) return xWorkbook; } // FIXME check if this is correct/desired behavior - throw uno::RuntimeException( rtl::OUString::createFromAscii( - "No activeWorkbook available" ), Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( + "No activeWorkbook available" )), Reference< uno::XInterface >() ); } diff --git a/sc/source/ui/vba/vbahelper.cxx b/sc/source/ui/vba/vbahelper.cxx index 62d71a08f4fc..8178608eb3af 100644 --- a/sc/source/ui/vba/vbahelper.cxx +++ b/sc/source/ui/vba/vbahelper.cxx @@ -82,7 +82,7 @@ getIntrospectionAccess( const uno::Any& aObject ) throw (uno::RuntimeException) if( !xIntrospection.is() ) { uno::Reference< lang::XMultiServiceFactory > xFactory( comphelper::getProcessServiceFactory(), uno::UNO_QUERY_THROW ); - xIntrospection.set( xFactory->createInstance( rtl::OUString::createFromAscii("com.sun.star.beans.Introspection") ), uno::UNO_QUERY_THROW ); + xIntrospection.set( xFactory->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.beans.Introspection") ) ), uno::UNO_QUERY_THROW ); } return xIntrospection->inspect( aObject ); } @@ -279,7 +279,7 @@ getCurrentDocument() throw (uno::RuntimeException) // test if vba service is present uno::Reference< uno::XComponentContext > xCtx( xProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ))), uno::UNO_QUERY_THROW ); uno::Reference<lang::XMultiComponentFactory > xSMgr( xCtx->getServiceManager(), uno::UNO_QUERY_THROW ); - uno::Reference< frame::XDesktop > xDesktop (xSMgr->createInstanceWithContext(::rtl::OUString::createFromAscii("com.sun.star.frame.Desktop"), xCtx), uno::UNO_QUERY_THROW ); + uno::Reference< frame::XDesktop > xDesktop (xSMgr->createInstanceWithContext(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.Desktop")), xCtx), uno::UNO_QUERY_THROW ); xModel.set( xDesktop->getCurrentComponent(), uno::UNO_QUERY ); if ( !xModel.is() ) { @@ -531,7 +531,7 @@ rtl::OUString getAnyAsString( const uno::Any& pvargItem ) throw ( uno::RuntimeEx break; } default: - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Invalid type, can't convert" ), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Invalid type, can't convert" ) ), uno::Reference< uno::XInterface >() ); } return sString; } diff --git a/sc/source/ui/vba/vbahyperlinks.cxx b/sc/source/ui/vba/vbahyperlinks.cxx index 083607ff345d..85c6ae6c218c 100644 --- a/sc/source/ui/vba/vbahyperlinks.cxx +++ b/sc/source/ui/vba/vbahyperlinks.cxx @@ -46,11 +46,11 @@ namespace { bool lclContains( const ScRangeList& rScOuter, const uno::Reference< excel::XRange >& rxInner ) throw (uno::RuntimeException) { const ScRangeList& rScInner = ScVbaRange::getScRangeList( rxInner ); - if( (rScInner.Count() == 0) || (rScOuter.Count() == 0) ) + if( (rScInner.size() == 0) || (rScOuter.size() == 0) ) throw uno::RuntimeException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Empty range objects" ) ), uno::Reference< uno::XInterface >() ); - for( ULONG nIndex = 0, nCount = rScInner.Count(); nIndex < nCount; ++nIndex ) - if( !rScOuter.In( *rScInner.GetObject( nIndex ) ) ) + for( size_t nIndex = 0, nCount = rScInner.size(); nIndex < nCount; ++nIndex ) + if( !rScOuter.In( *rScInner[ nIndex ] ) ) return false; return true; } @@ -97,7 +97,7 @@ bool EqualAnchorFunctor::operator()( const uno::Reference< excel::XHyperlink >& uno::Reference< excel::XRange > xAnchorRange( rxHlink->getRange(), uno::UNO_QUERY_THROW ); const ScRangeList& rScRanges1 = ScVbaRange::getScRangeList( xAnchorRange ); const ScRangeList& rScRanges2 = ScVbaRange::getScRangeList( mxAnchorRange ); - return (rScRanges1.Count() == 1) && (rScRanges2.Count() == 1) && (*rScRanges1.GetObject( 0 ) == *rScRanges2.GetObject( 0 )); + return (rScRanges1.size() == 1) && (rScRanges2.size() == 1) && (*rScRanges1[ 0 ] == *rScRanges2[ 0 ]); } case office::MsoHyperlinkType::msoHyperlinkShape: case office::MsoHyperlinkType::msoHyperlinkInlineShape: diff --git a/sc/source/ui/vba/vbainterior.cxx b/sc/source/ui/vba/vbainterior.cxx index 733f394fabd4..58675d860a66 100644 --- a/sc/source/ui/vba/vbainterior.cxx +++ b/sc/source/ui/vba/vbainterior.cxx @@ -43,13 +43,13 @@ #include <map> +#include <sal/macros.h> #include <svx/xtable.hxx> #include "vbainterior.hxx" #include "vbapalette.hxx" #include "document.hxx" -#define STATIC_TABLE_SIZE( array ) (sizeof(array)/sizeof(*(array))) #define COLORMAST 0xFFFFFF const sal_uInt16 EXC_COLOR_WINDOWBACK = 65; typedef std::map< sal_Int32, sal_Int32 > PatternMap; @@ -92,7 +92,6 @@ static PatternMap aPatternMap( lcl_getPatternMap() ); ScVbaInterior::ScVbaInterior( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< beans::XPropertySet >& xProps, ScDocument* pScDoc ) throw ( lang::IllegalArgumentException) : ScVbaInterior_BASE( xParent, xContext ), m_xProps(xProps), m_pScDoc( pScDoc ) { // auto color - //m_aPattColor.SetColor( (sal_uInt32)0xFFFFFFFF ); m_aPattColor.SetColor( (sal_uInt32)0x0 ); m_nPattern = 0L; if ( !m_xProps.is() ) @@ -113,7 +112,6 @@ ScVbaInterior::setColor( const uno::Any& _color ) throw (uno::RuntimeException) if( _color >>= nColor ) { SetUserDefinedAttributes( BACKCOLOR, SetAttributeData( XLRGBToOORGB( nColor ) ) ); - //m_xProps->setPropertyValue( BACKCOLOR , XLRGBToOORGB(_color)); SetMixedColor(); } } @@ -240,7 +238,7 @@ ScVbaInterior::GetPatternColor( const Color& rPattColor, const Color& rBackColor 0x40, 0x40, 0x20, 0x60, 0x60, 0x60, 0x60, 0x48, // 08 - 15 0x50, 0x70, 0x78 // 16 - 18 }; - return ( nXclPattern < STATIC_TABLE_SIZE( pnRatioTable ) ) ? + return ( nXclPattern < SAL_N_ELEMENTS( pnRatioTable ) ) ? GetMixedColor( rPattColor, rBackColor, pnRatioTable[ nXclPattern ] ) : rPattColor; } Color @@ -253,7 +251,7 @@ ScVbaInterior::GetMixedColor( const Color& rFore, const Color& rBack, sal_uInt8 GetMixedColorComp( rFore.GetBlue(), rBack.GetBlue(), nTrans )); } sal_uInt8 -ScVbaInterior::GetMixedColorComp( sal_uInt8 nFore, sal_uInt8 nBack, sal_uInt8 nTrans ) +ScVbaInterior::GetMixedColorComp( sal_uInt8 nFore, sal_uInt8 nBack, sal_uInt8 nTrans ) const { sal_uInt32 nTemp = ((static_cast< sal_Int32 >( nBack ) - nFore) * nTrans) / 0x80 + nFore; return static_cast< sal_uInt8 >( nTemp ); @@ -261,7 +259,7 @@ ScVbaInterior::GetMixedColorComp( sal_uInt8 nFore, sal_uInt8 nBack, sal_uInt8 n uno::Reference< container::XNameContainer > ScVbaInterior::GetAttributeContainer() { - return uno::Reference < container::XNameContainer > ( m_xProps->getPropertyValue( rtl::OUString::createFromAscii( "UserDefinedAttributes" ) ), uno::UNO_QUERY_THROW ); + return uno::Reference < container::XNameContainer > ( m_xProps->getPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "UserDefinedAttributes" )) ), uno::UNO_QUERY_THROW ); } sal_Int32 ScVbaInterior::GetAttributeData( uno::Any aValue ) @@ -277,8 +275,7 @@ uno::Any ScVbaInterior::SetAttributeData( sal_Int32 nValue ) { xml::AttributeData aAttributeData; - //aAttributeData.Namespace = rtl::OUString::createFromAscii( "ooo.vba.excel.CellPatten"); - aAttributeData.Type = rtl::OUString::createFromAscii( "sal_Int32" ); + aAttributeData.Type = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "sal_Int32" )); aAttributeData.Value = rtl::OUString::valueOf( nValue ); return uno::makeAny( aAttributeData ); } @@ -301,7 +298,7 @@ ScVbaInterior::SetUserDefinedAttributes( const rtl::OUString& sName, const uno:: if( xNameContainer->hasByName( sName ) ) xNameContainer->removeByName( sName ); xNameContainer->insertByName( sName, aValue ); - m_xProps->setPropertyValue( rtl::OUString::createFromAscii( "UserDefinedAttributes" ), uno::makeAny( xNameContainer ) ); + m_xProps->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "UserDefinedAttributes" )), uno::makeAny( xNameContainer ) ); } } // OOo do not support below API @@ -323,7 +320,7 @@ ScVbaInterior::setPattern( const uno::Any& _pattern ) throw (uno::RuntimeExcepti SetMixedColor(); } else - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Invalid Pattern index" ), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Invalid Pattern index" )), uno::Reference< uno::XInterface >() ); } Color ScVbaInterior::GetBackColor() @@ -371,7 +368,7 @@ ScVbaInterior::setPatternColor( const uno::Any& _patterncolor ) throw (uno::Runt SetMixedColor(); } else - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Invalid Pattern Color" ), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Invalid Pattern Color" )), uno::Reference< uno::XInterface >() ); } uno::Any SAL_CALL ScVbaInterior::getPatternColorIndex() throw (uno::RuntimeException) @@ -394,7 +391,7 @@ ScVbaInterior::setPatternColorIndex( const uno::Any& _patterncolorindex ) throw setPatternColor( uno::makeAny( OORGBToXLRGB( nPattColor ) ) ); } else - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Invalid Pattern Color" ), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Invalid Pattern Color" )), uno::Reference< uno::XInterface >() ); } rtl::OUString& diff --git a/sc/source/ui/vba/vbainterior.hxx b/sc/source/ui/vba/vbainterior.hxx index 72b0f3748ffe..9dfb14646487 100644 --- a/sc/source/ui/vba/vbainterior.hxx +++ b/sc/source/ui/vba/vbainterior.hxx @@ -58,7 +58,7 @@ class ScVbaInterior : public ScVbaInterior_BASE protected: Color GetPatternColor( const Color& rPattColor, const Color& rBackColor, sal_uInt32 nXclPattern ); Color GetMixedColor( const Color& rFore, const Color& rBack, sal_uInt8 nTrans ); - sal_uInt8 GetMixedColorComp( sal_uInt8 nFore, sal_uInt8 nBack, sal_uInt8 nTrans ); + sal_uInt8 GetMixedColorComp( sal_uInt8 nFore, sal_uInt8 nBack, sal_uInt8 nTrans ) const; css::uno::Any GetIndexColor( const sal_Int32& nColorIndex ); sal_Int32 GetColorIndex( const sal_Int32 nColor ); css::uno::Any GetUserDefinedAttributes( const rtl::OUString& sName ); diff --git a/sc/source/ui/vba/vbamenubars.cxx b/sc/source/ui/vba/vbamenubars.cxx index 4dfaefcddda4..1c06e737bdd2 100644 --- a/sc/source/ui/vba/vbamenubars.cxx +++ b/sc/source/ui/vba/vbamenubars.cxx @@ -107,7 +107,7 @@ ScVbaMenuBars::Item( const uno::Any& aIndex, const uno::Any& /*aIndex2*/ ) throw if( nIndex == excel::XlSheetType::xlWorksheet ) { uno::Any aSource; - aSource <<= rtl::OUString::createFromAscii( "Worksheet Menu Bar" ); + aSource <<= rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Worksheet Menu Bar" )); uno::Reference< XCommandBar > xCommandBar( m_xCommandBars->Item( aSource, uno::Any() ), uno::UNO_QUERY_THROW ); uno::Reference< excel::XMenuBar > xMenuBar( new ScVbaMenuBar( this, mxContext, xCommandBar ) ); return uno::makeAny( xMenuBar ); diff --git a/sc/source/ui/vba/vbaname.cxx b/sc/source/ui/vba/vbaname.cxx index 71d42038f89b..fab19796ced9 100644 --- a/sc/source/ui/vba/vbaname.cxx +++ b/sc/source/ui/vba/vbaname.cxx @@ -70,8 +70,6 @@ ScVbaName::getWorkSheet() throw (css::uno::RuntimeException) ScVbaName::getName() throw (css::uno::RuntimeException) { String sName; - //sName += UniString( getWorkSheet()->getName()); //liuchen 2009-9-9 resolve the defect that the name get by macro code are not the same with that in UI (for example, if a name of "AA" is found in the UI "Define Names" dialog box, the result of get that name through macro code will be "Sheet1!AA") - //sName += String::CreateFromAscii("!"); sName += UniString ( mxNamedRange->getName() ); return ::rtl::OUString( sName ); } @@ -125,7 +123,7 @@ ScVbaName::getValue(const formula::FormulaGrammar::Grammar eGrammar) throw (css: } if ( sValue.indexOf('=') != 0 ) { - sValue = rtl::OUString::createFromAscii("=") + sValue; + sValue = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("=")) + sValue; } return sValue; } diff --git a/sc/source/ui/vba/vbanames.cxx b/sc/source/ui/vba/vbanames.cxx index bee4fbb58856..8379ebafcbc4 100644 --- a/sc/source/ui/vba/vbanames.cxx +++ b/sc/source/ui/vba/vbanames.cxx @@ -81,10 +81,10 @@ ScVbaNames::getScDocument() uno::Reference< frame::XModel > xModel( getModel() , uno::UNO_QUERY_THROW ); ScTabViewShell * pTabViewShell = excel::getBestViewShell( xModel ); if ( !pTabViewShell ) - throw uno::RuntimeException( rtl::OUString::createFromAscii("No ViewShell available"), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("No ViewShell available")), uno::Reference< uno::XInterface >() ); ScViewData* pViewData = pTabViewShell->GetViewData(); if ( !pViewData ) - throw uno::RuntimeException( rtl::OUString::createFromAscii("No ViewData available"), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("No ViewData available")), uno::Reference< uno::XInterface >() ); return pViewData->GetDocument(); } @@ -156,7 +156,7 @@ ScVbaNames::Add( const css::uno::Any& Name , sResult = sName.copy( nIndex ); sName = sResult ; if ( !ScRangeData::IsNameValid( sName , getScDocument() ) ) - throw uno::RuntimeException( rtl::OUString::createFromAscii("This Name is a invalid ."), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("This Name is a invalid .")), uno::Reference< uno::XInterface >() ); } } if ( RefersTo.hasValue() || RefersToR1C1.hasValue() || RefersToR1C1Local.hasValue() ) diff --git a/sc/source/ui/vba/vbaoleobject.cxx b/sc/source/ui/vba/vbaoleobject.cxx index ebf87bf5275d..05cc60de33d7 100644 --- a/sc/source/ui/vba/vbaoleobject.cxx +++ b/sc/source/ui/vba/vbaoleobject.cxx @@ -38,18 +38,6 @@ using namespace com::sun::star; using namespace ooo::vba; - -sal_Int32 pt2mm( double pt ) //1/100mm -{ - return static_cast<sal_Int32>(pt * 0.352778); -} - -double mm2pt( sal_Int32 mm ) -{ - return mm * 2.8345; -} - - ScVbaOLEObject::ScVbaOLEObject( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, css::uno::Reference< css::drawing::XControlShape > xControlShape ) : OLEObjectImpl_BASE( xParent, xContext ), m_xControlShape( xControlShape ) diff --git a/sc/source/ui/vba/vbaoutline.cxx b/sc/source/ui/vba/vbaoutline.cxx index b42d81052d15..caf506cdf73b 100644 --- a/sc/source/ui/vba/vbaoutline.cxx +++ b/sc/source/ui/vba/vbaoutline.cxx @@ -32,9 +32,9 @@ using namespace ::ooo::vba; void ScVbaOutline::ShowLevels( const uno::Any& RowLevels, const uno::Any& ColumnLevels ) throw (uno::RuntimeException) { - sal_Int16 nLevel = 0; if (mxOutline.is()) { + sal_Int16 nLevel = 0; if (RowLevels >>= nLevel) { mxOutline->showLevel(nLevel, table::TableOrientation_ROWS); diff --git a/sc/source/ui/vba/vbapagebreaks.cxx b/sc/source/ui/vba/vbapagebreaks.cxx index e6c83ed618c7..d8a574d5837d 100644 --- a/sc/source/ui/vba/vbapagebreaks.cxx +++ b/sc/source/ui/vba/vbapagebreaks.cxx @@ -117,7 +117,7 @@ sal_Int32 SAL_CALL RangePageBreaks::getCount( ) throw (uno::RuntimeException) { sal_Int32 nPos = aTablePageBreakData[i].Position; - // VBA. minz@cn.ibm.com. All page breaks before the used range should be counted. + // All page breaks before the used range should be counted. // And the page break at the end of the used range also should be counted. if( nPos <= nUsedEnd + 1 ) nCount++; @@ -154,7 +154,7 @@ sheet::TablePageBreakData RangePageBreaks::getTablePageBreakData( sal_Int32 nAPI uno::Sequence<sheet::TablePageBreakData> aTablePageBreakDataList = getAllPageBreaks(); sal_Int32 nLength = aTablePageBreakDataList.getLength(); - //VBA. minz@cn.ibm.com. No need to filter the page break. All page breaks before the used range are counted. + // No need to filter the page break. All page breaks before the used range are counted. if ( nAPIItemIndex < nLength && nAPIItemIndex>=0 ) aTablePageBreakData = aTablePageBreakDataList[nAPIItemIndex]; diff --git a/sc/source/ui/vba/vbapagesetup.cxx b/sc/source/ui/vba/vbapagesetup.cxx index c80e407fb532..f03ee70b9231 100644 --- a/sc/source/ui/vba/vbapagesetup.cxx +++ b/sc/source/ui/vba/vbapagesetup.cxx @@ -101,7 +101,7 @@ void SAL_CALL ScVbaPageSetup::setPrintArea( const rtl::OUString& rAreas ) throw { uno::Reference< sheet::XPrintAreas > xPrintAreas( mxSheet, uno::UNO_QUERY_THROW ); if( rAreas.getLength() == 0 || - rAreas.equalsIgnoreAsciiCase ( rtl::OUString::createFromAscii("FALSE") ) ) + rAreas.equalsIgnoreAsciiCase ( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FALSE")) ) ) { // print the whole sheet uno::Sequence< table::CellRangeAddress > aSeq; @@ -113,10 +113,10 @@ void SAL_CALL ScVbaPageSetup::setPrintArea( const rtl::OUString& rAreas ) throw ScRange aRange; if( getScRangeListForAddress( rAreas, excel::getDocShell( mxModel ) , aRange, aCellRanges ) ) { - uno::Sequence< table::CellRangeAddress > aSeq( aCellRanges.Count() ); - USHORT i=0; - for( ScRange* pRange = aCellRanges.First(); pRange; pRange = aCellRanges.Next() ) + uno::Sequence< table::CellRangeAddress > aSeq( aCellRanges.size() ); + for ( size_t i = 0, nRanges = aCellRanges.size(); i < nRanges; ++i ) { + ScRange* pRange = aCellRanges[ i ]; table::CellRangeAddress aRangeAddress; ScUnoConversion::FillApiRange( aRangeAddress, *pRange ); aSeq[ i++ ] = aRangeAddress; @@ -630,8 +630,6 @@ ScVbaPageSetup::getServiceNames() return aServiceNames; } -//liuchen 2009-12-11 - struct PaperSizeMap { Paper ePaper; diff --git a/sc/source/ui/vba/vbapagesetup.hxx b/sc/source/ui/vba/vbapagesetup.hxx index 57cc3dbbd153..86e92d67f748 100644 --- a/sc/source/ui/vba/vbapagesetup.hxx +++ b/sc/source/ui/vba/vbapagesetup.hxx @@ -83,8 +83,8 @@ public: virtual void SAL_CALL setCenterHorizontally( sal_Bool centerHorizontally ) throw (css::uno::RuntimeException); virtual sal_Bool SAL_CALL getPrintHeadings() throw (css::uno::RuntimeException); virtual void SAL_CALL setPrintHeadings( sal_Bool printHeadings ) throw (css::uno::RuntimeException); - virtual sal_Int32 SAL_CALL getPaperSize() throw (css::uno::RuntimeException); //liuchen 2009-12-11 - virtual void SAL_CALL setPaperSize( sal_Int32 paperSize ) throw (css::uno::RuntimeException); //liuchen 2009-12-11 + virtual sal_Int32 SAL_CALL getPaperSize() throw (css::uno::RuntimeException); + virtual void SAL_CALL setPaperSize( sal_Int32 paperSize ) throw (css::uno::RuntimeException); // XHelperInterface virtual rtl::OUString& getServiceImplName(); diff --git a/sc/source/ui/vba/vbapane.cxx b/sc/source/ui/vba/vbapane.cxx index e034ffeead41..8d606f31571b 100644 --- a/sc/source/ui/vba/vbapane.cxx +++ b/sc/source/ui/vba/vbapane.cxx @@ -57,7 +57,7 @@ ScVbaPane::setScrollColumn( sal_Int32 _scrollcolumn ) throw (uno::RuntimeExcepti { if( _scrollcolumn < 1 ) { - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Column number should not less than 1" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Column number should not less than 1" )), uno::Reference< uno::XInterface >() ); } m_xViewPane->setFirstVisibleColumn( _scrollcolumn - 1 ); @@ -74,7 +74,7 @@ ScVbaPane::setScrollRow( sal_Int32 _scrollrow ) throw (uno::RuntimeException) { if( _scrollrow < 1 ) { - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Row number should not less than 1" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Row number should not less than 1" )), uno::Reference< uno::XInterface >() ); } m_xViewPane->setFirstVisibleRow( _scrollrow - 1 ); @@ -108,7 +108,7 @@ ScVbaPane::SmallScroll( const uno::Any& Down, const uno::Any& Up, const uno::Any if( Down >>= down ) downRows += down; else - messageBuffer += rtl::OUString::createFromAscii( "Error getting parameter: Down\n" ); + messageBuffer += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Error getting parameter: Down\n" )); } if( Up.hasValue() ) { @@ -116,7 +116,7 @@ ScVbaPane::SmallScroll( const uno::Any& Down, const uno::Any& Up, const uno::Any if( Up >>= up ) downRows -= up; else - messageBuffer += rtl::OUString::createFromAscii( "Error getting parameter: Up\n" ); + messageBuffer += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Error getting parameter: Up\n" )); } if( ToRight.hasValue() ) { @@ -124,7 +124,7 @@ ScVbaPane::SmallScroll( const uno::Any& Down, const uno::Any& Up, const uno::Any if( ToRight >>= right ) rightCols += right; else - messageBuffer += rtl::OUString::createFromAscii( "Error getting parameter: ToRight\n" ); + messageBuffer += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Error getting parameter: ToRight\n" )); } if( ToLeft.hasValue() ) { @@ -132,7 +132,7 @@ ScVbaPane::SmallScroll( const uno::Any& Down, const uno::Any& Up, const uno::Any if( ToLeft >>= left ) rightCols -= left; else - messageBuffer += rtl::OUString::createFromAscii( "Error getting parameter: ToLeft\n" ); + messageBuffer += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Error getting parameter: ToLeft\n" )); } if( messageBuffer.getLength() > 0 ) throw(uno::RuntimeException( messageBuffer, uno::Reference< uno::XInterface >() ) ); @@ -163,7 +163,7 @@ ScVbaPane::LargeScroll( const uno::Any& Down, const uno::Any& Up, const uno::Any if( Down >>= down ) downPages += down; else - messageBuffer += rtl::OUString::createFromAscii( "Error getting parameter: Down\n" ); + messageBuffer += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Error getting parameter: Down\n" )); } if( Up.hasValue() ) { @@ -171,7 +171,7 @@ ScVbaPane::LargeScroll( const uno::Any& Down, const uno::Any& Up, const uno::Any if( Up >>= up ) downPages -= up; else - messageBuffer += rtl::OUString::createFromAscii( "Error getting parameter: Up\n" ); + messageBuffer += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Error getting parameter: Up\n" )); } if( ToRight.hasValue() ) { @@ -179,7 +179,7 @@ ScVbaPane::LargeScroll( const uno::Any& Down, const uno::Any& Up, const uno::Any if( ToRight >>= right ) acrossPages += right; else - messageBuffer += rtl::OUString::createFromAscii( "Error getting parameter: ToRight\n" ); + messageBuffer += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Error getting parameter: ToRight\n" )); } if( ToLeft.hasValue() ) { @@ -187,7 +187,7 @@ ScVbaPane::LargeScroll( const uno::Any& Down, const uno::Any& Up, const uno::Any if( ToLeft >>= left ) acrossPages -= left; else - messageBuffer += rtl::OUString::createFromAscii( "Error getting parameter: ToLeft\n" ); + messageBuffer += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Error getting parameter: ToLeft\n" )); } if( messageBuffer.getLength() > 0 ) throw(uno::RuntimeException( messageBuffer, uno::Reference< uno::XInterface >() ) ); diff --git a/sc/source/ui/vba/vbapane.hxx b/sc/source/ui/vba/vbapane.hxx index 27a9c3529545..1590ace30b81 100644 --- a/sc/source/ui/vba/vbapane.hxx +++ b/sc/source/ui/vba/vbapane.hxx @@ -44,7 +44,7 @@ public: const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::sheet::XViewPane > xViewPane ) throw (css::uno::RuntimeException); - css::uno::Reference< css::sheet::XViewPane > getViewPane() { return m_xViewPane; } + css::uno::Reference< css::sheet::XViewPane > getViewPane() const { return m_xViewPane; } // XPane attributes virtual sal_Int32 SAL_CALL getScrollColumn() throw (css::uno::RuntimeException); diff --git a/sc/source/ui/vba/vbapropvalue.hxx b/sc/source/ui/vba/vbapropvalue.hxx index 289870e5b520..2cbc37ecc981 100644 --- a/sc/source/ui/vba/vbapropvalue.hxx +++ b/sc/source/ui/vba/vbapropvalue.hxx @@ -52,7 +52,7 @@ public: virtual css::uno::Any SAL_CALL getValue() throw (css::uno::RuntimeException); virtual void SAL_CALL setValue( const css::uno::Any& _value ) throw (css::uno::RuntimeException); - rtl::OUString SAL_CALL getDefaultPropertyName() throw (css::uno::RuntimeException) { return ::rtl::OUString::createFromAscii("Value"); } + rtl::OUString SAL_CALL getDefaultPropertyName() throw (css::uno::RuntimeException) { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Value")); } }; #endif //SC_VBA_PROPVALULE_HXX diff --git a/sc/source/ui/vba/vbarange.cxx b/sc/source/ui/vba/vbarange.cxx index c9dce622bf36..7f67ce77fc4a 100644 --- a/sc/source/ui/vba/vbarange.cxx +++ b/sc/source/ui/vba/vbarange.cxx @@ -243,9 +243,9 @@ uno::Reference< excel::XRange > lcl_makeXRangeFromSheetCellRanges( const uno::Re aCellRanges.Append( refRange ); } // Single range - if ( aCellRanges.First() == aCellRanges.Last() ) + if ( aCellRanges.size() == 1 ) { - uno::Reference< table::XCellRange > xTmpRange( new ScCellRangeObj( pDoc, *aCellRanges.First() ) ); + uno::Reference< table::XCellRange > xTmpRange( new ScCellRangeObj( pDoc, *aCellRanges.front() ) ); xRange = new ScVbaRange( xParent, xContext, xTmpRange ); } else @@ -263,7 +263,7 @@ ScCellRangesBase* ScVbaRange::getCellRangesBase() throw ( uno::RuntimeException return ScCellRangesBase::getImplementation( mxRanges ); if( mxRange.is() ) return ScCellRangesBase::getImplementation( mxRange ); - throw uno::RuntimeException( rtl::OUString::createFromAscii("General Error creating range - Unknown" ), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("General Error creating range - Unknown" )), uno::Reference< uno::XInterface >() ); } ScCellRangeObj* ScVbaRange::getCellRangeObj() throw ( uno::RuntimeException ) @@ -407,7 +407,7 @@ ScVbaRange::getScDocShell() throw (uno::RuntimeException) return excel::GetDocShellFromRange( mxRange ); } -/*static*/ ScVbaRange* ScVbaRange::getImplementation( const uno::Reference< excel::XRange >& rxRange ) +ScVbaRange* ScVbaRange::getImplementation( const uno::Reference< excel::XRange >& rxRange ) { // FIXME: always save to use dynamic_cast? Or better to (implement and) use XTunnel? return dynamic_cast< ScVbaRange* >( rxRange.get() ); @@ -420,7 +420,7 @@ uno::Reference< frame::XModel > ScVbaRange::getUnoModel() throw (uno::RuntimeExc throw uno::RuntimeException(); } -/*static*/ uno::Reference< frame::XModel > ScVbaRange::getUnoModel( const uno::Reference< excel::XRange >& rxRange ) throw (uno::RuntimeException) +uno::Reference< frame::XModel > ScVbaRange::getUnoModel( const uno::Reference< excel::XRange >& rxRange ) throw (uno::RuntimeException) { if( ScVbaRange* pScVbaRange = getImplementation( rxRange ) ) return pScVbaRange->getUnoModel(); @@ -434,7 +434,7 @@ const ScRangeList& ScVbaRange::getScRangeList() throw (uno::RuntimeException) throw uno::RuntimeException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Cannot obtain UNO range implementation object" ) ), uno::Reference< uno::XInterface >() ); } -/*static*/ const ScRangeList& ScVbaRange::getScRangeList( const uno::Reference< excel::XRange >& rxRange ) throw (uno::RuntimeException) +const ScRangeList& ScVbaRange::getScRangeList( const uno::Reference< excel::XRange >& rxRange ) throw (uno::RuntimeException) { if( ScVbaRange* pScVbaRange = getImplementation( rxRange ) ) return pScVbaRange->getScRangeList(); @@ -510,7 +510,7 @@ public: { uno::Reference< beans::XPropertySet > xNumberProps = getNumberProps(); sal_Int16 nType = ::comphelper::getINT16( - xNumberProps->getPropertyValue( ::rtl::OUString::createFromAscii( "Type" ) ) ); + xNumberProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Type" )) ) ); return nType; } @@ -518,7 +518,7 @@ public: { lang::Locale aLocale; uno::Reference< beans::XPropertySet > xNumProps = getNumberProps(); - xNumProps->getPropertyValue( ::rtl::OUString::createFromAscii( "Locale" ) ) >>= aLocale; + xNumProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Locale" )) ) >>= aLocale; sal_Int32 nNewIndex = mxFormats->queryKey(rFormat, aLocale, false ); if ( nNewIndex == -1 ) // format not defined { @@ -532,7 +532,7 @@ public: { uno::Reference< beans::XPropertySet > xNumberProps = getNumberProps(); lang::Locale aLocale; - xNumberProps->getPropertyValue( ::rtl::OUString::createFromAscii( "Locale" ) ) >>= aLocale; + xNumberProps->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Locale" )) ) >>= aLocale; uno::Reference<util::XNumberFormatTypes> xTypes( mxFormats, uno::UNO_QUERY ); if ( xTypes.is() ) { @@ -828,7 +828,7 @@ protected: if ( pUnoRangesBase ) { ScRangeList aCellRanges = pUnoRangesBase->GetRangeList(); - ScCompiler aCompiler( m_pDoc, aCellRanges.First()->aStart ); + ScCompiler aCompiler( m_pDoc, aCellRanges.front()->aStart ); aCompiler.SetGrammar(m_eGrammar); // compile the string in the format passed in aCompiler.CompileString( sFormula ); @@ -872,7 +872,7 @@ public: pUnoRangesBase ) { ScRangeList aCellRanges = pUnoRangesBase->GetRangeList(); - ScCompiler aCompiler( m_pDoc, aCellRanges.First()->aStart ); + ScCompiler aCompiler( m_pDoc, aCellRanges.front()->aStart ); aCompiler.SetGrammar(formula::FormulaGrammar::GRAM_DEFAULT); aCompiler.CompileString( sVal ); // set desired convention @@ -919,7 +919,7 @@ public: }; -const static rtl::OUString sNA = rtl::OUString::createFromAscii("#N/A"); +const static rtl::OUString sNA(RTL_CONSTASCII_USTRINGPARAM("#N/A")); class Dim1ArrayValueSetter : public ArrayVisitor { @@ -1160,8 +1160,9 @@ bool getScRangeListForAddress( const rtl::OUString& sName, ScDocShell* pDocSh, S bool bTabFromReferrer = !( nFlags & SCA_TAB_3D ); - for ( ScRange* pRange = aCellRanges.First() ; pRange; pRange = aCellRanges.Next() ) + for ( size_t i = 0, nRanges = aCellRanges.size(); i < nRanges; ++i ) { + ScRange* pRange = aCellRanges[ i ]; pRange->aStart.SetCol( refRange.aStart.Col() + pRange->aStart.Col() ); pRange->aStart.SetRow( refRange.aStart.Row() + pRange->aStart.Row() ); pRange->aStart.SetTab( bTabFromReferrer ? refRange.aStart.Tab() : pRange->aStart.Tab() ); @@ -1183,9 +1184,9 @@ getRangeForName( const uno::Reference< uno::XComponentContext >& xContext, const if ( !getScRangeListForAddress ( sName, pDocSh, refRange, aCellRanges, eConv ) ) throw uno::RuntimeException(); // Single range - if ( aCellRanges.First() == aCellRanges.Last() ) + if ( aCellRanges.size() == 1 ) { - uno::Reference< table::XCellRange > xRange( new ScCellRangeObj( pDocSh, *aCellRanges.First() ) ); + uno::Reference< table::XCellRange > xRange( new ScCellRangeObj( pDocSh, *aCellRanges.front() ) ); uno::Reference< XHelperInterface > xFixThisParent = excel::getUnoSheetModuleObj( xRange ); return new ScVbaRange( xFixThisParent, xContext, xRange ); } @@ -1348,10 +1349,10 @@ table::CellRangeAddress getCellRangeAddressForVBARange( const uno::Any& aParam, ScRange refRange; if ( getScRangeListForAddress ( rString, pDocSh, refRange, aCellRanges, aConv ) ) { - if ( aCellRanges.First() == aCellRanges.Last() ) + if ( aCellRanges.size() == 1 ) { table::CellRangeAddress aRangeAddress; - ScUnoConversion::FillApiRange( aRangeAddress, *aCellRanges.First() ); + ScUnoConversion::FillApiRange( aRangeAddress, *aCellRanges.front() ); return aRangeAddress; } } @@ -1482,10 +1483,10 @@ uno::Any SAL_CALL ScVbaRange::getName() throw (uno::RuntimeException) uno::Reference< frame::XModel > xModel = pDocShell ? pDocShell->GetModel() : NULL; if ( !xModel.is() ) { - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Invalid document" ), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Invalid document" )), uno::Reference< uno::XInterface >() ); } uno::Reference< beans::XPropertySet > xPropertySet( xModel, uno::UNO_QUERY_THROW ); - uno::Reference< sheet::XNamedRanges > xNamedRanges( xPropertySet->getPropertyValue( rtl::OUString::createFromAscii("NamedRanges")) , uno::UNO_QUERY_THROW ); + uno::Reference< sheet::XNamedRanges > xNamedRanges( xPropertySet->getPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("NamedRanges"))) , uno::UNO_QUERY_THROW ); uno::Reference< excel::XNames > xNames( new ScVbaNames( uno::Reference< XHelperInterface >(), mxContext , xNamedRanges , xModel ) ); sal_Int32 nCount = xNames->getCount(); @@ -1824,14 +1825,15 @@ ScVbaRange::HasFormula() throw (uno::RuntimeException) uno::Reference<uno::XInterface> xRanges( pThisRanges->queryFormulaCells( ( sheet::FormulaResult::ERROR | sheet::FormulaResult::VALUE | sheet::FormulaResult::STRING ) ), uno::UNO_QUERY_THROW ); ScCellRangesBase* pFormulaRanges = dynamic_cast< ScCellRangesBase * > ( xRanges.get() ); // check if there are no formula cell, return false - if ( pFormulaRanges->GetRangeList().Count() == 0 ) + if ( pFormulaRanges->GetRangeList().empty() ) return uno::makeAny(sal_False); // chech if there are holes (where some cells are not formulas) // or returned range is not equal to this range - if ( ( pFormulaRanges->GetRangeList().Count() > 1 ) - || ( pFormulaRanges->GetRangeList().GetObject(0)->aStart != pThisRanges->GetRangeList().GetObject(0)->aStart ) - || ( pFormulaRanges->GetRangeList().GetObject(0)->aEnd != pThisRanges->GetRangeList().GetObject(0)->aEnd ) ) + if ( ( pFormulaRanges->GetRangeList().size() > 1 ) + || ( pFormulaRanges->GetRangeList().front()->aStart != pThisRanges->GetRangeList().front()->aStart ) + || ( pFormulaRanges->GetRangeList().front()->aEnd != pThisRanges->GetRangeList().front()->aEnd ) + ) return aNULL(); // should return aNULL; } return uno::makeAny( sal_True ); @@ -1916,8 +1918,9 @@ ScVbaRange::Offset( const ::uno::Any &nRowOff, const uno::Any &nColOff ) throw ( ScRangeList aCellRanges = pUnoRangesBase->GetRangeList(); - for ( ScRange* pRange = aCellRanges.First() ; pRange; pRange = aCellRanges.Next() ) + for ( size_t i = 0, nRanges = aCellRanges.size(); i < nRanges; ++i ) { + ScRange* pRange = aCellRanges[ i ]; if ( bIsColumnOffset ) { pRange->aStart.SetCol( pRange->aStart.Col() + nColOffset ); @@ -1930,13 +1933,13 @@ ScVbaRange::Offset( const ::uno::Any &nRowOff, const uno::Any &nColOff ) throw ( } } - if ( aCellRanges.Count() > 1 ) // Multi-Area + if ( aCellRanges.size() > 1 ) // Multi-Area { uno::Reference< sheet::XSheetCellRangeContainer > xRanges( new ScCellRangesObj( pUnoRangesBase->GetDocShell(), aCellRanges ) ); return new ScVbaRange( mxParent, mxContext, xRanges ); } // normal range - uno::Reference< table::XCellRange > xRange( new ScCellRangeObj( pUnoRangesBase->GetDocShell(), *aCellRanges.First() ) ); + uno::Reference< table::XCellRange > xRange( new ScCellRangeObj( pUnoRangesBase->GetDocShell(), *aCellRanges.front() ) ); return new ScVbaRange( mxParent, mxContext, xRange ); } @@ -1998,7 +2001,6 @@ ScVbaRange::getFormulaArray() throw (uno::RuntimeException) uno::Reference< script::XTypeConverter > xConverter = getTypeConverter( mxContext ); uno::Any aMatrix; - //VBA, minz@cn.ibm.com uno::Sequence< uno::Sequence<rtl::OUString> > aFmArray = xCellRangeFormula->getFormulaArray(); if( aFmArray.getLength() ) { @@ -2375,31 +2377,27 @@ ScVbaRange::Activate() throw (uno::RuntimeException) uno::Reference< excel::XRange > ScVbaRange::Rows(const uno::Any& aIndex ) throw (uno::RuntimeException) { - SCROW nStartRow = 0; - SCROW nEndRow = 0; - - sal_Int32 nValue = 0; rtl::OUString sAddress; if ( aIndex.hasValue() ) { + sal_Int32 nValue = 0; ScCellRangesBase* pUnoRangesBase = getCellRangesBase(); ScRangeList aCellRanges = pUnoRangesBase->GetRangeList(); - ScRange aRange = *aCellRanges.First(); + ScRange aRange = *aCellRanges.front(); if( aIndex >>= nValue ) { aRange.aStart.SetRow( aRange.aStart.Row() + --nValue ); aRange.aEnd.SetRow( aRange.aStart.Row() ); } - else if ( aIndex >>= sAddress ) { ScAddress::Details dDetails( formula::FormulaGrammar::CONV_XL_A1, 0, 0 ); ScRange tmpRange; tmpRange.ParseRows( sAddress, excel::GetDocumentFromRange( mxRange ), dDetails ); - nStartRow = tmpRange.aStart.Row(); - nEndRow = tmpRange.aEnd.Row(); + SCROW nStartRow = tmpRange.aStart.Row(); + SCROW nEndRow = tmpRange.aEnd.Row(); aRange.aStart.SetRow( aRange.aStart.Row() + nStartRow ); aRange.aEnd.SetRow( aRange.aStart.Row() + ( nEndRow - nStartRow )); @@ -2408,7 +2406,7 @@ ScVbaRange::Rows(const uno::Any& aIndex ) throw (uno::RuntimeException) throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Illegal param" ) ), uno::Reference< uno::XInterface >() ); if ( aRange.aStart.Row() < 0 || aRange.aEnd.Row() < 0 ) - throw uno::RuntimeException( rtl::OUString::createFromAscii("Internal failure, illegal param"), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Internal failure, illegal param")), uno::Reference< uno::XInterface >() ); // return a normal range ( even for multi-selection uno::Reference< table::XCellRange > xRange( new ScCellRangeObj( pUnoRangesBase->GetDocShell(), aRange ) ); return new ScVbaRange( mxParent, mxContext, xRange, true ); @@ -2422,18 +2420,15 @@ ScVbaRange::Rows(const uno::Any& aIndex ) throw (uno::RuntimeException) uno::Reference< excel::XRange > ScVbaRange::Columns(const uno::Any& aIndex ) throw (uno::RuntimeException) { - SCCOL nStartCol = 0; - SCCOL nEndCol = 0; - - sal_Int32 nValue = 0; rtl::OUString sAddress; ScCellRangesBase* pUnoRangesBase = getCellRangesBase(); ScRangeList aCellRanges = pUnoRangesBase->GetRangeList(); - ScRange aRange = *aCellRanges.First(); + ScRange aRange = *aCellRanges.front(); if ( aIndex.hasValue() ) { + sal_Int32 nValue = 0; if ( aIndex >>= nValue ) { aRange.aStart.SetCol( aRange.aStart.Col() + static_cast< SCCOL > ( --nValue ) ); @@ -2445,8 +2440,8 @@ ScVbaRange::Columns(const uno::Any& aIndex ) throw (uno::RuntimeException) ScAddress::Details dDetails( formula::FormulaGrammar::CONV_XL_A1, 0, 0 ); ScRange tmpRange; tmpRange.ParseCols( sAddress, excel::GetDocumentFromRange( mxRange ), dDetails ); - nStartCol = tmpRange.aStart.Col(); - nEndCol = tmpRange.aEnd.Col(); + SCCOL nStartCol = tmpRange.aStart.Col(); + SCCOL nEndCol = tmpRange.aEnd.Col(); aRange.aStart.SetCol( aRange.aStart.Col() + nStartCol ); aRange.aEnd.SetCol( aRange.aStart.Col() + ( nEndCol - nStartCol )); @@ -2455,7 +2450,7 @@ ScVbaRange::Columns(const uno::Any& aIndex ) throw (uno::RuntimeException) throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Illegal param" ) ), uno::Reference< uno::XInterface >() ); if ( aRange.aStart.Col() < 0 || aRange.aEnd.Col() < 0 ) - throw uno::RuntimeException( rtl::OUString::createFromAscii("Internal failure, illegal param"), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Internal failure, illegal param")), uno::Reference< uno::XInterface >() ); } // Columns() - no params uno::Reference< table::XCellRange > xRange( new ScCellRangeObj( pUnoRangesBase->GetDocShell(), aRange ) ); @@ -2573,7 +2568,6 @@ ScVbaRange::Cut(const ::uno::Any& Destination) throw (uno::RuntimeException) uno::Reference< sheet::XCellRangeAddressable > xSource( mxRange, uno::UNO_QUERY); xMover->moveRange( xDestination->getCellAddress(), xSource->getRangeAddress() ); } - //VBA, minz@cn.ibm.com. else { uno::Reference< frame::XModel > xModel = excel::GetModelFromRange( mxRange ); Select(); @@ -2826,7 +2820,7 @@ uno::Any SAL_CALL ScVbaRange::getCellRange( ) throw (uno::RuntimeException) return aAny; } -/*static*/ uno::Any ScVbaRange::getCellRange( const uno::Reference< excel::XRange >& rxRange ) throw (uno::RuntimeException) +uno::Any ScVbaRange::getCellRange( const uno::Reference< excel::XRange >& rxRange ) throw (uno::RuntimeException) { if( ScVbaRange* pVbaRange = getImplementation( rxRange ) ) return pVbaRange->getCellRange(); @@ -2924,8 +2918,9 @@ ScVbaRange::getEntireColumnOrRow( bool bColumn ) throw (uno::RuntimeException) // copy the range list ScRangeList aCellRanges = pUnoRangesBase->GetRangeList(); - for ( ScRange* pRange = aCellRanges.First() ; pRange; pRange = aCellRanges.Next() ) + for ( size_t i = 0, nRanges = aCellRanges.size(); i < nRanges; ++i ) { + ScRange* pRange = aCellRanges[ i ]; if ( bColumn ) { pRange->aStart.SetRow( 0 ); @@ -2937,13 +2932,13 @@ ScVbaRange::getEntireColumnOrRow( bool bColumn ) throw (uno::RuntimeException) pRange->aEnd.SetCol( MAXCOL ); } } - if ( aCellRanges.Count() > 1 ) // Multi-Area + if ( aCellRanges.size() > 1 ) // Multi-Area { uno::Reference< sheet::XSheetCellRangeContainer > xRanges( new ScCellRangesObj( pUnoRangesBase->GetDocShell(), aCellRanges ) ); return new ScVbaRange( mxParent, mxContext, xRanges, !bColumn, bColumn ); } - uno::Reference< table::XCellRange > xRange( new ScCellRangeObj( pUnoRangesBase->GetDocShell(), *aCellRanges.First() ) ); + uno::Reference< table::XCellRange > xRange( new ScCellRangeObj( pUnoRangesBase->GetDocShell(), *aCellRanges.front() ) ); return new ScVbaRange( mxParent, mxContext, xRange, !bColumn, bColumn ); } @@ -3071,7 +3066,7 @@ ScVbaRange::Replace( const ::rtl::OUString& What, const ::rtl::OUString& Replace } // sanity check required params - if ( !What.getLength() /*|| !Replacement.getLength()*/ ) + if ( !What.getLength() ) throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Range::Replace, missing params" )) , uno::Reference< uno::XInterface >() ); rtl::OUString sWhat = VBAToRegexp( What); // #TODO #FIXME SearchFormat & ReplacesFormat are not processed @@ -3142,8 +3137,8 @@ ScVbaRange::Replace( const ::rtl::OUString& What, const ::rtl::OUString& Replace if ( xIndexAccess.is() && xIndexAccess->getCount() > 0 ) { // Fires the range change event. - ScCellRangesBase* pScCellRangesBase = ScCellRangesBase::getImplementation( xIndexAccess ); //liuchen 2010-01-05 - lcl_NotifyRangeChanges( getScDocShell()->GetModel(), pScCellRangesBase ); //liuchen 2010-01-05 the original convert method will fail in SUSE + ScCellRangesBase* pScCellRangesBase = ScCellRangesBase::getImplementation( xIndexAccess ); + lcl_NotifyRangeChanges( getScDocShell()->GetModel(), pScCellRangesBase ); // the original convert method will fail in SUSE } } return sal_True; // always @@ -3224,7 +3219,7 @@ ScVbaRange::Find( const uno::Any& What, const uno::Any& After, const uno::Any& L throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Range::Replace, illegal value for LookIn." )) , uno::Reference< uno::XInterface >() ); } newOptions.SetCellType( nSearchType ); - xDescriptor->setPropertyValue( rtl::OUString::createFromAscii( "SearchType" ), uno::makeAny( nSearchType ) ); + xDescriptor->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "SearchType" )), uno::makeAny( nSearchType ) ); } } @@ -3273,7 +3268,7 @@ ScVbaRange::Find( const uno::Any& What, const uno::Any& After, const uno::Any& L else throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Range::Replace, illegal value for SearchDirection" )) , uno::Reference< uno::XInterface >() ); newOptions.SetBackward( bSearchBackwards ); - xDescriptor->setPropertyValue( rtl::OUString::createFromAscii( "SearchBackwards" ), uno::makeAny( bSearchBackwards ) ); + xDescriptor->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "SearchBackwards" )), uno::makeAny( bSearchBackwards ) ); } } @@ -3425,15 +3420,6 @@ ScVbaRange::Sort( const uno::Any& Key1, const uno::Any& Order1, const uno::Any& // 2) #TODO #FIXME need to refactor this ( below ) into a IsSingleCell() method uno::Reference< table::XColumnRowRange > xColumnRowRange(mxRange, uno::UNO_QUERY_THROW ); - // 'Fraid I don't remember what I was trying to achieve here ??? -/* - if ( isSingleCellRange() ) - { - uno::Reference< XRange > xCurrent = CurrentRegion(); - xCurrent->Sort( Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3 ); - return; - } -*/ // set up defaults sal_Int16 nOrder1 = aSortParam.bAscending[0] ? excel::XlSortOrder::xlAscending : excel::XlSortOrder::xlDescending; @@ -4499,14 +4485,10 @@ ScVbaRange::AutoFilter( const uno::Any& Field, const uno::Any& Criteria1, const sal_Int32 nOperator = excel::XlAutoFilterOperator::xlAnd; sal_Bool bVisible = sal_True; - bool bChangeDropDown = false; VisibleDropDown >>= bVisible; - if ( bVisible == bHasAuto ) // dropdown is displayed/notdisplayed as - // required + if ( bVisible == bHasAuto ) // dropdown is displayed/notdisplayed as required bVisible = sal_False; - else - bChangeDropDown = true; sheet::FilterConnection nConn = sheet::FilterConnection_AND; double nCriteria1 = 0; @@ -4658,7 +4640,6 @@ ScVbaRange::AutoFilter( const uno::Any& Field, const uno::Any& Criteria1, const // this is just to toggle autofilter on and off ( not to be confused with // a VisibleDropDown option combined with a field, in that case just the // button should be disabled ) - currently we don't support that - bChangeDropDown = true; uno::Reference< beans::XPropertySet > xDBRangeProps( xDataBaseRange, uno::UNO_QUERY_THROW ); if ( bHasAuto ) { @@ -4789,7 +4770,7 @@ ScVbaRange::TextToColumns( const css::uno::Any& Destination, const css::uno::Any if( Destination.hasValue() ) { if( !( Destination >>= xRange ) ) - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Destination parameter should be a range" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Destination parameter should be a range" )), uno::Reference< uno::XInterface >() ); OSL_TRACE("set range\n"); } @@ -4804,7 +4785,7 @@ ScVbaRange::TextToColumns( const css::uno::Any& Destination, const css::uno::Any if ( DataType.hasValue() ) { if( !( DataType >>= xlTextParsingType ) ) - throw uno::RuntimeException( rtl::OUString::createFromAscii( "DataType parameter should be a short" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "DataType parameter should be a short" )), uno::Reference< uno::XInterface >() ); OSL_TRACE("set Datatype\n" ); } @@ -4814,7 +4795,7 @@ ScVbaRange::TextToColumns( const css::uno::Any& Destination, const css::uno::Any if( TextQualifier.hasValue() ) { if( !( TextQualifier >>= xlTextQualifier )) - throw uno::RuntimeException( rtl::OUString::createFromAscii( "TextQualifier parameter should be a short" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "TextQualifier parameter should be a short" )), uno::Reference< uno::XInterface >() ); OSL_TRACE("set TextQualifier\n"); } @@ -4823,7 +4804,7 @@ ScVbaRange::TextToColumns( const css::uno::Any& Destination, const css::uno::Any if( ConsecutiveDelimiter.hasValue() ) { if( !( ConsecutiveDelimiter >>= bConsecutiveDelimiter ) ) - throw uno::RuntimeException( rtl::OUString::createFromAscii( "ConsecutiveDelimiter parameter should be a boolean" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ConsecutiveDelimiter parameter should be a boolean" )), uno::Reference< uno::XInterface >() ); OSL_TRACE("set ConsecutiveDelimiter\n"); } @@ -4832,7 +4813,7 @@ ScVbaRange::TextToColumns( const css::uno::Any& Destination, const css::uno::Any if( Tab.hasValue() && bDilimited ) { if( !( Tab >>= bTab ) ) - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Tab parameter should be a boolean" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Tab parameter should be a boolean" )), uno::Reference< uno::XInterface >() ); OSL_TRACE("set Tab\n"); } @@ -4841,7 +4822,7 @@ ScVbaRange::TextToColumns( const css::uno::Any& Destination, const css::uno::Any if( Semicolon.hasValue() && bDilimited ) { if( !( Semicolon >>= bSemicolon ) ) - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Semicolon parameter should be a boolean" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Semicolon parameter should be a boolean" )), uno::Reference< uno::XInterface >() ); OSL_TRACE("set Semicolon\n"); } @@ -4849,7 +4830,7 @@ ScVbaRange::TextToColumns( const css::uno::Any& Destination, const css::uno::Any if( Comma.hasValue() && bDilimited ) { if( !( Comma >>= bComma ) ) - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Comma parameter should be a boolean" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Comma parameter should be a boolean" )), uno::Reference< uno::XInterface >() ); OSL_TRACE("set Comma\n"); } @@ -4857,7 +4838,7 @@ ScVbaRange::TextToColumns( const css::uno::Any& Destination, const css::uno::Any if( Space.hasValue() && bDilimited ) { if( !( Space >>= bSpace ) ) - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Space parameter should be a boolean" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Space parameter should be a boolean" )), uno::Reference< uno::XInterface >() ); OSL_TRACE("set Space\n"); } @@ -4869,12 +4850,12 @@ ScVbaRange::TextToColumns( const css::uno::Any& Destination, const css::uno::Any { if( OtherChar.hasValue() ) if( !( OtherChar >>= sOtherChar ) ) - throw uno::RuntimeException( rtl::OUString::createFromAscii( "OtherChar parameter should be a String" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "OtherChar parameter should be a String" )), uno::Reference< uno::XInterface >() ); OSL_TRACE("set OtherChar\n" ); } else if( bOther ) - throw uno::RuntimeException( rtl::OUString::createFromAscii( "Other parameter should be a True" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Other parameter should be a True" )), uno::Reference< uno::XInterface >() ); } // FieldInfo, Optional Variant. An array containing parse information for the individual columns of data. @@ -4889,7 +4870,7 @@ ScVbaRange::TextToColumns( const css::uno::Any& Destination, const css::uno::Any if( DecimalSeparator.hasValue() ) { if( !( DecimalSeparator >>= sDecimalSeparator ) ) - throw uno::RuntimeException( rtl::OUString::createFromAscii( "DecimalSeparator parameter should be a String" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "DecimalSeparator parameter should be a String" )), uno::Reference< uno::XInterface >() ); OSL_TRACE("set DecimalSeparator\n" ); } @@ -4897,7 +4878,7 @@ ScVbaRange::TextToColumns( const css::uno::Any& Destination, const css::uno::Any if( ThousandsSeparator.hasValue() ) { if( !( ThousandsSeparator >>= sThousandsSeparator ) ) - throw uno::RuntimeException( rtl::OUString::createFromAscii( "ThousandsSeparator parameter should be a String" ), + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ThousandsSeparator parameter should be a String" )), uno::Reference< uno::XInterface >() ); OSL_TRACE("set ThousandsSpeparator\n" ); } @@ -4912,12 +4893,12 @@ ScVbaRange::TextToColumns( const css::uno::Any& Destination, const css::uno::Any } // Parse the value of parameter FieldInfo. - USHORT nCount = 0, nRealCount = 0; + USHORT nRealCount = 0; xub_StrLen* pColumns = NULL; BYTE* pFormats = NULL; if ( sFieldInfo.getLength() > 0 ) { - nCount = sFieldInfo.getLength(); + USHORT nCount = sFieldInfo.getLength(); pColumns = new xub_StrLen[nCount]; pFormats = new BYTE[nCount]; USHORT nFormat = 1; @@ -4948,11 +4929,11 @@ ScVbaRange::TextToColumns( const css::uno::Any& Destination, const css::uno::Any // Get field delimiters. String rFieldDelimiters; - if ( bTab ) rFieldDelimiters += '\t'; - if ( bSemicolon ) rFieldDelimiters += ';'; - if ( bComma ) rFieldDelimiters += ','; - if ( bSpace ) rFieldDelimiters += ' '; - if ( bOther ) rFieldDelimiters += *sOtherChar.getStr(); + if ( bTab ) rFieldDelimiters += '\t'; + if ( bSemicolon ) rFieldDelimiters += ';'; + if ( bComma ) rFieldDelimiters += ','; + if ( bSpace ) rFieldDelimiters += ' '; + if ( bOther ) rFieldDelimiters += *sOtherChar.getStr(); // Get the text in current range to SvMemoryStream. ScRange aSrcScRange; @@ -4960,9 +4941,9 @@ ScVbaRange::TextToColumns( const css::uno::Any& Destination, const css::uno::Any if ( pSrcCellRangesBase ) { ScRangeList aRangeList = pSrcCellRangesBase->GetRangeList(); - if ( aRangeList.First() ) + if ( !aRangeList.empty() ) { - aSrcScRange = *aRangeList.First(); + aSrcScRange = *aRangeList.front(); } } ScImportExport aExport( getScDocument(), aSrcScRange ); @@ -5201,24 +5182,17 @@ void ScVbaRange::setShowDetail(const uno::Any& aShowDetail) throw ( css::uno::Ru } } -//09-09-16 add by limingl ::com::sun::star::uno::Reference< ::ooo::vba::excel::XQueryTable > SAL_CALL ScVbaRange::getQueryTable() throw (::com::sun::star::uno::RuntimeException) { - /* - if (m_pQueryTable == NULL) - { - m_pQueryTable = new ScVbaQueryTable(mxParent ,mxContext, getScDocument(), this); //add by limingl - } - //*/ if (!m_xQueryTable.is()) { - m_xQueryTable = new ScVbaQueryTable(mxParent ,mxContext, getScDocument(), this); //add by limingl + m_xQueryTable = new ScVbaQueryTable(mxParent ,mxContext, getScDocument(), this); } return m_xQueryTable; } -//end add + uno::Reference< excel::XRange > SAL_CALL ScVbaRange::MergeArea() throw (script::BasicErrorException, uno::RuntimeException) { @@ -5248,7 +5222,6 @@ ScVbaRange::MergeArea() throw (script::BasicErrorException, uno::RuntimeExceptio return new ScVbaRange( mxParent, mxContext, mxRange ); } -//2008-08-25 add by limingl //The recordset's member: Recordset.Fields.Item will get a Field obj. //Field.value is the column value. ::sal_Int32 SAL_CALL @@ -5271,8 +5244,7 @@ throw (::com::sun::star::script::BasicErrorException, ::com::sun::star::uno::Run sal_Int32 nCol; sal_Int32 nMaxRows = 0; sal_Int32 nMaxColumns = 0; - sal_Bool bEof; -// sal_Bool bColName = sal_True; + sal_Bool bEof = sal_False; long lColCnt = 0; if (MaxColumns.hasValue()) { @@ -5289,9 +5261,9 @@ throw (::com::sun::star::script::BasicErrorException, ::com::sun::star::uno::Run Data >>= xIntRes; uno::Reference< script::XInvocation > xInvRes(xIntRes, uno::UNO_QUERY_THROW); - rtl::OUString oMoveNext = rtl::OUString::createFromAscii("MoveNext") ; - rtl::OUString oEof = rtl::OUString::createFromAscii("EOF") ; - rtl::OUString oFields = rtl::OUString::createFromAscii("Fields") ; + rtl::OUString oMoveNext(RTL_CONSTASCII_USTRINGPARAM("MoveNext")) ; + rtl::OUString oEof(RTL_CONSTASCII_USTRINGPARAM("EOF")) ; + rtl::OUString oFields(RTL_CONSTASCII_USTRINGPARAM("Fields")) ; if( !xInvRes->hasMethod(oMoveNext)) { @@ -5302,7 +5274,7 @@ throw (::com::sun::star::script::BasicErrorException, ::com::sun::star::uno::Run aRet = xInvRes->getValue(oFields); aRet >>= xIntFields; uno::Reference< script::XInvocation > xInvFields(xIntFields, uno::UNO_QUERY_THROW); - aRet = xInvFields->getValue( rtl::OUString::createFromAscii("Count")) ; + aRet = xInvFields->getValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Count"))) ; aRet >>= lColCnt; //Set the assign column number @@ -5330,12 +5302,12 @@ throw (::com::sun::star::script::BasicErrorException, ::com::sun::star::uno::Run nCol = l; aPar <<= nCol; //get every field - aRet = xInvFields->invoke( rtl::OUString::createFromAscii("Item"), uno::Sequence< uno::Any >(&aPar,1) , aOutParamIndex,aOutParam); + aRet = xInvFields->invoke( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Item")), uno::Sequence< uno::Any >(&aPar,1) , aOutParamIndex,aOutParam); aRet >>= xIntFld; uno::Reference< script::XInvocation > xInvFld(xIntFld, uno::UNO_QUERY_THROW); //Get the Field obj //set the field value - aRet = xInvFld->getValue( rtl::OUString::createFromAscii("Value") ); + aRet = xInvFld->getValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Value")) ); uno::Reference< excel::XRange > xRngToFill = xRngPos->Offset(aCrrRow,aCrrCol ); xRngToFill->setValue(aRet); @@ -5359,7 +5331,7 @@ throw (::com::sun::star::script::BasicErrorException, ::com::sun::star::uno::Run return 0; } -//end add + void SAL_CALL ScVbaRange::PrintOut( const uno::Any& From, const uno::Any& To, const uno::Any& Copies, const uno::Any& Preview, const uno::Any& ActivePrinter, const uno::Any& PrintToFile, const uno::Any& Collate, const uno::Any& PrToFileName ) throw (uno::RuntimeException) { @@ -5410,11 +5382,6 @@ ScVbaRange::AutoFill( const uno::Reference< excel::XRange >& Destination, const ScUnoConversion::FillScRange( destRange, destAddress ); ScUnoConversion::FillScRange( sourceRange, thisAddress ); - - // source is valid -// if ( !sourceRange.In( destRange ) ) -// throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "source not in destination" ) ), uno::Reference< uno::XInterface >() ); - FillDir eDir = FILL_TO_BOTTOM; double fStep = 1.0; @@ -5423,10 +5390,10 @@ ScVbaRange::AutoFill( const uno::Reference< excel::XRange >& Destination, const // default to include the number of Rows in the source range; SCCOLROW nSourceCount = ( sourceRange.aEnd.Row() - sourceRange.aStart.Row() ) + 1; - SCCOLROW nCount = 0; if ( sourceRange != destRange ) { + SCCOLROW nCount = 0; // Find direction of fill, vertical or horizontal if ( sourceRange.aStart == destRange.aStart ) { @@ -5667,8 +5634,8 @@ ScVbaRange::Merge( const uno::Any& Across ) throw (script::BasicErrorException, // #TODO #FIXME this seems incredibly lame, this can't be right for (sal_Int32 i=1; i <= oRangeRowsImpl->getCount();i++) { - oRangeRowsImpl->Cells( uno::makeAny( i ), uno::Any() )->Merge( uno::makeAny( sal_False ) ); - } + oRangeRowsImpl->Cells( uno::makeAny( i ), uno::Any() )->Merge( uno::makeAny( sal_False ) ); + } } } @@ -5826,9 +5793,9 @@ ScVbaRange::SpecialCells( const uno::Any& _oType, const uno::Any& _oValue) throw aCellRanges.Append( refRange ); } // Single range - if ( aCellRanges.First() == aCellRanges.Last() ) + if ( aCellRanges.size() == 1 ) { - uno::Reference< table::XCellRange > xRange( new ScCellRangeObj( getScDocShell(), *aCellRanges.First() ) ); + uno::Reference< table::XCellRange > xRange( new ScCellRangeObj( getScDocShell(), *aCellRanges.front() ) ); return new ScVbaRange( mxParent, mxContext, xRange ); } uno::Reference< sheet::XSheetCellRangeContainer > xRanges( new ScCellRangesObj( getScDocShell(), aCellRanges ) ); @@ -6135,7 +6102,7 @@ uno::Any SAL_CALL ScVbaRange::AdvancedFilter( sal_Int32 Action, const uno::Any& return aRet; } -//Add by minz@cn.ibm.com. Range.PivotTable. +//Range.PivotTable. //Returns a PivotTable object that represents the PivotTable report containing the upper-left corner of the specified range. uno::Reference< excel::XPivotTable > ScVbaRange::PivotTable() throw (uno::RuntimeException) @@ -6156,8 +6123,6 @@ ScVbaRange::PivotTable() throw (uno::RuntimeException) xSheet = thisRange.getSpreadSheet(); } -// RangeHelper thisRange( mxRange ); -// uno::Reference< sheet::XSpreadsheet > xSheet = thisRange.getSpreadSheet(); uno::Reference< sheet::XDataPilotTablesSupplier > xTables(xSheet, uno::UNO_QUERY_THROW ) ; uno::Reference< container::XIndexAccess > xIndexAccess( xTables->getDataPilotTables(), uno::UNO_QUERY_THROW ); if ( xIndexAccess.is() ) diff --git a/sc/source/ui/vba/vbarange.hxx b/sc/source/ui/vba/vbarange.hxx index 46c60ac35e50..fa7e9270d72c 100644 --- a/sc/source/ui/vba/vbarange.hxx +++ b/sc/source/ui/vba/vbarange.hxx @@ -52,7 +52,7 @@ #include <com/sun/star/sheet/XSpreadsheet.hpp> #include <com/sun/star/sheet/XSheetCellRangeContainer.hpp> #include <com/sun/star/table/CellAddress.hpp> -#include "vbaquerytable.hxx" //09-09-18 add by limingl +#include "vbaquerytable.hxx" #include "vbaformat.hxx" #include <formula/grammar.hxx> @@ -101,7 +101,7 @@ class ScVbaRange : public ScVbaRange_BASE sal_Bool mbIsRows; sal_Bool mbIsColumns; css::uno::Reference< ov::excel::XValidation > m_xValidation; - css::uno::Reference<excel::XQueryTable> m_xQueryTable; //09-09-16 add by limingl + css::uno::Reference<excel::XQueryTable> m_xQueryTable; double getCalcColWidth( const css::table::CellRangeAddress& ) throw (css::uno::RuntimeException); double getCalcRowHeight( const css::table::CellRangeAddress& ) throw (css::uno::RuntimeException); void visitArray( ArrayVisitor& vistor ); @@ -195,10 +195,10 @@ public: virtual css::uno::Any SAL_CALL getPrefixCharacter() throw (css::uno::RuntimeException); virtual css::uno::Any SAL_CALL getShowDetail() throw (css::uno::RuntimeException); virtual void SAL_CALL setShowDetail(const css::uno::Any& aShowDetail) throw (css::uno::RuntimeException); - virtual ::com::sun::star::uno::Reference< ::ooo::vba::excel::XQueryTable > SAL_CALL getQueryTable() throw (::com::sun::star::uno::RuntimeException); //09-09-16 add by limingl + virtual ::com::sun::star::uno::Reference< ::ooo::vba::excel::XQueryTable > SAL_CALL getQueryTable() throw (::com::sun::star::uno::RuntimeException); // Methods - sal_Bool IsRows() { return mbIsRows; } - sal_Bool IsColumns() { return mbIsColumns; } + sal_Bool IsRows() const { return mbIsRows; } + sal_Bool IsColumns() const { return mbIsColumns; } virtual css::uno::Reference< ov::excel::XComment > SAL_CALL AddComment( const css::uno::Any& Text ) throw (css::uno::RuntimeException); virtual void SAL_CALL Clear() throw (css::uno::RuntimeException); virtual void SAL_CALL ClearComments() throw (css::uno::RuntimeException); @@ -275,7 +275,7 @@ public: virtual css::uno::Reference< ov::excel::XPivotTable > SAL_CALL PivotTable( ) throw (css::uno::RuntimeException); - virtual ::sal_Int32 SAL_CALL CopyFromRecordset( const ::com::sun::star::uno::Any& Data, const ::com::sun::star::uno::Any& MaxRows, const ::com::sun::star::uno::Any& MaxColumns ) throw (::com::sun::star::script::BasicErrorException, ::com::sun::star::uno::RuntimeException); //2008-08-25 add by limingl + virtual ::sal_Int32 SAL_CALL CopyFromRecordset( const ::com::sun::star::uno::Any& Data, const ::com::sun::star::uno::Any& MaxRows, const ::com::sun::star::uno::Any& MaxColumns ) throw (::com::sun::star::script::BasicErrorException, ::com::sun::star::uno::RuntimeException); // XEnumerationAccess virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() throw (css::uno::RuntimeException); // XElementAccess @@ -288,7 +288,7 @@ public: // XDefaultMethod ::rtl::OUString SAL_CALL getDefaultMethodName( ) throw (css::uno::RuntimeException); // XDefaultProperty - ::rtl::OUString SAL_CALL getDefaultPropertyName( ) throw (css::uno::RuntimeException) { return ::rtl::OUString::createFromAscii("Value"); } + ::rtl::OUString SAL_CALL getDefaultPropertyName( ) throw (css::uno::RuntimeException) { return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Value")); } // #TODO completely rewrite ScVbaRange, its become a hackfest diff --git a/sc/source/ui/vba/vbastyle.cxx b/sc/source/ui/vba/vbastyle.cxx index 83d72dd99c05..c32b0ed7ff09 100644 --- a/sc/source/ui/vba/vbastyle.cxx +++ b/sc/source/ui/vba/vbastyle.cxx @@ -133,7 +133,7 @@ ScVbaStyle::getNameLocal() throw (script::BasicErrorException, uno::RuntimeExcep { mxPropertySet->getPropertyValue(DISPLAYNAME) >>= sName; } - catch (uno::Exception e) + catch (uno::Exception &e) { DebugHelper::exception(SbERR_METHOD_FAILED, rtl::OUString() ); } diff --git a/sc/source/ui/vba/vbavalidation.cxx b/sc/source/ui/vba/vbavalidation.cxx index 36662c87c598..126b03577887 100644 --- a/sc/source/ui/vba/vbavalidation.cxx +++ b/sc/source/ui/vba/vbavalidation.cxx @@ -295,13 +295,13 @@ ScVbaValidation::Add( const uno::Any& Type, const uno::Any& AlertStyle, const un xProps->setPropertyValue( ALERTSTYLE, uno::makeAny( eStyle ) ); - //2009-11-11 fix the defect that validatation cannot work when the input should be limited between a lower bound and an upper bound + // fix the defect that validatation cannot work when the input should be limited between a lower bound and an upper bound if ( Operator.hasValue() ) { css::sheet::ConditionOperator conOperator = ScVbaFormatCondition::retrieveAPIOperator( Operator ); xCond->setOperator( conOperator ); } - //2009-11-11 + if ( sFormula1.getLength() ) xCond->setFormula1( sFormula1 ); if ( sFormula2.getLength() ) diff --git a/sc/source/ui/vba/vbawindow.cxx b/sc/source/ui/vba/vbawindow.cxx index a31d348ff7c8..1f0c9183708a 100644 --- a/sc/source/ui/vba/vbawindow.cxx +++ b/sc/source/ui/vba/vbawindow.cxx @@ -273,7 +273,7 @@ ScVbaWindow::ScrollWorkbookTabs( const uno::Any& /*Sheets*/, const uno::Any& /*P /* sal_Int32 nSheets = 0; sal_Int32 nPosition = 0; - throw uno::RuntimeException( rtl::OUString::createFromAscii("No Implemented" ), uno::Reference< uno::XInterface >() ); + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("No Implemented" )), uno::Reference< uno::XInterface >() ); sal_Bool bSheets = ( Sheets >>= nSheets ); sal_Bool bPosition = ( Position >>= nPosition ); if ( bSheets || bPosition ) // at least one param specified diff --git a/sc/source/ui/vba/vbawindows.cxx b/sc/source/ui/vba/vbawindows.cxx index f7a3e6acb589..e5d0a09e33e7 100644 --- a/sc/source/ui/vba/vbawindows.cxx +++ b/sc/source/ui/vba/vbawindows.cxx @@ -78,7 +78,7 @@ public: m_xContext->getServiceManager(), uno::UNO_QUERY_THROW ); uno::Reference< frame::XDesktop > xDesktop - (xSMgr->createInstanceWithContext(::rtl::OUString::createFromAscii("com.sun.star.frame.Desktop"), m_xContext), uno::UNO_QUERY_THROW ); + (xSMgr->createInstanceWithContext(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.Desktop")), m_xContext), uno::UNO_QUERY_THROW ); uno::Reference< container::XEnumeration > mxComponents = xDesktop->getComponents()->createEnumeration(); while( mxComponents->hasMoreElements() ) { diff --git a/sc/source/ui/vba/vbaworkbook.cxx b/sc/source/ui/vba/vbaworkbook.cxx index 3e9fa27443cb..98b2250887c3 100644 --- a/sc/source/ui/vba/vbaworkbook.cxx +++ b/sc/source/ui/vba/vbaworkbook.cxx @@ -37,7 +37,7 @@ #include <com/sun/star/frame/XFrame.hpp> #include <com/sun/star/beans/XPropertySet.hpp> #include <ooo/vba/excel/XlFileFormat.hpp> -#include <ooo/vba/excel/XApplication.hpp> //liuchen 2009-12-16 +#include <ooo/vba/excel/XApplication.hpp> #include "scextopt.hxx" #include "vbaworksheet.hxx" @@ -49,7 +49,7 @@ #include "vbapalette.hxx" #include <osl/file.hxx> #include <stdio.h> -#include "vbanames.hxx" // Amelia Wang +#include "vbanames.hxx" #include "nameuno.hxx" #include "docoptio.hxx" #include "unonames.hxx" @@ -187,7 +187,7 @@ ScVbaWorkbook::getFileFormat( ) throw (::uno::RuntimeException) return aFileFormat; } -//VBA by minz@cn.ibm.com. Convert Excel fileformat to OO file filter +// Convert Excel fileformat to OO file filter ::rtl::OUString ScVbaWorkbook::convertFileFormat(sal_Int32 aFileFormat) { rtl::OUString aFilterName; @@ -325,13 +325,13 @@ ScVbaWorkbook::SaveCopyAs( const rtl::OUString& sFileName ) throw ( uno::Runtime xStor->storeToURL( aURL, storeProps ); } -//VBA by minz@cn.ibm.com. Add Workbook.SaveAs. +// Add Workbook.SaveAs. void ScVbaWorkbook::SaveAs( const rtl::OUString& FileName, const uno::Any& FileFormat, const uno::Any& /*CreateBackup*/ ) throw ( uno::RuntimeException) { rtl::OUString aURL; osl::FileBase::getFileURLFromSystemPath( FileName, aURL ); - //liuchen 2009-12-16 if the input parameter "FileName" takes the form as "MyFile", we need to get the current directory and combine the current directory and the file name + //if the input parameter "FileName" takes the form as "MyFile", we need to get the current directory and combine the current directory and the file name INetURLObject aFileNameURL( aURL ); aURL = aFileNameURL.GetMainURL( INetURLObject::NO_DECODE ); if ( aURL.getLength() == 0 ) @@ -344,7 +344,7 @@ ScVbaWorkbook::SaveAs( const rtl::OUString& FileName, const uno::Any& FileFormat aPathURL.Append( FileName ); aURL = aPathURL.GetMainURL( INetURLObject::NO_DECODE ); } - //liuchen 2009-12-16 + uno::Reference< frame::XStorable > xStor( getModel(), uno::UNO_QUERY_THROW ); sal_Int32 aFileFormat = excel::XlFileFormat::xlExcel9795; @@ -381,7 +381,6 @@ ScVbaWorkbook::Styles( const::uno::Any& Item ) throw (uno::RuntimeException) return uno::makeAny( dStyles ); } -// Amelia Wang uno::Any SAL_CALL ScVbaWorkbook::Names( const css::uno::Any& aIndex ) throw (uno::RuntimeException) { diff --git a/sc/source/ui/vba/vbaworkbooks.cxx b/sc/source/ui/vba/vbaworkbooks.cxx index 67de260af9aa..1ce20b8b2e47 100644 --- a/sc/source/ui/vba/vbaworkbooks.cxx +++ b/sc/source/ui/vba/vbaworkbooks.cxx @@ -246,7 +246,7 @@ ScVbaWorkbooks::isSpreadSheetFile( const rtl::OUString& sType ) rtl::OUString ScVbaWorkbooks::getFileFilterType( const rtl::OUString& rFileName ) { - uno::Reference< document::XTypeDetection > xTypeDetect( mxContext->getServiceManager()->createInstanceWithContext(::rtl::OUString::createFromAscii("com.sun.star.document.TypeDetection"), mxContext), uno::UNO_QUERY_THROW ); + uno::Reference< document::XTypeDetection > xTypeDetect( mxContext->getServiceManager()->createInstanceWithContext(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.TypeDetection")), mxContext), uno::UNO_QUERY_THROW ); uno::Sequence< beans::PropertyValue > aMediaDesc(1); aMediaDesc[ 0 ].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ("URL" ) ); aMediaDesc[ 0 ].Value <<= rFileName; @@ -269,12 +269,12 @@ ScVbaWorkbooks::Open( const rtl::OUString& rFileName, const uno::Any& /*UpdateLi osl::FileBase::getFileURLFromSystemPath( rFileName, aURL ); uno::Sequence< beans::PropertyValue > sProps(0); - sal_Int32 nIndex = 0; rtl::OUString sType = getFileFilterType( aURL ); // A text file means it needs to be processed as a csv file if ( isTextFile( sType ) ) { + sal_Int32 nIndex = 0; // Values for format // 1 Tabs // 2 Commas diff --git a/sc/source/ui/vba/vbaworksheet.cxx b/sc/source/ui/vba/vbaworksheet.cxx index ca00ef9ee495..51a2292c2bf2 100644 --- a/sc/source/ui/vba/vbaworksheet.cxx +++ b/sc/source/ui/vba/vbaworksheet.cxx @@ -96,7 +96,7 @@ #include "vbaworksheets.hxx" #include "vbahyperlinks.hxx" #include "vbasheetobjects.hxx" -#include "viewuno.hxx" //liuchen 2009-9-2 +#include "viewuno.hxx" #define STANDARDWIDTH 2267 #define STANDARDHEIGHT 427 @@ -247,7 +247,6 @@ ScVbaWorksheet::setVisible( ::sal_Int32 _Visible ) throw (uno::RuntimeException) { uno::Reference< beans::XPropertySet > xProps( getSheet(), uno::UNO_QUERY_THROW ); - //VBA by minz@cn.ibm.com. sal_Bool bVisible = true; switch( _Visible ) { @@ -479,7 +478,7 @@ ScVbaWorksheet::Activate() throw (uno::RuntimeException) xSpreadsheet->setActiveSheet(getSheet()); } -//liuchen 2009-9-2, support expand (but not replace) the active sheet +// support expand (but not replace) the active sheet void ScVbaWorksheet::Select(const css::uno::Any& aReplace) throw (uno::RuntimeException) { @@ -577,9 +576,9 @@ ScVbaWorksheet::Copy( const uno::Any& Before, const uno::Any& After ) throw (uno // set sheet name to be newSheet name aSheetName = aCurrSheetName; - SCTAB nDummy=0; if ( bSheetExists && bDestSheetExists ) { + SCTAB nDummy=0; sal_Bool bAfter = After.hasValue(); if(bAfter) nDest++; @@ -651,7 +650,7 @@ ScVbaWorksheet::getSheetAtOffset(SCTAB offset) throw (uno::RuntimeException) uno::Reference< excel::XWorksheet > ScVbaWorksheet::getNext() throw (uno::RuntimeException) { - //VBA, minz@cn.ibm.com. catch the exception for index out of bound + // catch the exception for index out of bound try{ return getSheetAtOffset(static_cast<SCTAB>(1)); }catch( lang::IndexOutOfBoundsException& /*e*/ ) @@ -663,7 +662,7 @@ ScVbaWorksheet::getNext() throw (uno::RuntimeException) uno::Reference< excel::XWorksheet > ScVbaWorksheet::getPrevious() throw (uno::RuntimeException) { - //VBA, minz@cn.ibm.com. catch the exception for index out of bound + // catch the exception for index out of bound try{ return getSheetAtOffset(-1); }catch( lang::IndexOutOfBoundsException& /*e*/ ) @@ -753,7 +752,7 @@ ScVbaWorksheet::ChartObjects( const uno::Any& Index ) throw (uno::RuntimeExcepti uno::Reference< table::XTableChartsSupplier > xChartSupplier( getSheet(), uno::UNO_QUERY_THROW ); uno::Reference< table::XTableCharts > xTableCharts = xChartSupplier->getCharts(); - uno::Reference< drawing::XDrawPageSupplier > xDrawPageSupplier( getSheet(), uno::UNO_QUERY_THROW ); //VBA, minz@cn.ibm.com. + uno::Reference< drawing::XDrawPageSupplier > xDrawPageSupplier( getSheet(), uno::UNO_QUERY_THROW ); mxCharts = new ScVbaChartObjects( this, mxContext, xTableCharts, xDrawPageSupplier ); } if ( Index.hasValue() ) @@ -1072,7 +1071,7 @@ ScVbaWorksheet::getCodeName() throw (css::uno::RuntimeException) sal_Int16 ScVbaWorksheet::getSheetID() throw (uno::RuntimeException) { - uno::Reference< sheet::XCellRangeAddressable > xAddressable( getSheet(), uno::UNO_QUERY_THROW ); //VBA. minz@cn.ibm.com. if ActiveSheet, mxSheet is null. + uno::Reference< sheet::XCellRangeAddressable > xAddressable( getSheet(), uno::UNO_QUERY_THROW ); // if ActiveSheet, mxSheet is null. return xAddressable->getRangeAddress().Sheet; } diff --git a/sc/source/ui/vba/vbaworksheet.hxx b/sc/source/ui/vba/vbaworksheet.hxx index abcdf60398af..3328c3c5b807 100644 --- a/sc/source/ui/vba/vbaworksheet.hxx +++ b/sc/source/ui/vba/vbaworksheet.hxx @@ -117,7 +117,7 @@ public: // Methods virtual void SAL_CALL Activate() throw (css::uno::RuntimeException); - virtual void SAL_CALL Select(const css::uno::Any& aReplace) throw (css::uno::RuntimeException); //liuchen 2009-9-2, add the input parameter to support expand selection + virtual void SAL_CALL Select(const css::uno::Any& aReplace) throw (css::uno::RuntimeException); // add the input parameter to support expand selection virtual css::uno::Reference< ov::excel::XRange > SAL_CALL Range( const css::uno::Any& Cell1, const css::uno::Any& Cell2 ) throw (css::uno::RuntimeException); virtual void SAL_CALL Move( const css::uno::Any& Before, const css::uno::Any& After ) throw (css::uno::RuntimeException) ; virtual void SAL_CALL Copy( const css::uno::Any& Before, const css::uno::Any& After ) throw (css::uno::RuntimeException); diff --git a/sc/source/ui/vba/vbaworksheets.cxx b/sc/source/ui/vba/vbaworksheets.cxx index cb345950958b..ed0cc73171cb 100644 --- a/sc/source/ui/vba/vbaworksheets.cxx +++ b/sc/source/ui/vba/vbaworksheets.cxx @@ -480,7 +480,7 @@ ScVbaWorksheets::getServiceNames() return sNames; } -/*static*/ bool ScVbaWorksheets::nameExists( uno::Reference <sheet::XSpreadsheetDocument>& xSpreadDoc, const ::rtl::OUString & name, SCTAB& nTab ) throw ( lang::IllegalArgumentException ) +bool ScVbaWorksheets::nameExists( uno::Reference <sheet::XSpreadsheetDocument>& xSpreadDoc, const ::rtl::OUString & name, SCTAB& nTab ) throw ( lang::IllegalArgumentException ) { if (!xSpreadDoc.is()) throw lang::IllegalArgumentException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "nameExists() xSpreadDoc is null" ) ), uno::Reference< uno::XInterface >(), 1 ); diff --git a/sc/source/ui/view/cellsh.cxx b/sc/source/ui/view/cellsh.cxx index 7cfa50a4e686..94d75a0fe822 100644 --- a/sc/source/ui/view/cellsh.cxx +++ b/sc/source/ui/view/cellsh.cxx @@ -448,7 +448,7 @@ IMPL_LINK( ScCellShell, ClipboardChanged, TransferableDataHelper*, pDataHelper ) } -void __EXPORT ScCellShell::GetClipState( SfxItemSet& rSet ) +void ScCellShell::GetClipState( SfxItemSet& rSet ) { // SID_PASTE // SID_PASTE_SPECIAL @@ -517,11 +517,7 @@ void ScCellShell::GetHLinkState( SfxItemSet& rSet ) void ScCellShell::GetState(SfxItemSet &rSet) { - // removed: SID_BORDER_OBJECT (old Basic) - ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell(); -// BOOL bOle = pTabViewShell->GetViewFrame()->GetFrame().IsInPlace(); -// BOOL bTabProt = GetViewData()->GetDocument()->IsTabProtected(GetViewData()->GetTabNo()); ScDocShell* pDocSh = GetViewData()->GetDocShell(); ScViewData* pData = GetViewData(); ScDocument* pDoc = pData->GetDocument(); @@ -742,8 +738,6 @@ void ScCellShell::GetState(SfxItemSet &rSet) case SID_SELECT_SCENARIO: { - // ScDocument* pDoc = GetViewData()->GetDocument(); - // SCTAB nTab = GetViewData()->GetTabNo(); List aList; Color aDummyCol; @@ -796,19 +790,6 @@ void ScCellShell::GetState(SfxItemSet &rSet) rSet.DisableItem( nWhich ); break; -/* Zellschutz bei selektierten Zellen wird bei anderen Funktionen auch nicht abgefragt... - case SID_DELETE: - { - if ( pDoc->IsTabProtected(nTab) ) - { - const SfxItemSet& rAttrSet = GetSelectionPattern()->GetItemSet(); - const ScProtectionAttr& rProtAttr = (const ScProtectionAttr&)rAttrSet.Get( ATTR_PROTECTION, TRUE ); - if ( rProtAttr.GetProtection() ) - rSet.DisableItem( nWhich ); - } - } - break; -*/ case SID_OUTLINE_MAKE: { if ( GetViewData()->GetDocument()->GetDPAtCursor( GetViewData()->GetCurX(), @@ -915,10 +896,10 @@ void ScCellShell::GetState(SfxItemSet &rSet) // look for at least one note in selection ScRangeList aRanges; rMark.FillRangeListWithMarks( &aRanges, FALSE ); - ULONG nCount = aRanges.Count(); - for (ULONG nPos=0; nPos<nCount && !bEnable; nPos++) + size_t nCount = aRanges.size(); + for (size_t nPos = 0; nPos < nCount && !bEnable; ++nPos) { - ScCellIterator aCellIter( pDoc, *aRanges.GetObject(nPos) ); + ScCellIterator aCellIter(pDoc, *aRanges[nPos]); for( ScBaseCell* pCell = aCellIter.GetFirst(); pCell && !bEnable; pCell = aCellIter.GetNext() ) if ( pCell->HasNote() ) bEnable = TRUE; // note found diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx index 750d3648631e..410e53de7670 100644 --- a/sc/source/ui/view/cellsh1.cxx +++ b/sc/source/ui/view/cellsh1.cxx @@ -103,8 +103,6 @@ #define IS_AVAILABLE(WhichId,ppItem) \ (pReqArgs->GetItemState((WhichId), TRUE, ppItem ) == SFX_ITEM_SET) -#define C2U(cChar) rtl::OUString::createFromAscii(cChar) - #include <com/sun/star/ui/dialogs/XExecutableDialog.hpp> #include <com/sun/star/lang/XInitialization.hpp> #include <com/sun/star/beans/PropertyValue.hpp> @@ -1536,7 +1534,6 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq ) break; case SID_SPELL_DIALOG: -// pTabViewShell->DoSpellingChecker(); { SfxViewFrame* pViewFrame = pTabViewShell->GetViewFrame(); if( rReq.GetArgs() ) @@ -1567,7 +1564,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq ) { Reference< ui::dialogs::XExecutableDialog > xDialog( xMCF->createInstanceWithContext( - rtl::OUString::createFromAscii("com.sun.star.linguistic2.ChineseTranslationDialog") + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.linguistic2.ChineseTranslationDialog")) , xContext), UNO_QUERY); Reference< lang::XInitialization > xInit( xDialog, UNO_QUERY ); if( xInit.is() ) @@ -1577,7 +1574,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq ) Sequence<Any> aSeq(1); Any* pArray = aSeq.getArray(); PropertyValue aParam; - aParam.Name = rtl::OUString::createFromAscii("ParentWindow"); + aParam.Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ParentWindow")); aParam.Value <<= makeAny(xDialogParentWindow); pArray[0] <<= makeAny(aParam); xInit->initialize( aSeq ); @@ -1595,9 +1592,9 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq ) { try { - xProp->getPropertyValue( C2U("IsDirectionToSimplified") ) >>= bToSimplified; - xProp->getPropertyValue( C2U("IsUseCharacterVariants") ) >>= bUseVariants; - xProp->getPropertyValue( C2U("IsTranslateCommonTerms") ) >>= bCommonTerms; + xProp->getPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("IsDirectionToSimplified")) ) >>= bToSimplified; + xProp->getPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("IsUseCharacterVariants")) ) >>= bUseVariants; + xProp->getPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("IsTranslateCommonTerms")) ) >>= bCommonTerms; } catch( Exception& ) { @@ -1685,8 +1682,6 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq ) { const SfxBoolItem* pOkItem = (const SfxBoolItem*)&pReqArgs->Get( SID_DLG_RETOK ); -// pScMod->SetFunctionDlg( NULL ); - if ( pOkItem->GetValue() ) // OK { String aFormula; diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx index a74a73c85721..00fd916b9687 100644 --- a/sc/source/ui/view/cellsh2.cxx +++ b/sc/source/ui/view/cellsh2.cxx @@ -196,7 +196,6 @@ BOOL lcl_GetSortParam( const ScViewData* pData, ScSortParam& rSortParam ) return bSort; } -//<!-- Added by PengYunQuan for Validity Cell Range Picker //after end execute from !IsModalInputMode, it is safer to delay deleting namespace { @@ -206,7 +205,6 @@ namespace return 0; } } -//--> Added by PengYunQuan for Validity Cell Range Picker void ScCellShell::ExecuteDB( SfxRequest& rReq ) { @@ -234,7 +232,7 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq ) { uno::Reference<frame::XFrame> xFrame = pViewFrame->GetFrame().GetFrameInterface(); uno::Reference<frame::XFrame> xBeamerFrame = xFrame->findFrame( - rtl::OUString::createFromAscii("_beamer"), + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_beamer")), frame::FrameSearchFlag::CHILDREN); if ( xBeamerFrame.is() ) bWasOpen = TRUE; @@ -338,10 +336,10 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq ) case SID_DATA_FORM: { ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create(); - DBG_ASSERT(pFact, "ScAbstractFactory create fail!");//CHINA001 + DBG_ASSERT(pFact, "ScAbstractFactory create fail!"); AbstractScDataFormDlg* pDlg = pFact->CreateScDataFormDlg( pTabViewShell->GetDialogParent(),RID_SCDLG_DATAFORM, pTabViewShell); - DBG_ASSERT(pDlg, "Dialog create fail!");//CHINA001 + DBG_ASSERT(pDlg, "Dialog create fail!"); pDlg->Execute(); @@ -1131,11 +1129,9 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq ) pTabViewShell->SetValidation( aData ); rReq.Done( *pOutSet ); } - //<!-- Modified by PengYunQuan for Validity Cell Range Picker //after end execute from !IsModalInputMode, it is safer to delay deleting //delete pDlg; Application::PostUserEvent( Link( pDlg, &DelayDeleteAbstractDialog ) ); - //--> Modified by PengYunQuan for Validity Cell Range Picker } } break; @@ -1194,7 +1190,7 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq ) } } -void __EXPORT ScCellShell::GetDBState( SfxItemSet& rSet ) +void ScCellShell::GetDBState( SfxItemSet& rSet ) { ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell(); ScViewData* pData = GetViewData(); diff --git a/sc/source/ui/view/cellsh3.cxx b/sc/source/ui/view/cellsh3.cxx index a57835fdf54d..76582b3ab844 100644 --- a/sc/source/ui/view/cellsh3.cxx +++ b/sc/source/ui/view/cellsh3.cxx @@ -871,16 +871,7 @@ void ScCellShell::Execute( SfxRequest& rReq ) { // TODO/LATER: when is this code executed? pTabViewShell->Escape(); - //SfxObjectShell* pObjSh = GetViewData()->GetSfxDocShell(); - //if (pObjSh->GetInPlaceObject() && - // pObjSh->GetInPlaceObject()->GetIPClient()) - //{ - // GetViewData()->GetDocShell()-> - // DoInPlaceActivate(FALSE); // OLE beenden - //} } - -// SetSumAssignMode(); //ScInputWindow } break; diff --git a/sc/source/ui/view/colrowba.cxx b/sc/source/ui/view/colrowba.cxx index c94e08803594..0aa828d78941 100644 --- a/sc/source/ui/view/colrowba.cxx +++ b/sc/source/ui/view/colrowba.cxx @@ -128,7 +128,6 @@ void ScColBar::SetEntrySize( SCCOLROW nPos, USHORT nNewSize ) nSizeTwips = (USHORT) ( nNewSize / pViewData->GetPPTX() ); ScMarkData& rMark = pViewData->GetMarkData(); -// SCTAB nTab = pViewData->GetTabNo(); SCCOLROW* pRanges = new SCCOLROW[MAXCOL+1]; SCCOL nRangeCnt = 0; @@ -294,7 +293,6 @@ void ScRowBar::SetEntrySize( SCCOLROW nPos, USHORT nNewSize ) nSizeTwips = (USHORT) ( nNewSize / pViewData->GetPPTY() ); ScMarkData& rMark = pViewData->GetMarkData(); -// SCTAB nTab = pViewData->GetTabNo(); SCCOLROW* pRanges = new SCCOLROW[MAXROW+1]; SCROW nRangeCnt = 0; diff --git a/sc/source/ui/view/dbfunc3.cxx b/sc/source/ui/view/dbfunc3.cxx index 2c2df72120fa..7e5b5bd484bb 100644 --- a/sc/source/ui/view/dbfunc3.cxx +++ b/sc/source/ui/view/dbfunc3.cxx @@ -456,13 +456,11 @@ void ScDBFunc::DoSubTotals( const ScSubTotalParam& rParam, BOOL bRecord, ScOutlineTable* pUndoTab = NULL; ScRangeName* pUndoRange = NULL; ScDBCollection* pUndoDB = NULL; - SCTAB nTabCount = 0; // fuer Referenz-Undo if (bRecord) // alte Daten sichern { BOOL bOldFilter = bDo && rParam.bDoSort; - - nTabCount = pDoc->GetTableCount(); + SCTAB nTabCount = pDoc->GetTableCount(); pUndoDoc = new ScDocument( SCDOCMODE_UNDO ); ScOutlineTable* pTable = pDoc->GetOutlineTable( nTab ); if (pTable) @@ -500,7 +498,6 @@ void ScDBFunc::DoSubTotals( const ScSubTotalParam& rParam, BOOL bRecord, pUndoDB = new ScDBCollection( *pDocDB ); } -// pDoc->SetOutlineTable( nTab, NULL ); ScOutlineTable* pOut = pDoc->GetOutlineTable( nTab ); if (pOut) pOut->GetRowArray()->RemoveAll(); // nur Zeilen-Outlines loeschen @@ -532,7 +529,6 @@ void ScDBFunc::DoSubTotals( const ScSubTotalParam& rParam, BOOL bRecord, if (bRecord) { -// ScDBData* pUndoDBData = pDBData ? new ScDBData( *pDBData ) : NULL; pDocSh->GetUndoManager()->AddUndoAction( new ScUndoSubTotals( pDocSh, nTab, rParam, aNewParam.nRow2, @@ -710,8 +706,8 @@ ULONG RefreshDPObject( ScDPObject *pDPObj, ScDocument *pDoc, ScDocShell *pDocSh, { //Refresh all dpobjects ScDPCollection* pDPCollection = pDoc->GetDPCollection(); - USHORT nCount = pDPCollection->GetCount(); - for (USHORT i=0; i<nCount; i++) + size_t nCount = pDPCollection->GetCount(); + for (size_t i=0; i<nCount; ++i) { if ( (*pDPCollection)[i]->GetCacheId() == pDPObj->GetCacheId() ) { @@ -739,8 +735,6 @@ ULONG ScDBFunc::RecalcPivotTable() GetViewData()->GetTabNo() ); if ( pDPObj ) { - // Wang Xu Ming -- 2009-6-17 - // DataPilot Migration //ScDBDocFunc aFunc( *pDocSh ); //aFunc.DataPilotUpdate( pDPObj, pDPObj, TRUE, FALSE ); //CursorPosChanged(); // shells may be switched @@ -754,7 +748,6 @@ ULONG ScDBFunc::RecalcPivotTable() else if (nErrId <= USHRT_MAX) ErrorMessage(static_cast<USHORT>(nErrId)); return nErrId; - // End Comments } else ErrorMessage(STR_PIVOT_NOTFOUND); @@ -774,12 +767,12 @@ void ScDBFunc::GetSelectedMemberList( ScStrCollection& rEntries, long& rDimensio ScRangeListRef xRanges; GetViewData()->GetMultiArea( xRanges ); // incl. cursor if nothing is selected - ULONG nRangeCount = xRanges->Count(); + size_t nRangeCount = xRanges->size(); BOOL bContinue = TRUE; - for (ULONG nRangePos=0; nRangePos<nRangeCount && bContinue; nRangePos++) + for (size_t nRangePos=0; nRangePos < nRangeCount && bContinue; nRangePos++) { - ScRange aRange = *xRanges->GetObject(nRangePos); + ScRange aRange = *(*xRanges)[nRangePos]; SCCOL nStartCol = aRange.aStart.Col(); SCROW nStartRow = aRange.aStart.Row(); SCCOL nEndCol = aRange.aEnd.Col(); @@ -2173,7 +2166,7 @@ void ScDBFunc::ShowDataPilotSourceData( ScDPObject& rDPObj, const Sequence<sheet if (!xPropSet.is()) continue; - Any any = xPropSet->getPropertyValue( rtl::OUString::createFromAscii(SC_UNO_NUMBERFO) ); + Any any = xPropSet->getPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_NUMBERFO)) ); sal_Int32 nNumFmt = 0; if (!(any >>= nNumFmt)) continue; diff --git a/sc/source/ui/view/dbfunc4.cxx b/sc/source/ui/view/dbfunc4.cxx index a96dc2970875..940ffa5a37d6 100644 --- a/sc/source/ui/view/dbfunc4.cxx +++ b/sc/source/ui/view/dbfunc4.cxx @@ -53,7 +53,6 @@ using namespace com::sun::star; //================================================================== -// static USHORT ScDBFunc::DoUpdateCharts( const ScAddress& rPos, ScDocument* pDoc, BOOL bAllCharts ) { ScDrawLayer* pModel = pDoc->GetDrawLayer(); diff --git a/sc/source/ui/view/drawattr.cxx b/sc/source/ui/view/drawattr.cxx index 36615b14525d..01809fd60e2e 100644 --- a/sc/source/ui/view/drawattr.cxx +++ b/sc/source/ui/view/drawattr.cxx @@ -35,14 +35,14 @@ //------------------------------------------------------------------------ -String __EXPORT SvxDrawToolItem::GetValueText() const +String SvxDrawToolItem::GetValueText() const { return GetValueText(GetValue()); } //------------------------------------------------------------------------ -String __EXPORT SvxDrawToolItem::GetValueText( USHORT nVal ) const +String SvxDrawToolItem::GetValueText( USHORT nVal ) const { const sal_Char* p; @@ -65,14 +65,14 @@ String __EXPORT SvxDrawToolItem::GetValueText( USHORT nVal ) const //------------------------------------------------------------------------ -SfxPoolItem* __EXPORT SvxDrawToolItem::Clone( SfxItemPool * ) const +SfxPoolItem* SvxDrawToolItem::Clone( SfxItemPool * ) const { return new SvxDrawToolItem(*this); } //------------------------------------------------------------------------ -SfxPoolItem* __EXPORT SvxDrawToolItem::Create( SvStream& rStream, USHORT nVer ) const +SfxPoolItem* SvxDrawToolItem::Create( SvStream& rStream, USHORT nVer ) const { USHORT nVal; rStream >> nVal; diff --git a/sc/source/ui/view/drawvie3.cxx b/sc/source/ui/view/drawvie3.cxx index 3ef141f2c526..4d6c8d84b380 100644 --- a/sc/source/ui/view/drawvie3.cxx +++ b/sc/source/ui/view/drawvie3.cxx @@ -62,7 +62,6 @@ ScDrawView::ScDrawView( OutputDevice* pOut, ScViewData* pData ) : pDropMarker( NULL ), pDropMarkObj( NULL ), bInConstruct( TRUE ) - //HMHbDisableHdl( FALSE ) { // #i73602# Use default from the configuration SetBufferedOverlayAllowed(getOptionsDrawinglayer().IsOverlayBuffer_Calc()); @@ -75,7 +74,7 @@ ScDrawView::ScDrawView( OutputDevice* pOut, ScViewData* pData ) : // Verankerung setzen -void ScDrawView::SetAnchor( ScAnchorType eType ) +void ScDrawView::SetPageAnchored() { SdrObject* pObj = NULL; if( AreObjectsMarked() ) @@ -85,7 +84,7 @@ void ScDrawView::SetAnchor( ScAnchorType eType ) for( ULONG i=0; i<nCount; i++ ) { pObj = pMark->GetMark(i)->GetMarkedSdrObj(); - ScDrawLayer::SetAnchor( pObj, eType ); + ScDrawLayer::SetPageAnchored( *pObj ); } if ( pViewData ) @@ -93,7 +92,28 @@ void ScDrawView::SetAnchor( ScAnchorType eType ) } } -ScAnchorType ScDrawView::GetAnchor() const +void ScDrawView::SetCellAnchored() +{ + if (!pDoc) + return; + + SdrObject* pObj = NULL; + if( AreObjectsMarked() ) + { + const SdrMarkList* pMark = &GetMarkedObjectList(); + ULONG nCount = pMark->GetMarkCount(); + for( ULONG i=0; i<nCount; i++ ) + { + pObj = pMark->GetMark(i)->GetMarkedSdrObj(); + ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *pDoc, nTab); + } + + if ( pViewData ) + pViewData->GetDocShell()->SetDrawModified(); + } +} + +ScAnchorType ScDrawView::GetAnchorType() const { BOOL bPage = FALSE; BOOL bCell = FALSE; @@ -106,7 +126,7 @@ ScAnchorType ScDrawView::GetAnchor() const for( ULONG i=0; i<nCount; i++ ) { pObj = pMark->GetMark(i)->GetMarkedSdrObj(); - if( ScDrawLayer::GetAnchor( pObj ) == SCA_CELL ) + if( ScDrawLayer::GetAnchorType( *pObj ) == SCA_CELL ) bCell =TRUE; else bPage = TRUE; @@ -119,7 +139,7 @@ ScAnchorType ScDrawView::GetAnchor() const return SCA_DONTKNOW; } -void __EXPORT ScDrawView::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) +void ScDrawView::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) { if (rHint.ISA(ScTabDeletedHint)) // Tabelle geloescht { @@ -136,6 +156,20 @@ void __EXPORT ScDrawView::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) if ( nTab == ((ScTabSizeChangedHint&)rHint).GetTab() ) UpdateWorkArea(); } + else if ( rHint.ISA( SdrHint ) ) + { + if (const SdrHint* pSdrHint = PTR_CAST( SdrHint, &rHint )) + { + //Update the anchors of any non note object that is cell anchored which has + //been moved since the last anchors for its position was calculated + if (pSdrHint->GetKind() == HINT_OBJCHG || pSdrHint->GetKind() == HINT_OBJINSERTED) + if (SdrObject* pObj = const_cast<SdrObject*>(pSdrHint->GetObject())) + if (ScDrawObjData *pAnchor = ScDrawLayer::GetObjData(pObj)) + if (!pAnchor->mbNote && pAnchor->maLastRect != pObj->GetLogicRect()) + ScDrawLayer::SetCellAnchoredFromPosition(*pObj, *pDoc, nTab); + } + FmFormView::Notify( rBC,rHint ); + } else FmFormView::Notify( rBC,rHint ); } @@ -169,12 +203,8 @@ void ScDrawView::UpdateIMap( SdrObject* pObj ) ScIMapDlgSet( aGraphic, pImageMap, &aTargetList, pObj ); // aus imapwrap // TargetListe kann von uns wieder geloescht werden - String* pEntry = aTargetList.First(); - while( pEntry ) - { - delete pEntry; - pEntry = aTargetList.Next(); - } + for ( size_t i = 0, n = aTargetList.size(); i < n; ++i ) + delete aTargetList[ i ]; } } diff --git a/sc/source/ui/view/drawview.cxx b/sc/source/ui/view/drawview.cxx index 14b2c02fae00..0941994b02c8 100644 --- a/sc/source/ui/view/drawview.cxx +++ b/sc/source/ui/view/drawview.cxx @@ -88,7 +88,6 @@ void ScDrawView::Construct() EnableExtendedCommandEventDispatcher(FALSE); SetFrameDragSingles(TRUE); -// SetSolidMarkHdl(TRUE); // einstellbar -> UpdateUserViewOptions SetMinMoveDistancePixel( 2 ); SetHitTolerancePixel( 2 ); @@ -114,7 +113,7 @@ void ScDrawView::Construct() if (pLayer) { SetLayerLocked( pLayer->GetName(), bProt ); - SetActiveLayer( pLayer->GetName() ); // FRONT als aktiven Layer setzen + SetActiveLayer( pLayer->GetName() ); // set active layer to FRONT } pLayer = rAdmin.GetLayerPerID(SC_LAYER_CONTROLS); if (pLayer) @@ -149,53 +148,22 @@ void ScDrawView::ImplClearCalcDropMarker() } } -__EXPORT ScDrawView::~ScDrawView() +ScDrawView::~ScDrawView() { ImplClearCalcDropMarker(); } void ScDrawView::AddCustomHdl() { - BOOL bNegativePage = pDoc->IsNegativePage( nTab ); - const SdrMarkList &rMrkList = GetMarkedObjectList(); UINT32 nCount = rMrkList.GetMarkCount(); for(UINT32 nPos=0; nPos<nCount; nPos++ ) { - const SdrObject* pObj = rMrkList.GetMark(nPos)->GetMarkedSdrObj(); - if(ScDrawLayer::GetAnchor(pObj) == SCA_CELL) + SdrObject* pObj = rMrkList.GetMark(nPos)->GetMarkedSdrObj(); + if (ScDrawObjData *pAnchor = ScDrawLayer::GetObjDataTab(pObj, nTab)) { - const INT32 nDelta = 1; - - Rectangle aBoundRect = pObj->GetCurrentBoundRect(); - Point aPos; - if (bNegativePage) - { - aPos = aBoundRect.TopRight(); - aPos.X() = -aPos.X(); // so the loop below is the same - } - else - aPos = aBoundRect.TopLeft(); - long nPosX = (long) (aPos.X() / HMM_PER_TWIPS) + nDelta; - long nPosY = (long) (aPos.Y() / HMM_PER_TWIPS) + nDelta; - - SCCOL nCol; - INT32 nWidth = 0; - - for(nCol=0; nCol<=MAXCOL && nWidth<=nPosX; nCol++) - nWidth += pDoc->GetColWidth(nCol,nTab); - - if(nCol > 0) - --nCol; - - SCROW nRow = nPosY <= 0 ? 0 : pDoc->GetRowForHeight( nTab, - (ULONG) nPosY); - if(nRow > 0) - --nRow; - - ScTabView* pView = pViewData->GetView(); - ScAddress aScAddress(nCol, nRow, nTab); - pView->CreateAnchorHandles(aHdl, aScAddress); + if (ScTabView* pView = pViewData->GetView()) + pView->CreateAnchorHandles(aHdl, pAnchor->maStart); } } } @@ -205,7 +173,7 @@ void ScDrawView::InvalidateAttribs() if (!pViewData) return; SfxBindings& rBindings = pViewData->GetBindings(); - // echte Statuswerte: + // true status values: rBindings.InvalidateAll( TRUE ); } @@ -248,20 +216,6 @@ void ScDrawView::InvalidateDrawTextAttrs() rBindings.Invalidate( SID_ALIGN_ANY_JUSTIFIED ); } -//void ScDrawView::DrawMarks( OutputDevice* pOut ) const -//{ -// DBG_ASSERT(pOut, "ScDrawView::DrawMarks: No OutputDevice (!)"); -// SdrPaintWindow* pPaintWindow = FindPaintWindow(*pOut); -// -// if(pPaintWindow) -// { -// if(pPaintWindow->isXorVisible()) -// { -// ToggleShownXor(pOut, 0L); -// } -// } -//} - void ScDrawView::SetMarkedToLayer( BYTE nLayerNo ) { if (AreObjectsMarked()) @@ -416,9 +370,7 @@ void ScDrawView::MarkListHasChanged() if ( pClient && pClient->IsObjectInPlaceActive() && !bUnoRefDialog ) { // #41730# beim ViewShell::Activate aus dem Reset2Open nicht die Handles anzeigen - //HMHbDisableHdl = TRUE; pClient->DeactivateObject(); - //HMHbDisableHdl = FALSE; // Image-Ole wieder durch Grafik ersetzen passiert jetzt in ScClient::UIActivate } @@ -587,7 +539,7 @@ void ScDrawView::MarkListHasChanged() } -void __EXPORT ScDrawView::ModelHasChanged() +void ScDrawView::ModelHasChanged() { SdrObject* pEditObj = GetTextEditObject(); if ( pEditObj && !pEditObj->IsInserted() && pViewData ) @@ -601,7 +553,7 @@ void __EXPORT ScDrawView::ModelHasChanged() FmFormView::ModelHasChanged(); } -void __EXPORT ScDrawView::UpdateUserViewOptions() +void ScDrawView::UpdateUserViewOptions() { if (pViewData) { @@ -618,9 +570,6 @@ void __EXPORT ScDrawView::UpdateUserViewOptions() SetSnapEnabled( rGrid.GetUseGridSnap() ); SetGridSnap( rGrid.GetUseGridSnap() ); - // Snap from grid options is no longer used -// SetSnapGrid( Size( rGrid.GetFldSnapX(), rGrid.GetFldSnapY() ) ); - Fraction aFractX( rGrid.GetFldDrawX(), rGrid.GetFldDivisionX() + 1 ); Fraction aFractY( rGrid.GetFldDrawY(), rGrid.GetFldDivisionY() + 1 ); SetSnapGridWidth( aFractX, aFractY ); @@ -734,7 +683,7 @@ void ScDrawView::LockCalcLayer( SdrLayerID nLayer, bool bLock ) SetLayerLocked( pLockLayer->GetName(), bLock ); } -void __EXPORT ScDrawView::MakeVisible( const Rectangle& rRect, Window& rWin ) +void ScDrawView::MakeVisible( const Rectangle& rRect, Window& rWin ) { //! rWin richtig auswerten //! ggf Zoom aendern diff --git a/sc/source/ui/view/editsh.cxx b/sc/source/ui/view/editsh.cxx index 01e5b5a9a3b1..3b4eff1c0218 100644 --- a/sc/source/ui/view/editsh.cxx +++ b/sc/source/ui/view/editsh.cxx @@ -626,7 +626,7 @@ void lcl_DisableAll( SfxItemSet& rSet ) // disable all slots } } -void __EXPORT ScEditShell::GetState( SfxItemSet& rSet ) +void ScEditShell::GetState( SfxItemSet& rSet ) { // #125326# When deactivating the view, edit mode is stopped, but the EditShell is left active // (a shell can't be removed from within Deactivate). In that state, the EditView isn't inserted @@ -747,7 +747,7 @@ IMPL_LINK( ScEditShell, ClipboardChanged, TransferableDataHelper*, pDataHelper ) return 0; } -void __EXPORT ScEditShell::GetClipState( SfxItemSet& rSet ) +void ScEditShell::GetClipState( SfxItemSet& rSet ) { if ( !pClipEvtLstnr ) { diff --git a/sc/source/ui/view/formatsh.cxx b/sc/source/ui/view/formatsh.cxx index 6b71dbc61514..d1b2e230ee20 100644 --- a/sc/source/ui/view/formatsh.cxx +++ b/sc/source/ui/view/formatsh.cxx @@ -179,7 +179,7 @@ ScFormatShell::~ScFormatShell() //------------------------------------------------------------------ -void __EXPORT ScFormatShell::GetStyleState( SfxItemSet& rSet ) +void ScFormatShell::GetStyleState( SfxItemSet& rSet ) { ScDocument* pDoc = GetViewData()->GetDocument(); ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell(); @@ -273,7 +273,7 @@ void __EXPORT ScFormatShell::GetStyleState( SfxItemSet& rSet ) //------------------------------------------------------------------ -void __EXPORT ScFormatShell::ExecuteStyle( SfxRequest& rReq ) +void ScFormatShell::ExecuteStyle( SfxRequest& rReq ) { // Wenn ToolBar vertikal : if ( !rReq.GetArgs() ) @@ -330,8 +330,6 @@ void __EXPORT ScFormatShell::ExecuteStyle( SfxRequest& rReq ) String aStyleName; USHORT nRetMask = 0xffff; -// #96983# only stylist sends focus to sheet -// BOOL bGrabFocus = ( SID_STYLE_APPLY == nSlotId ); pStylePool->SetSearchMask( eFamily, SFXSTYLEBIT_ALL ); @@ -373,7 +371,7 @@ void __EXPORT ScFormatShell::ExecuteStyle( SfxRequest& rReq ) com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > xInfo; xStyles->getByName( pNameItem->GetValue() ) >>= xInfo; ::rtl::OUString aUIName; - xInfo->getPropertyValue( ::rtl::OUString::createFromAscii("DisplayName") ) >>= aUIName; + xInfo->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DisplayName")) ) >>= aUIName; if ( aUIName.getLength() ) rReq.AppendItem( SfxStringItem( SID_STYLE_APPLY, aUIName ) ); } @@ -813,8 +811,6 @@ void __EXPORT ScFormatShell::ExecuteStyle( SfxRequest& rReq ) if ( SFX_STYLE_FAMILY_PARA == eFam ) { -// pDoc->CellStyleChanged( *pStyleSheet, aOldSet ); - SfxItemSet& rNewSet = pStyleSheet->GetItemSet(); BOOL bNumFormatChanged; if ( ScGlobal::CheckWidthInvalidate( @@ -889,13 +885,8 @@ void __EXPORT ScFormatShell::ExecuteStyle( SfxRequest& rReq ) } } -// if ( nRetMask != 0xffff )// Irgendein Wert MUSS geliefert werden JN rReq.SetReturnValue( SfxUInt16Item( nSlotId, nRetMask ) ); -// #96983# only stylist sends focus to sheet -// if ( bGrabFocus ) -// pTabViewShell->GetActiveWin()->GrabFocus(); - if ( bAddUndo && bUndo) pDocSh->GetUndoManager()->AddUndoAction( new ScUndoModifyStyle( pDocSh, eFamily, aOldData, aNewData ) ); @@ -1340,7 +1331,6 @@ void ScFormatShell::ExecuteTextAttr( SfxRequest& rReq ) SVX_HOR_JUSTIFY_LEFT : SVX_HOR_JUSTIFY_STANDARD, SID_H_ALIGNCELL ) ); ExecuteSlot( rReq, GetInterface() ); return; -// APPLY_HOR_JUSTIFY( SVX_HOR_JUSTIFY_LEFT ); //break; case SID_ALIGNRIGHT: @@ -1350,7 +1340,6 @@ void ScFormatShell::ExecuteTextAttr( SfxRequest& rReq ) SVX_HOR_JUSTIFY_RIGHT : SVX_HOR_JUSTIFY_STANDARD, SID_H_ALIGNCELL ) ); ExecuteSlot( rReq, GetInterface() ); return; -// APPLY_HOR_JUSTIFY( SVX_HOR_JUSTIFY_RIGHT ); //break; case SID_ALIGNCENTERHOR: @@ -1360,7 +1349,6 @@ void ScFormatShell::ExecuteTextAttr( SfxRequest& rReq ) SVX_HOR_JUSTIFY_CENTER : SVX_HOR_JUSTIFY_STANDARD, SID_H_ALIGNCELL ) ); ExecuteSlot( rReq, GetInterface() ); return; -// APPLY_HOR_JUSTIFY( SVX_HOR_JUSTIFY_CENTER ); //break; case SID_ALIGNBLOCK: @@ -1370,7 +1358,6 @@ void ScFormatShell::ExecuteTextAttr( SfxRequest& rReq ) SVX_HOR_JUSTIFY_BLOCK : SVX_HOR_JUSTIFY_STANDARD, SID_H_ALIGNCELL ) ); ExecuteSlot( rReq, GetInterface() ); return; -// APPLY_HOR_JUSTIFY( SVX_HOR_JUSTIFY_BLOCK ); //break; case SID_ALIGNTOP: @@ -1380,7 +1367,6 @@ void ScFormatShell::ExecuteTextAttr( SfxRequest& rReq ) SVX_VER_JUSTIFY_TOP : SVX_VER_JUSTIFY_STANDARD, SID_V_ALIGNCELL ) ); ExecuteSlot( rReq, GetInterface() ); return; -// APPLY_VER_JUSTIFY( SVX_VER_JUSTIFY_TOP ); //break; case SID_ALIGNBOTTOM: @@ -1390,7 +1376,6 @@ void ScFormatShell::ExecuteTextAttr( SfxRequest& rReq ) SVX_VER_JUSTIFY_BOTTOM : SVX_VER_JUSTIFY_STANDARD, SID_V_ALIGNCELL ) ); ExecuteSlot( rReq, GetInterface() ); return; -// APPLY_VER_JUSTIFY( SVX_VER_JUSTIFY_BOTTOM ); //break; case SID_ALIGNCENTERVER: @@ -1400,7 +1385,6 @@ void ScFormatShell::ExecuteTextAttr( SfxRequest& rReq ) SVX_VER_JUSTIFY_CENTER : SVX_VER_JUSTIFY_STANDARD, SID_V_ALIGNCELL ) ); ExecuteSlot( rReq, GetInterface() ); return; -// APPLY_VER_JUSTIFY( SVX_VER_JUSTIFY_CENTER ); //break; default: @@ -1410,7 +1394,6 @@ void ScFormatShell::ExecuteTextAttr( SfxRequest& rReq ) } rBindings.Update(); -// rReq.Done(); if( pNewSet ) { @@ -1737,13 +1720,6 @@ void ScFormatShell::GetAttrState( SfxItemSet& rSet ) rSet.Put( rBrushItem, GetPool().GetWhich(nWhich) ); } break; -/* case SID_ATTR_ALIGN_LINEBREAK: - { - const SfxBoolItem& rBreakItem = (const SfxBoolItem&)rAttrSet.Get( ATTR_LINEBREAK ); - rSet.Put( rBreakItem, GetPool().GetWhich(nWhich) ); - } - break; -*/ } nWhich = aIter.NextWhich(); } diff --git a/sc/source/ui/view/galwrap.cxx b/sc/source/ui/view/galwrap.cxx index 2e5f8f831bad..8dde5477814e 100644 --- a/sc/source/ui/view/galwrap.cxx +++ b/sc/source/ui/view/galwrap.cxx @@ -63,7 +63,7 @@ String GalleryGetFullPath() { GalleryExplorer* pGal = SVX_GALLERY(); DBG_ASSERT( pGal, "Wo ist die Gallery?" ); -// return pGal->GetPath().GetFull(); + return pGal->GetURL().GetMainURL(INetURLObject::NO_DECODE); // URL as stored in GraphicLink must be encoded } diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx index f0fc67c22b76..a1f0555d988c 100644 --- a/sc/source/ui/view/gridwin.cxx +++ b/sc/source/ui/view/gridwin.cxx @@ -55,6 +55,7 @@ #include <vcl/hatch.hxx> #include <sot/formats.hxx> #include <sot/clsids.hxx> +#include <sal/macros.h> #include <svx/svdview.hxx> // fuer Command-Handler (COMMAND_INSERTTEXT) #include <editeng/outliner.hxx> // fuer Command-Handler (COMMAND_INSERTTEXT) @@ -234,7 +235,7 @@ ScFilterListBox::ScFilterListBox( Window* pParent, ScGridWindow* pGrid, { } -__EXPORT ScFilterListBox::~ScFilterListBox() +ScFilterListBox::~ScFilterListBox() { if (IsMouseCaptured()) ReleaseMouse(); @@ -251,7 +252,7 @@ void ScFilterListBox::EndInit() bInit = FALSE; } -void __EXPORT ScFilterListBox::LoseFocus() +void ScFilterListBox::LoseFocus() { #ifndef UNX Hide(); @@ -286,13 +287,13 @@ long ScFilterListBox::PreNotify( NotifyEvent& rNEvt ) return nDone ? nDone : ListBox::PreNotify( rNEvt ); } -void __EXPORT ScFilterListBox::Select() +void ScFilterListBox::Select() { ListBox::Select(); SelectHdl(); } -void __EXPORT ScFilterListBox::SelectHdl() +void ScFilterListBox::SelectHdl() { if ( !IsTravelSelect() && !bInit && !bCancelled ) { @@ -475,7 +476,6 @@ ScGridWindow::ScGridWindow( Window* pParent, ScViewData* pData, ScSplitPos eWhic SetBackground(); SetMapMode(pViewData->GetLogicMode(eWhich)); -// EnableDrop(); EnableChildTransparentMode(); SetDialogControlFlags( WINDOW_DLGCTRL_RETURN | WINDOW_DLGCTRL_WANTFOCUS ); @@ -486,7 +486,7 @@ ScGridWindow::ScGridWindow( Window* pParent, ScViewData* pData, ScSplitPos eWhic EnableRTL( FALSE ); } -__EXPORT ScGridWindow::~ScGridWindow() +ScGridWindow::~ScGridWindow() { // #114409# ImpDestroyOverlayObjects(); @@ -496,7 +496,7 @@ __EXPORT ScGridWindow::~ScGridWindow() delete pNoteMarker; } -void __EXPORT ScGridWindow::Resize( const Size& ) +void ScGridWindow::Resize( const Size& ) { // gar nix } @@ -795,11 +795,6 @@ void ScGridWindow::DoScenarioMenue( const ScRange& rScenRange ) } // SetSize spaeter -/* - pFilterBox->SetSelectionMode( SINGLE_SELECTION ); - pFilterBox->SetTabs( nFilterBoxTabs, MapUnit( MAP_APPFONT )); - pFilterBox->SetTabJustify( 1, bLayoutRTL ? AdjustRight : AdjustLeft ); -*/ // ParentSize Abfrage fehlt Size aSize( nSizeX, nHeight ); @@ -859,18 +854,14 @@ void ScGridWindow::DoScenarioMenue( const ScRange& rScenRange ) pFilterBox->SetUpdateMode(TRUE); pFilterBox->GrabFocus(); - // Select erst nach GrabFocus, damit das Focus-Rechteck richtig landet -//! SvLBoxEntry* pSelect = NULL; USHORT nPos = LISTBOX_ENTRY_NOTFOUND; if (aCurrent.Len()) { nPos = pFilterBox->GetEntryPos( aCurrent ); -//! pSelect = pFilterBox->GetEntry( nPos ); } - if (/*!pSelect*/ LISTBOX_ENTRY_NOTFOUND == nPos && pFilterBox->GetEntryCount() > 0 ) + if (LISTBOX_ENTRY_NOTFOUND == nPos && pFilterBox->GetEntryCount() > 0 ) nPos = 0; -//! pSelect = pFilterBox->GetEntry(0); // einer sollte immer selektiert sein - if (/*pSelect*/ LISTBOX_ENTRY_NOTFOUND != nPos ) + if (LISTBOX_ENTRY_NOTFOUND != nPos ) pFilterBox->SelectEntryPos(nPos); pFilterBox->EndInit(); @@ -926,11 +917,6 @@ void ScGridWindow::DoAutoFilterMenue( SCCOL nCol, SCROW nRow, BOOL bDataSelect ) } // SetSize spaeter -/* - pFilterBox->SetSelectionMode( SINGLE_SELECTION ); - pFilterBox->SetTabs( nFilterBoxTabs, MapUnit( MAP_APPFONT )); - pFilterBox->SetTabJustify( 1, bLayoutRTL ? AdjustRight : AdjustLeft ); -*/ BOOL bEmpty = FALSE; TypedScStrCollection aStrings( 128, 128 ); @@ -953,7 +939,7 @@ void ScGridWindow::DoAutoFilterMenue( SCCOL nCol, SCROW nRow, BOOL bDataSelect ) // default entries static const USHORT nDefIDs[] = { SCSTR_ALLFILTER, SCSTR_TOP10FILTER, SCSTR_STDFILTER, SCSTR_EMPTY, SCSTR_NOTEMPTY }; - const USHORT nDefCount = sizeof(nDefIDs) / sizeof(USHORT); + const USHORT nDefCount = SAL_N_ELEMENTS(nDefIDs); for (i=0; i<nDefCount; i++) { String aEntry( (ScResId) nDefIDs[i] ); @@ -1030,7 +1016,6 @@ void ScGridWindow::DoAutoFilterMenue( SCCOL nCol, SCROW nRow, BOOL bDataSelect ) pFilterBox->SetUpdateMode(TRUE); } -//! SvLBoxEntry* pSelect = NULL; USHORT nSelPos = LISTBOX_ENTRY_NOTFOUND; if (!bDataSelect) // AutoFilter: aktiven Eintrag selektieren @@ -1059,7 +1044,6 @@ void ScGridWindow::DoAutoFilterMenue( SCCOL nCol, SCROW nRow, BOOL bDataSelect ) if (pStr) { nSelPos = pFilterBox->GetEntryPos( *pStr ); -//! pSelect = pFilterBox->GetEntry( nPos ); } } else if (rEntry.eOp == SC_TOPVAL && rEntry.pStr && @@ -1130,7 +1114,6 @@ void ScGridWindow::DoAutoFilterMenue( SCCOL nCol, SCROW nRow, BOOL bDataSelect ) } else { -// pFilterBox->Show(); // schon vorne pFilterBox->GrabFocus(); // Select erst nach GrabFocus, damit das Focus-Rechteck richtig landet @@ -1157,17 +1140,7 @@ void ScGridWindow::DoAutoFilterMenue( SCCOL nCol, SCROW nRow, BOOL bDataSelect ) void ScGridWindow::FilterSelect( ULONG nSel ) { - String aString; -/* - SvLBoxEntry* pEntry = pFilterBox->GetEntry( nSel ); - if (pEntry) - { - SvLBoxString* pStringEntry = (SvLBoxString*) pEntry->GetFirstItem( SV_ITEM_ID_LBOXSTRING ); - if ( pStringEntry ) - aString = pStringEntry->GetText(); - } -*/ - aString = pFilterBox->GetEntry( static_cast< USHORT >( nSel ) ); + String aString = pFilterBox->GetEntry( static_cast< USHORT >( nSel ) ); SCCOL nCol = pFilterBox->GetCol(); SCROW nRow = pFilterBox->GetRow(); @@ -1464,14 +1437,13 @@ BOOL ScGridWindow::TestMouse( const MouseEvent& rMEvt, BOOL bAction ) if (!bNewPointer && bAction) { -// SetPointer( POINTER_ARROW ); // in Fu... pViewData->ResetFillMode(); } return bNewPointer; } -void __EXPORT ScGridWindow::MouseButtonDown( const MouseEvent& rMEvt ) +void ScGridWindow::MouseButtonDown( const MouseEvent& rMEvt ) { nNestedButtonState = SC_NESTEDBUTTON_DOWN; @@ -1542,7 +1514,6 @@ void ScGridWindow::HandleMouseButtonDown( const MouseEvent& rMEvt ) if ( !nButtonDown || !bDouble ) // single (first) click is always valid nButtonDown = rMEvt.GetButtons(); // set nButtonDown first, so StopMarking works -// pViewData->GetViewShell()->GetViewFrame()->GetWindow().GrabFocus(); if ( ( bEditMode && pViewData->GetActivePart() == eWhich ) || !bFormulaMode ) GrabFocus(); @@ -1639,7 +1610,6 @@ void ScGridWindow::HandleMouseButtonDown( const MouseEvent& rMEvt ) if ( pViewData->GetActivePart() != eWhich ) pViewData->GetView()->ActivatePart( eWhich ); //! schon oben immer ??? - // CaptureMouse(); StartTracking(); return; } @@ -1660,7 +1630,6 @@ void ScGridWindow::HandleMouseButtonDown( const MouseEvent& rMEvt ) if (nPagebreakMouse) { bPagebreakDrawn = FALSE; - // CaptureMouse(); StartTracking(); PagebreakMove( rMEvt, FALSE ); return; @@ -1671,8 +1640,6 @@ void ScGridWindow::HandleMouseButtonDown( const MouseEvent& rMEvt ) { if ( !bCrossPointer && DrawMouseButtonDown(rMEvt) ) { - //if (DrawHasMarkedObj()) - // pViewData->GetViewShell()->SetDrawShellOrSub(); // Draw-Objekt selektiert return; } @@ -1792,7 +1759,7 @@ void ScGridWindow::HandleMouseButtonDown( const MouseEvent& rMEvt ) } } -void __EXPORT ScGridWindow::MouseButtonUp( const MouseEvent& rMEvt ) +void ScGridWindow::MouseButtonUp( const MouseEvent& rMEvt ) { aCurMousePos = rMEvt.GetPosPixel(); ScDocument* pDoc = pViewData->GetDocument(); @@ -1925,8 +1892,6 @@ void __EXPORT ScGridWindow::MouseButtonUp( const MouseEvent& rMEvt ) SCCOL nEndCol; SCROW nEndRow; pViewData->GetFillData( nStartCol, nStartRow, nEndCol, nEndRow ); -// DBG_ASSERT( nStartCol==pViewData->GetRefStartX() && nStartRow==pViewData->GetRefStartY(), -// "Block falsch fuer AutoFill" ); ScRange aDelRange; BOOL bIsDel = pViewData->GetDelMark( aDelRange ); @@ -2183,7 +2148,6 @@ void __EXPORT ScGridWindow::MouseButtonUp( const MouseEvent& rMEvt ) if ( rMEvt.IsLeft() && pViewData->GetView()->GetSelEngine()->SelMouseButtonUp( rMEvt ) ) { -// rMark.MarkToSimple(); pViewData->GetView()->SelectionChanged(); SfxDispatcher* pDisp = pViewData->GetViewShell()->GetDispatcher(); @@ -2200,8 +2164,6 @@ void __EXPORT ScGridWindow::MouseButtonUp( const MouseEvent& rMEvt ) String aAddr; // CurrentCell if( rMark.IsMarked() ) { -// BOOL bKeep = rMark.IsMultiMarked(); //! wohin damit ??? - ScRange aScRange; rMark.GetMarkArea( aScRange ); aScRange.Format( aAddr, SCR_ABS ); @@ -2245,7 +2207,7 @@ void ScGridWindow::FakeButtonUp() } } -void __EXPORT ScGridWindow::MouseMove( const MouseEvent& rMEvt ) +void ScGridWindow::MouseMove( const MouseEvent& rMEvt ) { aCurMousePos = rMEvt.GetPosPixel(); @@ -2635,7 +2597,7 @@ void lcl_SetTextCursorPos( ScViewData* pViewData, ScSplitPos eWhich, Window* pWi pWin->SetCursorRect( &aEditArea ); } -void __EXPORT ScGridWindow::Command( const CommandEvent& rCEvt ) +void ScGridWindow::Command( const CommandEvent& rCEvt ) { // The command event is send to the window after a possible context // menu from an inplace client is closed. Now we have the chance to @@ -3075,7 +3037,7 @@ static void ClearSingleSelection( ScViewData* pViewData ) } } -void __EXPORT ScGridWindow::KeyInput(const KeyEvent& rKEvt) +void ScGridWindow::KeyInput(const KeyEvent& rKEvt) { // #96965# Cursor control for ref input dialog const KeyCode& rKeyCode = rKEvt.GetKeyCode(); @@ -3211,10 +3173,6 @@ void ScGridWindow::UpdateInputContext() BOOL ScGridWindow::DropScroll( const Point& rMousePos ) { -/* doch auch auf nicht aktiven Views... - if ( !pViewData->IsActive() ) - return FALSE; -*/ SCsCOL nDx = 0; SCsROW nDy = 0; Size aSize = GetOutputSizePixel(); @@ -3238,16 +3196,10 @@ BOOL ScGridWindow::DropScroll( const Point& rMousePos ) if ( nDx != 0 || nDy != 0 ) { -// if (bDragRect) -// pViewData->GetView()->DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, eWhich ); - if ( nDx != 0 ) pViewData->GetView()->ScrollX( nDx, WhichH(eWhich) ); if ( nDy != 0 ) pViewData->GetView()->ScrollY( nDy, WhichV(eWhich) ); - -// if (bDragRect) -// pViewData->GetView()->DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, eWhich ); } return FALSE; @@ -3314,8 +3266,6 @@ sal_Int8 ScGridWindow::AcceptPrivateDrop( const AcceptDropEvent& rEvt ) { if ( rEvt.mbLeaving ) { - // if (bDragRect) - // pViewData->GetView()->DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, eWhich ); bDragRect = FALSE; UpdateDragRectOverlay(); return rEvt.mnAction; @@ -3345,7 +3295,6 @@ sal_Int8 ScGridWindow::AcceptPrivateDrop( const AcceptDropEvent& rEvt ) { if (bDragRect) // Rechteck loeschen { - // pViewData->GetView()->DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, eWhich ); bDragRect = FALSE; UpdateDragRectOverlay(); } @@ -3353,15 +3302,9 @@ sal_Int8 ScGridWindow::AcceptPrivateDrop( const AcceptDropEvent& rEvt ) //! highlight chart? (selection border?) sal_Int8 nRet = rEvt.mnAction; -//! if ( rEvt.GetAction() == DROP_LINK ) -//! bOk = rEvt.SetAction( DROP_COPY ); // can't link onto chart return nRet; } } -//! else -//! if ( rEvt.GetAction() == DROP_MOVE ) -//! rEvt.SetAction( DROP_COPY ); // different doc: default=COPY - if ( rData.pCellTransfer->GetDragSourceFlags() & SC_DROP_TABLE ) // whole sheet? { @@ -3402,7 +3345,6 @@ sal_Int8 ScGridWindow::AcceptPrivateDrop( const AcceptDropEvent& rEvt ) { if (bDragRect) { - // pViewData->GetView()->DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, eWhich ); bDragRect = FALSE; UpdateDragRectOverlay(); } @@ -3520,9 +3462,6 @@ sal_Int8 ScGridWindow::AcceptPrivateDrop( const AcceptDropEvent& rEvt ) nDragStartX+nSizeX-1 != nDragEndX || nDragStartY+nSizeY-1 != nDragEndY || !bDragRect || eDragInsertMode != meDragInsertMode ) { - // if (bDragRect) - // pViewData->GetView()->DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, eWhich ); - nDragStartX = nNewDragX; nDragStartY = nNewDragY; nDragEndX = nDragStartX+nSizeX-1; @@ -3530,8 +3469,6 @@ sal_Int8 ScGridWindow::AcceptPrivateDrop( const AcceptDropEvent& rEvt ) bDragRect = TRUE; meDragInsertMode = eDragInsertMode; - // pViewData->GetView()->DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, eWhich ); - UpdateDragRectOverlay(); } } @@ -3813,8 +3750,6 @@ ULONG lcl_GetDropLinkId( const uno::Reference<datatransfer::XTransferable>& xTra sal_Int8 ScGridWindow::ExecutePrivateDrop( const ExecuteDropEvent& rEvt ) { // hide drop marker - // if (bDragRect) - // pViewData->GetView()->DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, eWhich ); bDragRect = FALSE; UpdateDragRectOverlay(); @@ -4410,7 +4345,6 @@ void ScGridWindow::ScrollPixel( long nDifX, long nDifY ) HideNoteMarker(); bIsInScroll = TRUE; - //BOOL bXor=DrawBeforeScroll(); SetMapMode(MAP_PIXEL); Scroll( nDifX, nDifY, SCROLL_CHILDREN ); @@ -4418,7 +4352,7 @@ void ScGridWindow::ScrollPixel( long nDifX, long nDifY ) UpdateEditViewPos(); - DrawAfterScroll(); //bXor); + DrawAfterScroll(); bIsInScroll = FALSE; } @@ -4566,7 +4500,7 @@ void ScGridWindow::ShowCursor() --nCursorHideCount; } -void __EXPORT ScGridWindow::GetFocus() +void ScGridWindow::GetFocus() { ScTabViewShell* pViewShell = pViewData->GetViewShell(); pViewShell->GotFocus(); @@ -4589,7 +4523,7 @@ void __EXPORT ScGridWindow::GetFocus() Window::GetFocus(); } -void __EXPORT ScGridWindow::LoseFocus() +void ScGridWindow::LoseFocus() { ScTabViewShell* pViewShell = pViewData->GetViewShell(); pViewShell->LostFocus(); @@ -4626,8 +4560,6 @@ BOOL ScGridWindow::HitRangeFinder( const Point& rMouse, BOOL& rCorner, // zusammengefasste (einzeln/Bereich) ??? ScAddress aAddr( nPosX, nPosY, nTab ); -// Point aNext = pViewData->GetScrPos( nPosX+1, nPosY+1, eWhich ); - Point aNext = pViewData->GetScrPos( nPosX, nPosY, eWhich, TRUE ); long nSizeXPix; long nSizeYPix; @@ -5071,7 +5003,6 @@ BOOL ScGridWindow::GetEditUrlOrError( BOOL bSpellErr, const Point& rPos, Point aLogicClick = PixelToLogic(rPos,aEditMode); if ( aLogicEdit.IsInside(aLogicClick) ) { -// aEngine.SetUpdateMode(FALSE); EditView aTempView( &aEngine, this ); aTempView.SetOutputArea( aLogicEdit ); @@ -5143,10 +5074,10 @@ BOOL ScGridWindow::HasScenarioButton( const Point& rPosPixel, ScRange& rScenRang aMarks.FillRangeListWithMarks( &aRanges, FALSE ); - ULONG nRangeCount = aRanges.Count(); - for (ULONG j=0; j<nRangeCount; j++) + size_t nRangeCount = aRanges.size(); + for (size_t j=0; j< nRangeCount; ++j) { - ScRange aRange = *aRanges.GetObject(j); + ScRange aRange = *aRanges[j]; // Szenario-Rahmen immer dann auf zusammengefasste Zellen erweitern, wenn // dadurch keine neuen nicht-ueberdeckten Zellen mit umrandet werden pDoc->ExtendTotalMerge( aRange ); @@ -5267,8 +5198,9 @@ void ScGridWindow::UpdateCopySourceOverlay() ScClipParam& rClipParam = pClipDoc->GetClipParam(); mpOOSelectionBorder = new ::sdr::overlay::OverlayObjectList; - for (ScRange* p = rClipParam.maRanges.First(); p; p = rClipParam.maRanges.Next()) + for ( size_t i = 0; i < rClipParam.maRanges.size(); ++i ) { + ScRange* p = rClipParam.maRanges[i]; if (p->aStart.Tab() != nCurTab) continue; @@ -5637,7 +5569,6 @@ void ScGridWindow::UpdateDragRectOverlay() aScrPos.X() -= 2 * nLayoutSign; aScrPos.Y() -= 2; -// Rectangle aRect( aScrPos, Size( nSizeXPix + 3, nSizeYPix + 3 ) ); Rectangle aRect( aScrPos.X(), aScrPos.Y(), aScrPos.X() + ( nSizeXPix + 2 ) * nLayoutSign, aScrPos.Y() + nSizeYPix + 2 ); if ( bLayoutRTL ) @@ -5673,7 +5604,6 @@ void ScGridWindow::UpdateDragRectOverlay() if(pOverlayManager) { - // Color aHighlight = GetSettings().GetStyleSettings().GetHighlightColor(); std::vector< basegfx::B2DRange > aRanges; const basegfx::B2DHomMatrix aTransform(GetInverseViewTransformation()); @@ -5793,7 +5723,6 @@ void ScGridWindow::UpdateShrinkOverlay() if(pOverlayManager) { - // Color aHighlight = GetSettings().GetStyleSettings().GetHighlightColor(); std::vector< basegfx::B2DRange > aRanges; const basegfx::B2DHomMatrix aTransform(GetInverseViewTransformation()); basegfx::B2DRange aRB(aPixRect.Left(), aPixRect.Top(), aPixRect.Right() + 1, aPixRect.Bottom() + 1); diff --git a/sc/source/ui/view/gridwin2.cxx b/sc/source/ui/view/gridwin2.cxx index dd19b66fcf25..ac0da9f44e25 100644 --- a/sc/source/ui/view/gridwin2.cxx +++ b/sc/source/ui/view/gridwin2.cxx @@ -471,7 +471,7 @@ void ScGridWindow::DPLaunchFieldPopupMenu( const ScDPLabelData& rLabelData = *pDPData->maDPParam.maLabelArray[pDPData->mnDim]; mpDPFieldPopup.reset(new ScDPFieldPopupWindow(this, pViewData->GetDocument())); - mpDPFieldPopup->setName(OUString::createFromAscii("DataPilot field member popup")); + mpDPFieldPopup->setName(OUString(RTL_CONSTASCII_USTRINGPARAM("DataPilot field member popup"))); mpDPFieldPopup->setExtendedData(pDPData.release()); mpDPFieldPopup->setOKAction(new DPFieldPopupOKAction(this)); { @@ -639,8 +639,6 @@ void ScGridWindow::UpdateDragRect( BOOL bShowRange, const Rectangle& rPosRect ) return; // everything unchanged } - // if ( bDragRect ) - // DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, FALSE ); if ( bShowRange ) { nDragStartX = nStartX; @@ -648,7 +646,6 @@ void ScGridWindow::UpdateDragRect( BOOL bShowRange, const Rectangle& rPosRect ) nDragEndX = nEndX; nDragEndY = nEndY; bDragRect = TRUE; - // DrawDragRect( nDragStartX, nDragStartY, nDragEndX, nDragEndY, FALSE ); } else bDragRect = FALSE; @@ -814,8 +811,6 @@ void ScGridWindow::PagebreakMove( const MouseEvent& rMEvt, BOOL bUp ) { if ( bPagebreakDrawn ) // weginvertieren { - // DrawDragRect( aPagebreakDrag.aStart.Col(), aPagebreakDrag.aStart.Row(), - // aPagebreakDrag.aEnd.Col(), aPagebreakDrag.aEnd.Row(), FALSE ); bPagebreakDrawn = FALSE; UpdateDragRectOverlay(); } @@ -922,16 +917,12 @@ void ScGridWindow::PagebreakMove( const MouseEvent& rMEvt, BOOL bUp ) if ( bPagebreakDrawn ) { // weginvertieren - // DrawDragRect( aPagebreakDrag.aStart.Col(), aPagebreakDrag.aStart.Row(), - // aPagebreakDrag.aEnd.Col(), aPagebreakDrag.aEnd.Row(), FALSE ); bPagebreakDrawn = FALSE; } aPagebreakDrag = aDrawRange; if ( !bUp && !bHide ) { // hininvertieren - // DrawDragRect( aPagebreakDrag.aStart.Col(), aPagebreakDrag.aStart.Row(), - // aPagebreakDrag.aEnd.Col(), aPagebreakDrag.aEnd.Row(), FALSE ); bPagebreakDrawn = TRUE; } UpdateDragRectOverlay(); diff --git a/sc/source/ui/view/gridwin3.cxx b/sc/source/ui/view/gridwin3.cxx index 4940fba35f82..20a889e391b1 100644 --- a/sc/source/ui/view/gridwin3.cxx +++ b/sc/source/ui/view/gridwin3.cxx @@ -287,19 +287,6 @@ MapMode ScGridWindow::GetDrawMapMode( BOOL bForce ) return aDrawMode; } -//BOOL ScGridWindow::DrawBeforeScroll() -//{ -// ScDrawView* pDrView = pViewData->GetView()->GetScDrawView(); -// -// BOOL bXor = FALSE; -// if (pDrView) -// { -// bXor=pDrView->IsShownXorVisible(this); -// if (bXor) pDrView->HideShownXor(this); -// } -// return bXor; -//} - void ScGridWindow::DrawAfterScroll(/*BOOL bVal*/) { Update(); // immer, damit das Verhalten mit/ohne DrawingLayer gleich ist @@ -307,28 +294,12 @@ void ScGridWindow::DrawAfterScroll(/*BOOL bVal*/) ScDrawView* pDrView = pViewData->GetView()->GetScDrawView(); if (pDrView) { - //if (bVal) - // pDrView->ShowShownXor(this); - OutlinerView* pOlView = pDrView->GetTextEditOutlinerView(); if (pOlView && pOlView->GetWindow() == this) pOlView->ShowCursor(FALSE); // ist beim Scrollen weggekommen } } -//void ScGridWindow::DrawMarks() -//{ -// ScDrawView* pDrView = pViewData->GetView()->GetScDrawView(); -// if (pDrView) -// pDrView->DrawMarks(this); -//} - -//BOOL ScGridWindow::NeedDrawMarks() -//{ -// ScDrawView* pDrView = pViewData->GetView()->GetScDrawView(); -// return pDrView && pDrView->IsMarkHdlShown() && pDrView->AreObjectsMarked(); -//} - void ScGridWindow::CreateAnchorHandle(SdrHdlList& rHdl, const ScAddress& rAddress) { ScDrawView* pDrView = pViewData->GetView()->GetScDrawView(); @@ -417,22 +388,6 @@ BOOL ScGridWindow::DrawHasMarkedObj() return p ? p->AreObjectsMarked() : FALSE; } -//void ScGridWindow::DrawStartTimer() -//{ - //ScDrawView* pDrView = pViewData->GetView()->GetScDrawView(); - //if (pDrView) - //{ - /* jetzt in DrawMarks - USHORT nWinNum = pDrView->FindWin(this); - if (nWinNum!=SDRVIEWWIN_NOTFOUND) - pDrView->AfterInitRedraw(nWinNum); - */ - - // pDrView->PostPaint(); - // pDrView->RestartAfterPaintTimer(); - //} -//} - void ScGridWindow::DrawMarkDropObj( SdrObject* pObj ) { ScDrawView* pDrView = pViewData->GetView()->GetScDrawView(); diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx index 66358f6f8907..3a62132f2a8e 100644 --- a/sc/source/ui/view/gridwin4.cxx +++ b/sc/source/ui/view/gridwin4.cxx @@ -84,9 +84,7 @@ void lcl_LimitRect( Rectangle& rRect, const Rectangle& rVisible ) { if ( rRect.Top() < rVisible.Top()-1 ) rRect.Top() = rVisible.Top()-1; -// if ( rRect.Left() < rVisible.Left()-1 ) rRect.Left() = rVisible.Left()-1; if ( rRect.Bottom() > rVisible.Bottom()+1 ) rRect.Bottom() = rVisible.Bottom()+1; -// if ( rRect.Right() > rVisible.Right()+1 ) rRect.Right() = rVisible.Right()+1; // #51122# auch wenn das inner-Rectangle nicht sichtbar ist, muss evtl. // die Titelzeile gezeichnet werden, darum kein Rueckgabewert mehr. @@ -220,10 +218,9 @@ void lcl_DrawScenarioFrames( OutputDevice* pDev, ScViewData* pViewData, ScSplitP BOOL bLayoutRTL = pDoc->IsLayoutRTL( nTab ); long nLayoutSign = bLayoutRTL ? -1 : 1; - USHORT nRangeCount = (USHORT)xRanges->Count(); - for (USHORT j=0; j<nRangeCount; j++) + for (size_t j = 0, n = xRanges->size(); j < n; ++j) { - ScRange aRange = *xRanges->GetObject(j); + ScRange aRange = *(*xRanges)[j]; // Szenario-Rahmen immer dann auf zusammengefasste Zellen erweitern, wenn // dadurch keine neuen nicht-ueberdeckten Zellen mit umrandet werden pDoc->ExtendTotalMerge( aRange ); @@ -297,8 +294,6 @@ void lcl_DrawHighlight( ScOutputData& rOutputData, ScViewData* pViewData, void ScGridWindow::DoInvertRect( const Rectangle& rPixel ) { -// Invert( PixelToLogic(rPixel) ); - if ( rPixel == aInvertRect ) aInvertRect = Rectangle(); // aufheben else @@ -313,7 +308,7 @@ void ScGridWindow::DoInvertRect( const Rectangle& rPixel ) //------------------------------------------------------------------------ -void __EXPORT ScGridWindow::PrePaint() +void ScGridWindow::PrePaint() { // forward PrePaint to DrawingLayer ScTabViewShell* pTabViewShell = pViewData->GetViewShell(); @@ -331,7 +326,7 @@ void __EXPORT ScGridWindow::PrePaint() //------------------------------------------------------------------------ -void __EXPORT ScGridWindow::Paint( const Rectangle& rRect ) +void ScGridWindow::Paint( const Rectangle& rRect ) { //TODO/LATER: how to get environment? Do we need that?! /* @@ -807,11 +802,6 @@ void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMod pContentDev->SetMapMode(MAP_PIXEL); -#ifdef OLD_SELECTION_PAINT - if (pViewData->IsActive()) - aOutputData.DrawMark( this ); -#endif - if ( pViewData->IsRefMode() && nTab >= pViewData->GetRefStartZ() && nTab <= pViewData->GetRefEndZ() ) { Color aRefColor( rColorCfg.GetColorValue(svtools::CALCREFERENCE).nColor ); @@ -1373,41 +1363,6 @@ BOOL ScGridWindow::IsAutoFilterActive( SCCOL nCol, SCROW nRow, SCTAB nTab ) return ( bSimpleQuery && bColumnFound ); } -void ScGridWindow::DrawComboButton( const Point& rCellPos, - long nCellSizeX, - long nCellSizeY, - BOOL bArrowState, - BOOL bBtnIn ) -{ - Point aScrPos = rCellPos; - Size aBtnSize = aComboButton.GetSizePixel(); - - if ( nCellSizeX < aBtnSize.Width() || nCellSizeY < aBtnSize.Height() ) - { - if ( nCellSizeX < aBtnSize.Width() ) - aBtnSize.Width() = nCellSizeX; - - if ( nCellSizeY < aBtnSize.Height() ) - aBtnSize.Height() = nCellSizeY; - - aComboButton.SetSizePixel( aBtnSize ); - } - - BOOL bLayoutRTL = pViewData->GetDocument()->IsLayoutRTL( pViewData->GetTabNo() ); - - if ( bLayoutRTL ) - aScrPos.X() -= nCellSizeX - 1; - else - aScrPos.X() += nCellSizeX - aBtnSize.Width(); - aScrPos.Y() += nCellSizeY - aBtnSize.Height(); - - aComboButton.SetPosPixel( aScrPos ); - - HideCursor(); - aComboButton.Draw( bArrowState, bBtnIn ); - ShowCursor(); -} - void ScGridWindow::InvertSimple( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, BOOL bTestMerge, BOOL bRepeat ) { @@ -1471,7 +1426,6 @@ void ScGridWindow::InvertSimple( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, if (bTestMerge) if (bWasHidden) // auf versteckte zusammengefasste testen { -// --nY; // nY geaendert -> vorherige zeichnen bDoHidden = TRUE; bDoRow = TRUE; } @@ -1756,8 +1710,6 @@ void ScGridWindow::GetSelectionRects( ::std::vector< Rectangle >& rPixelRects ) nScrY = nEndY + 1; } } - -// aInvert.Flush(); // before restoring MapMode } // ------------------------------------------------------------------------- diff --git a/sc/source/ui/view/hdrcont.cxx b/sc/source/ui/view/hdrcont.cxx index 1e2d45e4c091..becc94882f5d 100644 --- a/sc/source/ui/view/hdrcont.cxx +++ b/sc/source/ui/view/hdrcont.cxx @@ -291,12 +291,10 @@ void ScHeaderControl::Paint( const Rectangle& rRect ) long nLayoutSign = bLayoutRTL ? -1 : 1; BOOL bMirrored = IsMirrored(); -// const FunctionSet* pFuncSet = pSelEngine->GetFunctionSet(); String aString; USHORT nBarSize; Point aScrPos; Size aTextSize; -// Size aSize = GetOutputSizePixel(); if (bVertical) nBarSize = (USHORT) GetSizePixel().Width(); @@ -329,7 +327,6 @@ void ScHeaderControl::Paint( const Rectangle& rRect ) // aeussere Linien komplett durchzeichnen // Zuerst Ende der letzten Zelle finden -// long nLineEnd = -1; long nLineEnd = nInitScrPos - nLayoutSign; for (SCCOLROW i=nPos; i<nSize; i++) @@ -622,8 +619,6 @@ SCCOLROW ScHeaderControl::GetMousePos( const MouseEvent& rMEvt, BOOL& rBorder ) { SCCOLROW nEntryNo = nCount + nPos; -// nScrPos = GetScrPos( nEntryNo ) - 1; - if (nEntryNo > nSize) nScrPos = nEndPos + nLayoutSign; else @@ -716,7 +711,6 @@ void ScHeaderControl::MouseButtonDown( const MouseEvent& rMEvt ) ShowDragHelp(); DrawInvert( nDragPos ); - // CaptureMouse(); StartTracking(); bDragging = TRUE; bDragMoved = FALSE; @@ -758,8 +752,6 @@ void ScHeaderControl::MouseButtonUp( const MouseEvent& rMEvt ) SetMarking( FALSE ); bIgnoreMove = FALSE; -// BOOL bFound; -// SCCOLROW nHitNo = GetMousePos( rMEvt, bFound ); if ( bDragging ) { @@ -893,13 +885,9 @@ void ScHeaderControl::Command( const CommandEvent& rCEvt ) sal::static_int_cast<SCCOL>(nPos), MAXROW, nTab ); // see if any part of the range is already selected - BOOL bSelected = FALSE; ScRangeList aRanges; pViewData->GetMarkData().FillRangeListWithMarks( &aRanges, FALSE ); - ULONG nRangeCount = aRanges.Count(); - for (ULONG i=0; i<nRangeCount && !bSelected; i++) - if ( aRanges.GetObject(i)->Intersects( aNewRange ) ) - bSelected = TRUE; + bool bSelected = aRanges.Intersects(aNewRange); // select the range if no part of it was selected if ( !bSelected ) diff --git a/sc/source/ui/view/hintwin.cxx b/sc/source/ui/view/hintwin.cxx index 301ba616e769..0343ccfd7e00 100644 --- a/sc/source/ui/view/hintwin.cxx +++ b/sc/source/ui/view/hintwin.cxx @@ -92,7 +92,7 @@ ScHintWindow::~ScHintWindow() } -void __EXPORT ScHintWindow::Paint( const Rectangle& /* rRect */ ) +void ScHintWindow::Paint( const Rectangle& /* rRect */ ) { SetFont( aHeadFont ); DrawText( Point(HINT_MARGIN,HINT_MARGIN), aTitle ); diff --git a/sc/source/ui/view/makefile.mk b/sc/source/ui/view/makefile.mk index 3b1d570f71c0..f00db352cebe 100644 --- a/sc/source/ui/view/makefile.mk +++ b/sc/source/ui/view/makefile.mk @@ -39,22 +39,67 @@ TARGET=view SLOFILES = \ + $(EXCEPTIONSFILES) \ + $(SLO)$/cellmergeoption.obj + +EXCEPTIONSFILES= \ + $(SLO)$/auditsh.obj \ + $(SLO)$/cellsh.obj \ + $(SLO)$/cellsh1.obj \ + $(SLO)$/cellsh2.obj \ + $(SLO)$/cellsh3.obj \ + $(SLO)$/cellsh4.obj \ + $(SLO)$/colrowba.obj \ + $(SLO)$/dbfunc.obj \ + $(SLO)$/dbfunc2.obj \ + $(SLO)$/dbfunc3.obj \ + $(SLO)$/dbfunc4.obj \ + $(SLO)$/drawutil.obj \ + $(SLO)$/drawvie2.obj \ + $(SLO)$/drawvie3.obj \ + $(SLO)$/drawvie4.obj \ + $(SLO)$/drawview.obj \ + $(SLO)$/editsh.obj \ + $(SLO)$/formatsh.obj \ + $(SLO)$/galwrap.obj \ + $(SLO)$/gridmerg.obj \ + $(SLO)$/gridwin.obj \ + $(SLO)$/gridwin2.obj \ + $(SLO)$/gridwin3.obj \ + $(SLO)$/gridwin4.obj \ + $(SLO)$/gridwin5.obj \ + $(SLO)$/hdrcont.obj \ + $(SLO)$/hintwin.obj \ + $(SLO)$/imapwrap.obj \ + $(SLO)$/invmerge.obj \ + $(SLO)$/notemark.obj \ + $(SLO)$/olinewin.obj \ + $(SLO)$/olkact.obj \ + $(SLO)$/output.obj \ + $(SLO)$/output2.obj \ + $(SLO)$/output3.obj \ + $(SLO)$/overlayobject.obj \ + $(SLO)$/pfuncache.obj \ + $(SLO)$/pgbrksh.obj \ + $(SLO)$/pivotsh.obj \ + $(SLO)$/preview.obj \ + $(SLO)$/prevloc.obj \ + $(SLO)$/prevwsh.obj \ + $(SLO)$/prevwsh2.obj \ + $(SLO)$/printfun.obj \ + $(SLO)$/reffact.obj \ + $(SLO)$/scextopt.obj \ + $(SLO)$/select.obj \ + $(SLO)$/selectionstate.obj \ + $(SLO)$/spelldialog.obj \ + $(SLO)$/spelleng.obj \ + $(SLO)$/tabcont.obj \ + $(SLO)$/tabsplit.obj \ $(SLO)$/tabview.obj \ $(SLO)$/tabview2.obj \ $(SLO)$/tabview3.obj \ $(SLO)$/tabview4.obj \ $(SLO)$/tabview5.obj \ - $(SLO)$/viewfunc.obj \ - $(SLO)$/viewfun2.obj \ - $(SLO)$/viewfun3.obj \ - $(SLO)$/viewfun4.obj \ - $(SLO)$/viewfun5.obj \ - $(SLO)$/viewfun6.obj \ - $(SLO)$/viewfun7.obj \ - $(SLO)$/dbfunc.obj \ - $(SLO)$/dbfunc2.obj \ - $(SLO)$/dbfunc3.obj \ - $(SLO)$/dbfunc4.obj \ $(SLO)$/tabvwsh.obj \ $(SLO)$/tabvwsh2.obj \ $(SLO)$/tabvwsh3.obj \ @@ -70,58 +115,16 @@ SLOFILES = \ $(SLO)$/tabvwshf.obj \ $(SLO)$/tabvwshg.obj \ $(SLO)$/tabvwshh.obj \ - $(SLO)$/printfun.obj \ - $(SLO)$/pfuncache.obj \ - $(SLO)$/preview.obj \ - $(SLO)$/prevwsh.obj \ - $(SLO)$/prevwsh2.obj \ - $(SLO)$/prevloc.obj \ - $(SLO)$/editsh.obj \ - $(SLO)$/pivotsh.obj \ - $(SLO)$/auditsh.obj \ - $(SLO)$/gridwin.obj \ - $(SLO)$/gridwin2.obj \ - $(SLO)$/gridwin3.obj \ - $(SLO)$/gridwin4.obj \ - $(SLO)$/gridwin5.obj \ - $(SLO)$/drawview.obj \ - $(SLO)$/drawvie2.obj \ - $(SLO)$/drawvie3.obj \ - $(SLO)$/drawvie4.obj \ - $(SLO)$/drawutil.obj \ - $(SLO)$/output.obj \ - $(SLO)$/output2.obj \ - $(SLO)$/output3.obj \ - $(SLO)$/overlayobject.obj \ - $(SLO)$/gridmerg.obj \ - $(SLO)$/invmerge.obj \ - $(SLO)$/cellmergeoption.obj \ - $(SLO)$/select.obj \ - $(SLO)$/olinewin.obj \ - $(SLO)$/hintwin.obj \ - $(SLO)$/notemark.obj \ - $(SLO)$/tabcont.obj \ - $(SLO)$/tabsplit.obj \ + $(SLO)$/viewdata.obj \ + $(SLO)$/viewfun2.obj \ + $(SLO)$/viewfun3.obj \ + $(SLO)$/viewfun4.obj \ + $(SLO)$/viewfun5.obj \ + $(SLO)$/viewfun6.obj \ + $(SLO)$/viewfun7.obj \ + $(SLO)$/viewfunc.obj \ $(SLO)$/viewutil.obj \ - $(SLO)$/hdrcont.obj \ - $(SLO)$/colrowba.obj \ - $(SLO)$/olkact.obj \ - $(SLO)$/galwrap.obj \ - $(SLO)$/imapwrap.obj \ - $(SLO)$/reffact.obj \ - $(SLO)$/selectionstate.obj \ - $(SLO)$/spelleng.obj \ - $(SLO)$/spelldialog.obj \ - $(SLO)$/waitoff.obj \ - $(SLO)$/cellsh.obj \ - $(SLO)$/cellsh1.obj\ - $(SLO)$/cellsh2.obj\ - $(SLO)$/cellsh3.obj\ - $(SLO)$/cellsh4.obj\ - $(SLO)$/formatsh.obj\ - $(SLO)$/pgbrksh.obj\ - $(SLO)$/viewdata.obj\ - $(SLO)$/scextopt.obj + $(SLO)$/waitoff.obj .IF "$(OS)$(COM)$(CPUNAME)"=="LINUXGCCSPARC" NOOPTFILES= \ @@ -142,29 +145,6 @@ SLOFILES = \ $(SLO)$/tabvwsh2.obj .ENDIF -EXCEPTIONSFILES= \ - $(SLO)$/dbfunc3.obj \ - $(SLO)$/gridwin.obj \ - $(SLO)$/invmerge.obj \ - $(SLO)$/output2.obj \ - $(SLO)$/overlayobject.obj \ - $(SLO)$/pfuncache.obj \ - $(SLO)$/spelldialog.obj \ - $(SLO)$/cellsh1.obj \ - $(SLO)$/drawvie4.obj \ - $(SLO)$/formatsh.obj \ - $(SLO)$/gridwin2.obj \ - $(SLO)$/scextopt.obj \ - $(SLO)$/tabvwshb.obj \ - $(SLO)$/tabvwshf.obj \ - $(SLO)$/viewdata.obj \ - $(SLO)$/viewfunc.obj \ - $(SLO)$/viewfun2.obj \ - $(SLO)$/viewfun3.obj \ - $(SLO)$/viewfun5.obj \ - $(SLO)$/viewfun7.obj \ - $(SLO)$/reffact.obj - # goal seek -O2 diff --git a/sc/source/ui/view/olinewin.cxx b/sc/source/ui/view/olinewin.cxx index 9fd8e497d3b7..1340547e66e1 100644 --- a/sc/source/ui/view/olinewin.cxx +++ b/sc/source/ui/view/olinewin.cxx @@ -165,7 +165,7 @@ void ScOutlineWindow::InitSettings() const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); SetBackground( rStyleSettings.GetFaceColor() ); maLineColor = rStyleSettings.GetButtonTextColor(); - mpSymbols = ScGlobal::GetOutlineSymbols( rStyleSettings.GetHighContrastMode() ); + mpSymbols = ScGlobal::GetOutlineSymbols(); Invalidate(); } @@ -394,7 +394,6 @@ bool ScOutlineWindow::ItemHit( const Point& rPos, size_t& rnLevel, size_t& rnEnt if ( nLevel == SC_OL_NOLEVEL ) return false; -// long nLevelPos = GetLevelPos( nLevel ); long nEntryMousePos = mbHoriz ? rPos.X() : rPos.Y(); // --- level buttons --- @@ -697,7 +696,6 @@ void ScOutlineWindow::Paint( const Rectangle& /* rRect */ ) const ScOutlineEntry* pEntry = pArray->GetEntry( sal::static_int_cast<USHORT>(nLevel), sal::static_int_cast<USHORT>(nEntry) ); SCCOLROW nStart = pEntry->GetStart(); -// SCCOLROW nEnd = pEntry->GetEnd(); // visible range? bool bDraw = (nStartIndex <= nStart) && (nStart <= nEndIndex + 1); diff --git a/sc/source/ui/view/olkact.cxx b/sc/source/ui/view/olkact.cxx index a5f63f5a15bd..8ca1fafa2f8d 100644 --- a/sc/source/ui/view/olkact.cxx +++ b/sc/source/ui/view/olkact.cxx @@ -53,19 +53,15 @@ #define _OUTLINER_HXX #define _PASSWD_HXX #define _PRNDLG_HXX -//#define _POLY_HXX #define _PVRWIN_HXX #define _QUEUE_HXX #define _RULER_HXX #define _SCRWIN_HXX #define _SETBRW_HXX #define _STACK_HXX -//#define _STATUS_HXX *** #define _STDMENU_HXX #define _TABBAR_HXX -//#define _VCBRW_HXX #define _VCTRLS_HXX -//#define _VCSBX_HXX #define _VCONT_HXX #define _VDRWOBJ_HXX @@ -83,29 +79,16 @@ //sfxcore.hxx -//#define _SFXINIMGR_HXX *** -//#define _SFXCFGITEM_HXX -//#define _SFX_PRINTER_HXX #define _SFXGENLINK_HXX #define _SFXHINTPOST_HXX #define _SFXDOCINF_HXX #define _SFXLINKHDL_HXX -//#define _SFX_PROGRESS_HXX //sfxsh.hxx -//#define _SFX_SHELL_HXX -//#define _SFXAPP_HXX -//#define _SFXDISPATCH_HXX -//#define _SFXMSG_HXX *** -//#define _SFXOBJFACE_HXX *** -//#define _SFXREQUEST_HXX #define _SFXMACRO_HXX // SFX -//#define _SFXAPPWIN_HXX *** #define _SFX_SAVEOPT_HXX -//#define _SFX_CHILDWIN_HXX -//#define _SFXCTRLITEM_HXX #define _SFXPRNMON_HXX #define _INTRO_HXX #define _SFXMSGDESCR_HXX @@ -122,72 +105,32 @@ #define _SFXEVENT_HXX //sfxdoc.hxx -//#define _SFX_OBJSH_HXX -//#define _SFX_CLIENTSH_HXX -//#define _SFXDOCINF_HXX -//#define _SFX_OBJFAC_HXX #define _SFX_DOCFILT_HXX -//#define _SFXDOCFILE_HXX *** -//define _VIEWFAC_HXX -//#define _SFXVIEWFRM_HXX -//#define _SFXVIEWSH_HXX -//#define _MDIFRM_HXX *** #define _SFX_IPFRM_HXX -//#define _SFX_INTERNO_HXX //sfxdlg.hxx -//#define _SFXTABDLG_HXX -//#define _BASEDLGS_HXX *** #define _SFX_DINFDLG_HXX #define _SFXDINFEDT_HXX #define _SFX_MGETEMPL_HXX #define _SFX_TPLPITEM_HXX -//#define _SFX_STYLEDLG_HXX #define _NEWSTYLE_HXX -//#define _SFXDOCTEMPL_HXX *** -//#define _SFXDOCTDLG_HXX *** -//#define _SFX_TEMPLDLG_HXX *** -//#define _SFXNEW_HXX *** #define _SFXDOCMAN_HXX -//#define _SFXDOCKWIN_HXX //sfxitems.hxx #define _SFX_WHMAP_HXX #define _ARGS_HXX -//#define _SFXPOOLITEM_HXX -//#define _SFXINTITEM_HXX -//#define _SFXENUMITEM_HXX #define _SFXFLAGITEM_HXX -//#define _SFXSTRITEM_HXX #define _SFXPTITEM_HXX #define _SFXRECTITEM_HXX -//#define _SFXITEMPOOL_HXX -//#define _SFXITEMSET_HXX #define _SFXITEMITER_HXX #define _SFX_WHITER_HXX #define _SFXPOOLCACH_HXX -//#define _AEITEM_HXX #define _SFXRNGITEM_HXX -//#define _SFXSLSTITM_HXX -//#define _SFXSTYLE_HXX - -//xout.hxx -//#define _XENUM_HXX -//#define _XPOLY_HXX -//#define _XATTR_HXX -//#define _XOUTX_HXX -//#define _XPOOL_HXX -//#define _XTABLE_HXX //svdraw.hxx #define _SDR_NOITEMS #define _SDR_NOTOUCH #define _SDR_NOTRANSFORM -//#define _SDR_NOOBJECTS -//#define _SDR_NOVIEWS - - - #define _SFXBASIC_HXX #define _SFX_DOCFILE_HXX @@ -213,21 +156,11 @@ //si #define _SI_NOSBXCONTROLS #define _SI_NOCONTROL -//#define SI_NOITEMS -//#define SI_NODRW -//#define SI_NOOTHERFORMS #define _SIDLL_HXX -//#define _VCSBX_HXX -//#define _VCBRW_HXX -//#define _SVDATTR_HXX <--- der wars #define _SVDXOUT_HXX #define _SVDEC_HXX -//#define _SVDIO_HXX -//#define _SVDLAYER_HXX -//#define _SVDRAG_HXX #define _SVINCVW_HXX -//#define _SV_MULTISEL_HXX #define _SVRTV_HXX #define _SVTABBX_HXX diff --git a/sc/source/ui/view/output.cxx b/sc/source/ui/view/output.cxx index fceb71a335db..ca0248599a29 100644 --- a/sc/source/ui/view/output.cxx +++ b/sc/source/ui/view/output.cxx @@ -453,9 +453,6 @@ void ScOutputData::DrawGrid( BOOL bGrid, BOOL bPage ) if (pThisRowInfo->bChanged && !bHOver) { - //Point aStart( nPosX-nSignedOneX, nPosY ); - //Point aEnd( nPosX-nSignedOneX, nNextY-nOneY ); - //pDev->DrawLine( aStart, aEnd ); aGrid.AddVerLine( nPosX-nSignedOneX, nPosY, nNextY-nOneY ); } nPosY = nNextY; @@ -463,9 +460,6 @@ void ScOutputData::DrawGrid( BOOL bGrid, BOOL bPage ) } else { - //Point aStart( nPosX-nSignedOneX, nScrY ); - //Point aEnd( nPosX-nSignedOneX, nScrY+nScrH-nOneY ); - //pDev->DrawLine( aStart, aEnd ); aGrid.AddVerLine( nPosX-nSignedOneX, nScrY, nScrY+nScrH-nOneY ); } } @@ -556,9 +550,6 @@ void ScOutputData::DrawGrid( BOOL bGrid, BOOL bPage ) } if (!bVOver) { - //Point aStart( nPosX, nPosY-nOneY ); - //Point aEnd( nNextX-nSignedOneX, nPosY-nOneY ); - //pDev->DrawLine( aStart, aEnd ); aGrid.AddHorLine( nPosX, nNextX-nSignedOneX, nPosY-nOneY ); } } @@ -567,9 +558,6 @@ void ScOutputData::DrawGrid( BOOL bGrid, BOOL bPage ) } else { - //Point aStart( nScrX, nPosY-nOneY ); - //Point aEnd( nScrX+nScrW-nOneX, nPosY-nOneY ); - //pDev->DrawLine( aStart, aEnd ); aGrid.AddHorLine( nScrX, nScrX+nScrW-nOneX, nPosY-nOneY ); } } @@ -981,10 +969,6 @@ void ScOutputData::DrawExtraShadow(BOOL bLeft, BOOL bTop, BOOL bRight, BOOL bBot nMaxWidth = pRowInfo[0].pCellInfo[nWx+1].nWidth; } -// Rectangle aRect( Point(nPosX,nPosY), -// Size( pRowInfo[0].pCellInfo[nArrX].nWidth, -// pRowInfo[nArrY].nHeight ) ); - // rectangle is in logical orientation Rectangle aRect( nPosX, nPosY, nPosX + ( nThisWidth - 1 ) * nLayoutSign, diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx index e744023568da..ddadb77e1b95 100644 --- a/sc/source/ui/view/output2.cxx +++ b/sc/source/ui/view/output2.cxx @@ -190,6 +190,7 @@ ScDrawStringsVars::ScDrawStringsVars(ScOutputData* pData, BOOL bPTL) : pOutput ( pData ), pPattern ( NULL ), pCondSet ( NULL ), + nAscentPixel(0), eAttrOrient ( SVX_ORIENTATION_STANDARD ), eAttrHorJust( SVX_HOR_JUSTIFY_STANDARD ), eAttrVerJust( SVX_VER_JUSTIFY_BOTTOM ), @@ -419,13 +420,8 @@ void ScDrawStringsVars::SetPattern( const ScPatternAttr* pNew, const SfxItemSet* // Zahlenformat -// ULONG nOld = nValueFormat; nValueFormat = pPattern->GetNumberFormat( pOutput->pDoc->GetFormatTable(), pCondSet ); -/* s.u. - if (nValueFormat != nOld) - pLastCell = NULL; // immer neu formatieren -*/ // Raender pMargin = (const SvxMarginItem*)&pPattern->GetItem( ATTR_MARGIN, pCondSet ); @@ -458,7 +454,6 @@ void ScDrawStringsVars::SetPatternSimple( const ScPatternAttr* pNew, const SfxIt // Zahlenformat ULONG nOld = nValueFormat; -// nValueFormat = pPattern->GetNumberFormat( pFormatter ); const SfxPoolItem* pFormItem; if ( !pCondSet || pCondSet->GetItemState(ATTR_VALUE_FORMAT,TRUE,&pFormItem) != SFX_ITEM_SET ) pFormItem = &pPattern->GetItem(ATTR_VALUE_FORMAT); @@ -878,11 +873,6 @@ BOOL ScOutputData::GetMergeOrigin( SCCOL nX, SCROW nY, SCSIZE nArrY, else if ( pInfo->bVOverlapped ) bDoMerge = bIsTop; - // weiter solange versteckt -/* if (!bDoMerge) - return FALSE; -*/ - rOverX = nX; rOverY = nY; BOOL bHOver = pInfo->bHOverlapped; @@ -898,14 +888,11 @@ BOOL ScOutputData::GetMergeOrigin( SCCOL nX, SCROW nY, SCSIZE nArrY, if (rOverX >= nX1 && !bHidden) { -// rVirtPosX -= pRowInfo[0].pCellInfo[rOverX+1].nWidth; bHOver = pRowInfo[nArrY].pCellInfo[rOverX+1].bHOverlapped; bVOver = pRowInfo[nArrY].pCellInfo[rOverX+1].bVOverlapped; } else { -// if (!bClipVirt) -// rVirtPosX -= (long) (pDoc->GetColWidth( rOverX, nTab ) * nPPTX); USHORT nOverlap = ((ScMergeFlagAttr*)pDoc->GetAttr( rOverX, rOverY, nTab, ATTR_MERGE_FLAG ))->GetValue(); bHOver = ((nOverlap & SC_MF_HOR) != 0); @@ -928,14 +915,11 @@ BOOL ScOutputData::GetMergeOrigin( SCCOL nX, SCROW nY, SCSIZE nArrY, !pDoc->RowHidden(rOverY, nTab) && pRowInfo[nArrY].nRowNo == rOverY) { -// rVirtPosY -= pRowInfo[nArrY].nHeight; bHOver = pRowInfo[nArrY].pCellInfo[rOverX+1].bHOverlapped; bVOver = pRowInfo[nArrY].pCellInfo[rOverX+1].bVOverlapped; } else { -// if (!bClipVirt) -// rVirtPosY -= (long) (pDoc->GetRowHeight( rOverY, nTab ) * nPPTY); USHORT nOverlap = ((ScMergeFlagAttr*)pDoc->GetAttr( rOverX, rOverY, nTab, ATTR_MERGE_FLAG ))->GetValue(); bHOver = ((nOverlap & SC_MF_HOR) != 0); @@ -1353,7 +1337,6 @@ void ScOutputData::DrawStrings( BOOL bPixelToLogic ) BOOL bWasIdleDisabled = pDoc->IsIdleDisabled(); pDoc->DisableIdle( TRUE ); Size aMinSize = pRefDevice->PixelToLogic(Size(0,100)); // erst darueber wird ausgegeben -// UINT32 nMinHeight = aMinSize.Height() / 200; // 1/2 Pixel ScDrawStringsVars aVars( this, bPixelToLogic ); @@ -1394,7 +1377,6 @@ void ScOutputData::DrawStrings( BOOL bPixelToLogic ) if ( pThisRowInfo->bChanged ) { SCROW nY = pThisRowInfo->nRowNo; -// long nCellHeight = (long) pThisRowInfo->nHeight; long nPosX = nInitPosX; if ( nLoopStartX < nX1 ) nPosX -= pRowInfo[0].pCellInfo[nLoopStartX+1].nWidth * nLayoutSign; @@ -2382,7 +2364,6 @@ void ScOutputData::DrawEdit(BOOL bPixelToLogic) { vcl::PDFExtOutDevData* pPDFData = PTR_CAST( vcl::PDFExtOutDevData, pDev->GetExtOutDevData() ); Size aMinSize = pRefDevice->PixelToLogic(Size(0,100)); // erst darueber wird ausgegeben -// UINT32 nMinHeight = aMinSize.Height() / 200; // 1/2 Pixel ScModule* pScMod = SC_MOD(); sal_Int32 nConfBackColor = pScMod->GetColorConfig().GetColorValue(svtools::DOCCOLOR).nColor; @@ -2415,7 +2396,7 @@ void ScOutputData::DrawEdit(BOOL bPixelToLogic) for (SCSIZE nArrY=0; nArrY+1<nArrCount; nArrY++) // 0 fuer Reste von zusammengefassten { RowInfo* pThisRowInfo = &pRowInfo[nArrY]; -// long nCellHeight = (long) pThisRowInfo->nHeight; + if (nArrY==1) nRowPosY = nScrY; // vorher wird einzeln berechnet if ( pThisRowInfo->bChanged || nArrY==0 ) @@ -3033,7 +3014,6 @@ void ScOutputData::DrawEdit(BOOL bPixelToLogic) short nOriVal = 0; if (aAlignParam.meOrient == SVX_ORIENTATION_TOPBOTTOM) { - // nOriVal = -900; nOriVal = 2700; if (aAlignParam.meHorJust != SVX_HOR_JUSTIFY_BLOCK) { @@ -3638,8 +3618,6 @@ void ScOutputData::DrawRotated(BOOL bPixelToLogic) nEngineWidth = (long) ( nRealHeight / fabs( nSin ) ); } - // BOOL bVClip = ( nEngineHeight > aCellSize.Height() ); - long nClipStartX = nStartX; if (nX<nX1) { diff --git a/sc/source/ui/view/output3.cxx b/sc/source/ui/view/output3.cxx index b5bb920fb209..e98e1c93591d 100644 --- a/sc/source/ui/view/output3.cxx +++ b/sc/source/ui/view/output3.cxx @@ -69,10 +69,8 @@ Point ScOutputData::PrePrintDrawingLayer(long nLogStX, long nLogStY ) aOffset.Y() -= pDoc->GetRowHeight( 0, nY1-1, nTab ); long nDataWidth = 0; - long nDataHeight = 0; for (nCol=nX1; nCol<=nX2; nCol++) nDataWidth += pDoc->GetColWidth( nCol, nTab ); - nDataHeight += pDoc->GetRowHeight( nY1, nY2, nTab ); if ( bLayoutRTL ) aOffset.X() += nDataWidth; @@ -247,7 +245,6 @@ void ScOutputData::DrawSelectiveObjects(const sal_uInt16 nLayer) void ScOutputData::DrawingSingle(const sal_uInt16 nLayer) { BOOL bHad = FALSE; - long nPosY = nScrY; SCSIZE nArrY; for (nArrY=1; nArrY+1<nArrCount; nArrY++) { @@ -265,7 +262,6 @@ void ScOutputData::DrawingSingle(const sal_uInt16 nLayer) DrawSelectiveObjects( nLayer ); bHad = FALSE; } - nPosY += pRowInfo[nArrY].nHeight; } if (bHad) diff --git a/sc/source/ui/view/pivotsh.cxx b/sc/source/ui/view/pivotsh.cxx index f23082e1a041..76ed780c3bb7 100644 --- a/sc/source/ui/view/pivotsh.cxx +++ b/sc/source/ui/view/pivotsh.cxx @@ -155,7 +155,7 @@ void ScPivotShell::Execute( SfxRequest& rReq ) } //------------------------------------------------------------------------ -void __EXPORT ScPivotShell::GetState( SfxItemSet& rSet ) +void ScPivotShell::GetState( SfxItemSet& rSet ) { ScDocShell* pDocSh = pViewShell->GetViewData()->GetDocShell(); ScDocument* pDoc = pDocSh->GetDocument(); diff --git a/sc/source/ui/view/preview.cxx b/sc/source/ui/view/preview.cxx index 3222ef64531c..c17ee98042d0 100644 --- a/sc/source/ui/view/preview.cxx +++ b/sc/source/ui/view/preview.cxx @@ -144,7 +144,7 @@ ScPreview::ScPreview( Window* pParent, ScDocShell* pDocSh, ScPreviewShell* pView } -__EXPORT ScPreview::~ScPreview() +ScPreview::~ScPreview() { delete pDrawView; delete pLocationData; @@ -226,7 +226,6 @@ void ScPreview::CalcPages( SCTAB /*nToWhichTab*/ ) ScDocument* pDoc = pDocShell->GetDocument(); nTabCount = pDoc->GetTableCount(); - //SCTAB nAnz = Min( nTabCount, SCTAB(nToWhichTab+1) ); SCTAB nAnz = nTabCount; SCTAB nStart = nTabsTested; if (!bValid) @@ -320,8 +319,6 @@ void ScPreview::RecalcPages() // nur nPageNo geaendert nTab = i; nTabPage = nPageNo - nThisStart; nTabStart = nThisStart; - -// aPageSize = aPrintFunc.GetPageSize(); } } @@ -400,7 +397,6 @@ void ScPreview::DoPrint( ScPreviewLocationData* pFillLocation ) DBG_ASSERT(nPrinted<=1, "was'n nu los?"); SetMapMode(aMMMode); -// USHORT nPrintZoom = pPrintFunc->GetZoom(); if (nPrinted) // wenn nichts, alles grau zeichnen { @@ -484,7 +480,7 @@ void ScPreview::DoPrint( ScPreviewLocationData* pFillLocation ) } //Issue51656 Add resizeable margin on page preview from maoyg -void __EXPORT ScPreview::Paint( const Rectangle& /* rRect */ ) +void ScPreview::Paint( const Rectangle& /* rRect */ ) { if (!bValid) { @@ -672,7 +668,7 @@ void __EXPORT ScPreview::Paint( const Rectangle& /* rRect */ ) } //Issue51656 Add resizeable margin on page preview from maoyg -void __EXPORT ScPreview::Command( const CommandEvent& rCEvt ) +void ScPreview::Command( const CommandEvent& rCEvt ) { USHORT nCmd = rCEvt.GetCommand(); if ( nCmd == COMMAND_WHEEL || nCmd == COMMAND_STARTAUTOSCROLL || nCmd == COMMAND_AUTOSCROLL ) @@ -688,7 +684,7 @@ void __EXPORT ScPreview::Command( const CommandEvent& rCEvt ) } -void __EXPORT ScPreview::KeyInput( const KeyEvent& rKEvt ) +void ScPreview::KeyInput( const KeyEvent& rKEvt ) { // The + and - keys can't be configured as accelerator entries, so they must be handled directly // (in ScPreview, not ScPreviewShell -> only if the preview window has the focus) @@ -1010,7 +1006,7 @@ void ScPreview::DataChanged( const DataChangedEvent& rDCEvt ) } //Issue51656 Add resizeable margin on page preview from maoyg -void __EXPORT ScPreview::MouseButtonDown( const MouseEvent& rMEvt ) +void ScPreview::MouseButtonDown( const MouseEvent& rMEvt ) { Fraction aPreviewZoom( nZoom, 100 ); Fraction aHorPrevZoom( (long)( 100 * nZoom / pDocShell->GetOutputFactor() ), 10000 ); @@ -1093,7 +1089,7 @@ void __EXPORT ScPreview::MouseButtonDown( const MouseEvent& rMEvt ) } } -void __EXPORT ScPreview::MouseButtonUp( const MouseEvent& rMEvt ) +void ScPreview::MouseButtonUp( const MouseEvent& rMEvt ) { Fraction aPreviewZoom( nZoom, 100 ); Fraction aHorPrevZoom( (long)( 100 * nZoom / pDocShell->GetOutputFactor() ), 10000 ); @@ -1340,7 +1336,7 @@ void __EXPORT ScPreview::MouseButtonUp( const MouseEvent& rMEvt ) ReleaseMouse(); } -void __EXPORT ScPreview::MouseMove( const MouseEvent& rMEvt ) +void ScPreview::MouseMove( const MouseEvent& rMEvt ) { Fraction aPreviewZoom( nZoom, 100 ); Fraction aHorPrevZoom( (long)( 100 * nZoom / pDocShell->GetOutputFactor() ), 10000 ); diff --git a/sc/source/ui/view/prevwsh.cxx b/sc/source/ui/view/prevwsh.cxx index ec316617e20e..f204852f754b 100644 --- a/sc/source/ui/view/prevwsh.cxx +++ b/sc/source/ui/view/prevwsh.cxx @@ -136,7 +136,6 @@ void ScPreviewShell::Construct( Window* pParent ) if (pDrawBC) StartListening(*pDrawBC); -// pPreview->Show(); // wird vom Sfx angezeigt pHorScroll->Show(); pVerScroll->Show(); pCorner->Show(); @@ -172,7 +171,7 @@ ScPreviewShell::ScPreviewShell( SfxViewFrame* pViewFrame, } } -__EXPORT ScPreviewShell::~ScPreviewShell() +ScPreviewShell::~ScPreviewShell() { // #108333#; notify Accessibility that Shell is dying and before destroy all BroadcastAccessibility( SfxSimpleHint( SFX_HINT_DYING ) ); @@ -201,12 +200,12 @@ void ScPreviewShell::InitStartTable(SCTAB nTab) //------------------------------------------------------------------ -String __EXPORT ScPreviewShell::GetDescription() const +String ScPreviewShell::GetDescription() const { return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(" ** Test ** ")); } -Size __EXPORT ScPreviewShell::GetOptimalSizePixel() const +Size ScPreviewShell::GetOptimalSizePixel() const { Size aOptSize(100,100); @@ -242,12 +241,10 @@ Size __EXPORT ScPreviewShell::GetOptimalSizePixel() const return aOptSize; } -void __EXPORT ScPreviewShell::AdjustPosSizePixel( const Point &rPos, const Size &rSize ) +void ScPreviewShell::AdjustPosSizePixel( const Point &rPos, const Size &rSize ) { long nBarW = GetViewFrame()->GetWindow().GetSettings().GetStyleSettings().GetScrollBarSize(); long nBarH = nBarW; -// long nBarW = pVerScroll->GetSizePixel().Width(); -// long nBarH = pHorScroll->GetSizePixel().Height(); Size aOutSize( rSize.Width()-nBarW, rSize.Height()-nBarH ); pPreview->SetPosSizePixel( rPos, aOutSize ); @@ -266,12 +263,12 @@ void __EXPORT ScPreviewShell::AdjustPosSizePixel( const Point &rPos, const Size UpdateScrollBars(); } -void __EXPORT ScPreviewShell::InnerResizePixel( const Point &rOfs, const Size &rSize ) +void ScPreviewShell::InnerResizePixel( const Point &rOfs, const Size &rSize ) { AdjustPosSizePixel( rOfs,rSize ); } -void __EXPORT ScPreviewShell::OuterResizePixel( const Point &rOfs, const Size &rSize ) +void ScPreviewShell::OuterResizePixel( const Point &rOfs, const Size &rSize ) { AdjustPosSizePixel( rOfs,rSize ); } @@ -297,7 +294,6 @@ void ScPreviewShell::UpdateScrollBars() Size aWindowSize = pPreview->GetOutputSize(); Point aOfs = pPreview->GetOffset(); - long nMaxPos; if( pHorScroll ) { @@ -305,7 +301,7 @@ void ScPreviewShell::UpdateScrollBars() pHorScroll->SetLineSize( aWindowSize.Width() / 16 ); pHorScroll->SetPageSize( aWindowSize.Width() ); pHorScroll->SetVisibleSize( aWindowSize.Width() ); - nMaxPos = aPageSize.Width() - aWindowSize.Width(); + long nMaxPos = aPageSize.Width() - aWindowSize.Width(); if ( nMaxPos<0 ) { // page smaller than window -> center (but put scrollbar to 0) @@ -471,17 +467,17 @@ BOOL ScPreviewShell::ScrollCommand( const CommandEvent& rCEvt ) return bDone; } -SfxPrinter* __EXPORT ScPreviewShell::GetPrinter( BOOL bCreate ) +SfxPrinter* ScPreviewShell::GetPrinter( BOOL bCreate ) { return pDocShell->GetPrinter(bCreate); } -USHORT __EXPORT ScPreviewShell::SetPrinter( SfxPrinter *pNewPrinter, USHORT nDiffFlags, bool ) +USHORT ScPreviewShell::SetPrinter( SfxPrinter *pNewPrinter, USHORT nDiffFlags, bool ) { return pDocShell->SetPrinter( pNewPrinter, nDiffFlags ); } -PrintDialog* __EXPORT ScPreviewShell::CreatePrintDialog( Window* pParent ) +PrintDialog* ScPreviewShell::CreatePrintDialog( Window* pParent ) { pDocShell->GetDocument()->SetPrintOptions(); // Optionen aus OFA am Printer setzen (void)GetPrinter(); @@ -525,7 +521,7 @@ SfxTabPage* ScPreviewShell::CreatePrintOptionsPage( Window *pParent, const SfxIt return 0; } -void __EXPORT ScPreviewShell::PreparePrint( PrintDialog* pPrintDialog ) +void ScPreviewShell::PreparePrint( PrintDialog* pPrintDialog ) { SfxViewShell::PreparePrint( pPrintDialog ); @@ -551,7 +547,7 @@ ErrCode ScPreviewShell::DoPrint( SfxPrinter *pPrinter, return nRet; } -USHORT __EXPORT ScPreviewShell::Print( SfxProgress& rProgress, BOOL bIsAPI, PrintDialog* pPrintDialog ) +USHORT ScPreviewShell::Print( SfxProgress& rProgress, BOOL bIsAPI, PrintDialog* pPrintDialog ) { pDocShell->GetDocument()->SetPrintOptions(); // Optionen aus OFA am Printer setzen @@ -575,7 +571,7 @@ USHORT __EXPORT ScPreviewShell::Print( SfxProgress& rProgress, BOOL bIsAPI, Prin } uno::Sequence < beans::PropertyValue > aProps(1); - aProps[0].Name = ::rtl::OUString::createFromAscii( "PrintSheets" ); + aProps[0].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "PrintSheets" )); aProps[0].Value <<= aSheets; SetAdditionalPrintOptions( aProps ); @@ -587,7 +583,7 @@ USHORT __EXPORT ScPreviewShell::Print( SfxProgress& rProgress, BOOL bIsAPI, Prin //------------------------------------------------------------------------ -void __EXPORT ScPreviewShell::Activate(BOOL bMDI) +void ScPreviewShell::Activate(BOOL bMDI) { SfxViewShell::Activate(bMDI); @@ -602,7 +598,7 @@ void __EXPORT ScPreviewShell::Activate(BOOL bMDI) } } -void __EXPORT ScPreviewShell::Deactivate(BOOL bMDI) +void ScPreviewShell::Deactivate(BOOL bMDI) { SfxViewShell::Deactivate(bMDI); @@ -613,7 +609,7 @@ void __EXPORT ScPreviewShell::Deactivate(BOOL bMDI) //------------------------------------------------------------------------ -void __EXPORT ScPreviewShell::Execute( SfxRequest& rReq ) +void ScPreviewShell::Execute( SfxRequest& rReq ) { USHORT nSlot = rReq.GetSlot(); const SfxItemSet* pReqArgs = rReq.GetArgs(); @@ -827,7 +823,7 @@ void __EXPORT ScPreviewShell::Execute( SfxRequest& rReq ) } } -void __EXPORT ScPreviewShell::GetState( SfxItemSet& rSet ) +void ScPreviewShell::GetState( SfxItemSet& rSet ) { pPreview->SetInGetState(TRUE); @@ -955,7 +951,7 @@ void ScPreviewShell::FillFieldData( ScHeaderFieldData& rData ) // eNumType kennt der Dialog selber } -void __EXPORT ScPreviewShell::WriteUserData(String& rData, BOOL /* bBrowse */) +void ScPreviewShell::WriteUserData(String& rData, BOOL /* bBrowse */) { // nZoom // nPageNo @@ -965,7 +961,7 @@ void __EXPORT ScPreviewShell::WriteUserData(String& rData, BOOL /* bBrowse */) rData += String::CreateFromInt32(pPreview->GetPageNo()); } -void __EXPORT ScPreviewShell::ReadUserData(const String& rData, BOOL /* bBrowse */) +void ScPreviewShell::ReadUserData(const String& rData, BOOL /* bBrowse */) { xub_StrLen nCount = rData.GetTokenCount(); if (nCount) @@ -977,7 +973,7 @@ void __EXPORT ScPreviewShell::ReadUserData(const String& rData, BOOL /* bBrowse } } -void __EXPORT ScPreviewShell::WriteUserDataSequence(uno::Sequence < beans::PropertyValue >& rSeq, sal_Bool /* bBrowse */) +void ScPreviewShell::WriteUserDataSequence(uno::Sequence < beans::PropertyValue >& rSeq, sal_Bool /* bBrowse */) { rSeq.realloc(3); beans::PropertyValue* pSeq = rSeq.getArray(); @@ -995,12 +991,11 @@ void __EXPORT ScPreviewShell::WriteUserDataSequence(uno::Sequence < beans::Prope } } -void __EXPORT ScPreviewShell::ReadUserDataSequence(const uno::Sequence < beans::PropertyValue >& rSeq, sal_Bool /* bBrowse */) +void ScPreviewShell::ReadUserDataSequence(const uno::Sequence < beans::PropertyValue >& rSeq, sal_Bool /* bBrowse */) { sal_Int32 nCount(rSeq.getLength()); if (nCount) { - sal_Int32 nTemp = 0; const beans::PropertyValue* pSeq = rSeq.getConstArray(); if(pSeq) { @@ -1009,11 +1004,13 @@ void __EXPORT ScPreviewShell::ReadUserDataSequence(const uno::Sequence < beans:: rtl::OUString sName(pSeq->Name); if(sName.compareToAscii(SC_ZOOMVALUE) == 0) { + sal_Int32 nTemp = 0; if (pSeq->Value >>= nTemp) pPreview->SetZoom(sal_uInt16(nTemp)); } else if (sName.compareToAscii("PageNumber") == 0) { + sal_Int32 nTemp = 0; if (pSeq->Value >>= nTemp) pPreview->SetPageNo(nTemp); } diff --git a/sc/source/ui/view/prevwsh2.cxx b/sc/source/ui/view/prevwsh2.cxx index 6677798f9dcf..f8ec3ae261db 100644 --- a/sc/source/ui/view/prevwsh2.cxx +++ b/sc/source/ui/view/prevwsh2.cxx @@ -42,89 +42,19 @@ #define _TREELIST_HXX #define _CACHESTR_HXX #define _NEW_HXX -//#define _SHL_HXX -//#define _LINK_HXX -//#define _ERRCODE_HXX -//#define _GEN_HXX -//#define _FRACT_HXX -//#define _STRING_HXX -//#define _MTF_HXX -//#define _CONTNR_HXX -//#define _LIST_HXX -//#define _TABLE_HXX #define _DYNARY_HXX -//#define _UNQIDX_HXX #define _SVMEMPOOL_HXX -//#define _UNQID_HXX -//#define _DEBUG_HXX -//#define _DATE_HXX -//#define _TIME_HXX -//#define _DATETIME_HXX -//#define _INTN_HXX -//#define _WLDCRD_HXX -//#define _FSYS_HXX -//#define _STREAM_HXX #define _CACHESTR_HXX -//#define _SV_MULTISEL_HXX //SV -//#define _CLIP_HXX *** #define _CONFIG_HXX #define _CURSOR_HXX #define _FONTDLG_HXX #define _PRVWIN_HXX -//#define _COLOR_HXX -//#define _PAL_HXX -//#define _BITMAP_HXX -//#define _GDIOBJ_HXX -//#define _POINTR_HXX -//#define _ICON_HXX -//#define _IMAGE_HXX -//#define _KEYCOD_HXX -//#define _EVENT_HXX #define _HELP_HXX -//#define _APP_HXX -//#define _MDIAPP_HXX -//#define _TIMER_HXX -//#define _METRIC_HXX -//#define _REGION_HXX -//#define _OUTDEV_HXX -//#define _SYSTEM_HXX -//#define _VIRDEV_HXX -//#define _JOBSET_HXX -//#define _PRINT_HXX -//#define _WINDOW_HXX -//#define _SYSWIN_HXX -//#define _WRKWIN_HXX #define _MDIWIN_HXX -//#define _FLOATWIN_HXX -//#define _DOCKWIN_HXX -//#define _CTRL_HXX -//#define _SCRBAR_HXX -//#define _BUTTON_HXX -//#define _IMAGEBTN_HXX -//#define _FIXED_HXX -//#define _GROUP_HXX -//#define _EDIT_HXX -//#define _COMBOBOX_HXX -//#define _LSTBOX_HXX -//#define _SELENG_HXX *** -//#define _SPLIT_HXX #define _SPIN_HXX -//#define _FIELD_HXX -//#define _MOREBTN_HXX *** -//#define _TOOLBOX_HXX -//#define _STATUS_HXX *** -//#define _DIALOG_HXX -//#define _MSGBOX_HXX -//#define _SYSDLG_HXX -//#define _PRNDLG_HXX #define _COLDLG_HXX -//#define _TABDLG_HXX -//#define _GDIMTF_HXX -//#define _POLY_HXX -//#define _ACCEL_HXX -//#define _GRAPH_HXX #define _SOUND_HXX #if defined WIN @@ -134,48 +64,28 @@ //svtools #define _SCRWIN_HXX #define _RULER_HXX -//#define _TABBAR_HXX -//#define _VALUESET_HXX #define _STDMENU_HXX -//#define _STDCTRL_HXX -//#define _CTRLBOX_HXX #define _CTRLTOOL_HXX #define _EXTATTR_HXX #define _FRM3D_HXX #define _EXTATTR_HXX //SVTOOLS -//#define _SVTREELIST_HXX *** #define _FILTER_HXX -//#define _SVLBOXITM_HXX *** -//#define _SVTREEBOX_HXX *** #define _SVICNVW_HXX #define _SVTABBX_HXX //sfxcore.hxx -//#define _SFXINIMGR_HXX *** -//#define _SFXCFGITEM_HXX -//#define _SFX_PRINTER_HXX #define _SFXGENLINK_HXX #define _SFXHINTPOST_HXX #define _SFXDOCINF_HXX #define _SFXLINKHDL_HXX -//#define _SFX_PROGRESS_HXX //sfxsh.hxx -//#define _SFX_SHELL_HXX -//#define _SFXAPP_HXX -//#define _SFXDISPATCH_HXX -//#define _SFXMSG_HXX *** -//#define _SFXOBJFACE_HXX *** -//#define _SFXREQUEST_HXX #define _SFXMACRO_HXX // SFX -//#define _SFXAPPWIN_HXX *** #define _SFX_SAVEOPT_HXX -//#define _SFX_CHILDWIN_HXX -//#define _SFXCTRLITEM_HXX #define _SFXPRNMON_HXX #define _INTRO_HXX #define _SFXMSGDESCR_HXX @@ -192,69 +102,32 @@ #define _SFXEVENT_HXX //sfxdoc.hxx -//#define _SFX_OBJSH_HXX -//#define _SFX_CLIENTSH_HXX -//#define _SFXDOCINF_HXX -//#define _SFX_OBJFAC_HXX #define _SFX_DOCFILT_HXX -//#define _SFXDOCFILE_HXX *** -//define _VIEWFAC_HXX -//#define _SFXVIEWFRM_HXX -//#define _SFXVIEWSH_HXX -//#define _MDIFRM_HXX *** #define _SFX_IPFRM_HXX -//#define _SFX_INTERNO_HXX //sfxdlg.hxx -//#define _SFXTABDLG_HXX -//#define _BASEDLGS_HXX *** #define _SFX_DINFDLG_HXX #define _SFXDINFEDT_HXX #define _SFX_MGETEMPL_HXX #define _SFX_TPLPITEM_HXX -//#define _SFX_STYLEDLG_HXX #define _NEWSTYLE_HXX -//#define _SFXDOCTEMPL_HXX *** -//#define _SFXDOCTDLG_HXX *** -//#define _SFX_TEMPLDLG_HXX *** -//#define _SFXNEW_HXX *** #define _SFXDOCMAN_HXX #define _SFXDOCKWIN_HXX //sfxitems.hxx #define _SFX_WHMAP_HXX -//#define _ARGS_HXX *** -//#define _SFXPOOLITEM_HXX -//#define _SFXINTITEM_HXX -//#define _SFXENUMITEM_HXX #define _SFXFLAGITEM_HXX -//#define _SFXSTRITEM_HXX #define _SFXPTITEM_HXX #define _SFXRECTITEM_HXX -//#define _SFXITEMPOOL_HXX -//#define _SFXITEMSET_HXX #define _SFXITEMITER_HXX #define _SFX_WHITER_HXX #define _SFXPOOLCACH_HXX -//#define _AEITEM_HXX #define _SFXRNGITEM_HXX -//#define _SFXSLSTITM_HXX -//#define _SFXSTYLE_HXX - -//xout.hxx -//#define _XENUM_HXX -//#define _XPOLY_HXX -//#define _XATTR_HXX -//#define _XOUTX_HXX -//#define _XPOOL_HXX -//#define _XTABLE_HXX //svdraw.hxx #define _SDR_NOITEMS #define _SDR_NOTOUCH #define _SDR_NOTRANSFORM -//#define _SDR_NOOBJECTS -//#define _SDR_NOVIEWS #define _SDR_NOTRANSFORM #define _SDR_NOVIEWMARKER #define _SDR_NODRAGMETHODS @@ -262,20 +135,14 @@ #define _SDR_NOXOUTDEV -//#define SI_NOITEMS -//#define SI_NODRW #define _SI_NOSBXCONTROLS -//#define _VCATTR_HXX #define _VCONT_HXX -//#define _VCSBX_HXX #define _SI_NOOTHERFORMS #define _VCTRLS_HXX -//#define _VCDRWOBJ_HXX #define _SI_NOCONTROL #define _SETBRW_HXX #define _VCBRW_HXX #define _SI_NOSBXCONTROLS -//#define _SIDLL_HXX *** #define _SVX_DAILDLL_HXX #define _SVX_HYPHEN_HXX @@ -310,7 +177,7 @@ // ----------------------------------------------------------------------- -void __EXPORT ScPreviewShell::Notify( SfxBroadcaster&, const SfxHint& rHint ) +void ScPreviewShell::Notify( SfxBroadcaster&, const SfxHint& rHint ) { BOOL bDataChanged = FALSE; diff --git a/sc/source/ui/view/printfun.cxx b/sc/source/ui/view/printfun.cxx index 8180c1b8ea1e..48b6f3b1a3e4 100644 --- a/sc/source/ui/view/printfun.cxx +++ b/sc/source/ui/view/printfun.cxx @@ -519,7 +519,6 @@ void ScPrintFunc::DrawToDev( ScDocument* pDoc, OutputDevice* pDev, double /* nPr Rectangle aLines; ScRange aRange( nX1,nY1,nTab, nX2,nY2,nTab ); -// BOOL bAddLines = pDoc->HasLines( aRange, aLines ); long nTwipsSizeX = 0; for (SCCOL i=nX1; i<=nX2; i++) @@ -553,9 +552,6 @@ void ScPrintFunc::DrawToDev( ScDocument* pDoc, OutputDevice* pDev, double /* nPr if (bEmbed) pDoc->SetEmbedded(aERange); -/* if (!bMetaFile) - pDev->SetMapMode(MAP_PIXEL); -*/ long nScrX = aRect.Left(); long nScrY = aRect.Top(); @@ -798,7 +794,6 @@ long ScPrintFunc::TextHeight( const EditTextObject* pObject ) if (!pObject) return 0; -// pEditEngine->SetPageNo( nTotalPages ); pEditEngine->SetTextNewDefaults( *pObject, *pEditDefaults, FALSE ); return (long) pEditEngine->GetTextHeight(); @@ -1024,8 +1019,6 @@ void ScPrintFunc::InitParam( const ScPrintOptions* pOptions ) // Die Tabellen-Abfrage ist schon in DocShell::Print, hier immer aAreaParam.aPrintArea.aStart.SetTab(nPrintTab); aAreaParam.aPrintArea.aEnd.SetTab(nPrintTab); - -// lcl_LimitRange( aAreaParam.aPrintArea, nPrintTab ); // ganze Zeilen/Spalten... } else if ( pDoc->HasPrintRange() ) { @@ -1183,7 +1176,6 @@ void lcl_DrawGraphic( const SvxBrushItem &rBrush, OutputDevice *pOut, OutputDevi Size aDrawSize = aGrfSize; bool bDraw = TRUE; -// bool bRetouche = TRUE; switch ( ePos ) { case GPOS_LT: aPos = rOrg.TopLeft(); @@ -1218,7 +1210,6 @@ void lcl_DrawGraphic( const SvxBrushItem &rBrush, OutputDevice *pOut, OutputDevi case GPOS_AREA: aPos = rOrg.TopLeft(); aDrawSize = rOrg.GetSize(); -// bRetouche = FALSE; break; case GPOS_TILED: { @@ -1268,7 +1259,6 @@ void lcl_DrawGraphic( const SvxBrushItem &rBrush, OutputDevice *pOut, OutputDevi } bDraw = FALSE; -// bRetouche = FALSE; } break; @@ -1331,12 +1321,10 @@ void ScPrintFunc::DrawBorder( long nScrX, long nScrY, long nScrW, long nScrH, return; // leer // #105733# SvtAccessibilityOptions::GetIsForBorders is no longer used (always assumed TRUE) - BOOL bCellContrast = bUseStyleColor && - Application::GetSettings().GetStyleSettings().GetHighContrastMode(); + BOOL bCellContrast = bUseStyleColor; if ( pBackground && !bCellContrast ) { -// Rectangle aBackRect( Point(nScrX+nLeft, nScrY+nTop), Size(nEffWidth,nEffHeight) ); if (pBackground->GetGraphicPos() != GPOS_NONE) { OutputDevice* pRefDev; @@ -1425,8 +1413,6 @@ void ScPrintFunc::DrawBorder( long nScrX, long nScrY, long nScrW, long nScrH, nScrX+nLeft, nScrY+nTop, 0,0, 0,0, nScaleX, nScaleY ); aOutputData.SetUseStyleColor( bUseStyleColor ); -// pDev->SetMapMode(aTwipMode); - if (pBorderData) aOutputData.DrawFrame(); @@ -1684,42 +1670,25 @@ void ScPrintFunc::PrintArea( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, aOutputData.SetRefDevice( pRefDev ); } -// aOutputData.SetMetaFileMode(TRUE); if( aTableParam.bCellContent ) aOutputData.DrawBackground(); pDev->SetClipRegion( Rectangle( aPos, Size( aOutputData.GetScrW(), aOutputData.GetScrH() ) ) ); pDev->SetClipRegion(); -// aOutputData.SetMetaFileMode(FALSE); if( aTableParam.bCellContent ) { aOutputData.DrawExtraShadow( bShLeft, bShTop, bShRight, bShBottom ); aOutputData.DrawFrame(); aOutputData.DrawStrings(); - - // pDev->SetMapMode(aLogicMode); aOutputData.DrawEdit(FALSE); } -// pDev->SetMapMode(aOffsetMode); if (aTableParam.bGrid) aOutputData.DrawGrid( TRUE, FALSE ); // keine Seitenumbrueche -/*!!!!!!!!!!! Notizen in Tabelle markieren ?????????????????????????? - - if (aTableParam.bNotes) - { - pDev->SetMapMode(aOffsetMode); - aOutputData.PrintNoteMarks(aNotePosList); - pDev->SetMapMode(aLogicMode); - } -*/ - aOutputData.AddPDFNotes(); // has no effect if not rendering PDF with notes enabled -// pDev->SetMapMode(aDrawMode); - // test if all paint parts are hidden, then a paint is not necessary at all if(!bHideAllDrawingLayer) { @@ -1942,7 +1911,6 @@ long ScPrintFunc::DoNotes( long nNoteStart, BOOL bDoPrint, ScPreviewLocationData Font aMarkFont; ScAutoFontColorMode eColorMode = bUseStyleColor ? SC_AUTOCOL_DISPLAY : SC_AUTOCOL_PRINT; ((const ScPatternAttr&)pDoc->GetPool()->GetDefaultItem(ATTR_PATTERN)).GetFont( aMarkFont, eColorMode ); -//? aMarkFont.SetWeight( WEIGHT_BOLD ); pDev->SetFont( aMarkFont ); long nMarkLen = pDev->GetTextWidth( String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("GW99999:"))); @@ -2046,7 +2014,6 @@ long ScPrintFunc::PrintNotes( long nPageNo, long nNoteStart, BOOL bDoPrint, ScPr if ( pPrinter && bDoPrint ) { DBG_ERROR( "StartPage does not exist anymore" ); - // pPrinter->StartPage(); } if ( bDoPrint || pLocationData ) @@ -2070,7 +2037,6 @@ long ScPrintFunc::PrintNotes( long nPageNo, long nNoteStart, BOOL bDoPrint, ScPr if ( pPrinter && bDoPrint ) { DBG_ERROR( "EndPage does not exist anymore" ); - // pPrinter->EndPage(); } return nCount; @@ -2136,7 +2102,6 @@ void ScPrintFunc::PrintPage( long nPageNo, SCCOL nX1, SCROW nY1, SCCOL nX2, SCRO if ( pPrinter && bDoPrint ) { DBG_ERROR( "StartPage does not exist anymore" ); - // pPrinter->StartPage(); } // Kopf- und Fusszeilen (ohne Zentrierung) @@ -2230,9 +2195,6 @@ void ScPrintFunc::PrintPage( long nPageNo, SCCOL nX1, SCROW nY1, SCCOL nX2, SCRO long nStartX = ((long) ( nLeftSpace * nScaleX )); long nStartY = ((long) ( nTopSpace * nScaleY )); -// nStartX -= aOffset.X(); // schon im MapMode -// nStartY -= aOffset.Y(); - long nInnerStartX = nStartX; long nInnerStartY = nStartY; if (pBorderItem) @@ -2421,7 +2383,6 @@ void ScPrintFunc::PrintPage( long nPageNo, SCCOL nX1, SCROW nY1, SCCOL nX2, SCRO if ( pPrinter && bDoPrint ) { DBG_ERROR( "EndPage does not exist anymore" ); - // pPrinter->EndPage(); } aLastSourceRange = ScRange( nX1, nY1, nPrintTab, nX2, nY2, nPrintTab ); @@ -2567,7 +2528,6 @@ long ScPrintFunc::CountPages() // setzt auch nPagesX, n } else { -// nZoom = 100; // nZoom auf letztem Wert stehenlassen !!! nPagesX = nPagesY = nTotalY = 0; return 0; } @@ -2647,8 +2607,6 @@ void ScPrintFunc::InitModes() // aus nZoom etc. die MapModes setze aOffset = Point( aSrcOffset.X()*100/nZoom, aSrcOffset.Y()*100/nZoom ); long nEffZoom = nZoom * (long) nManualZoom; - -// nScaleX = nScaleY = 1.0; // Ausgabe in Twips nScaleX = nScaleY = HMM_PER_TWIPS; // Ausgabe in 1/100 mm Fraction aZoomFract( nEffZoom,10000 ); diff --git a/sc/source/ui/view/reffact.cxx b/sc/source/ui/view/reffact.cxx index 21d66c5a39be..58be3b960b54 100644 --- a/sc/source/ui/view/reffact.cxx +++ b/sc/source/ui/view/reffact.cxx @@ -45,9 +45,7 @@ #include "acredlin.hxx" #include "simpref.hxx" #include "scmod.hxx" -//<!--Added by PengYunQuan for Validity Cell Range Picker #include "validate.hxx" -//<!--Added by PengYunQuan for Validity Cell Range Picker // ----------------------------------------------------------------------- @@ -72,10 +70,8 @@ SFX_IMPL_CHILDWINDOW(ScFunctionDlgWrapper, SID_OPENDLG_FUNCTION ) SFX_IMPL_CHILDWINDOW(ScEditFunctionDlgWrapper, SID_OPENDLG_EDITFUNCTION ) SFX_IMPL_CHILDWINDOW(ScArgumentDlgWrapper, SID_OPENDLG_ARGUMENT ) */ -//<!--Added by PengYunQuan for Validity Cell Range Picker -//SFX_IMPL_MODELESSDIALOG(ScValidityRefChildWin, SID_VALIDITY_REFERENCE ) SFX_IMPL_CHILDWINDOW(ScValidityRefChildWin, SID_VALIDITY_REFERENCE) -SfxChildWinInfo __EXPORT ScValidityRefChildWin::GetInfo() const +SfxChildWinInfo ScValidityRefChildWin::GetInfo() const { SfxChildWinInfo anInfo = SfxChildWindow::GetInfo(); @@ -92,7 +88,6 @@ SfxChildWinInfo __EXPORT ScValidityRefChildWin::GetInfo() const } namespace { ScTabViewShell * lcl_GetTabViewShell( SfxBindings *pBindings ); } -//<!--Added by PengYunQuan for Validity Cell Range Picker #define IMPL_CHILD_CTOR(Class,sid) \ Class::Class( Window* pParentP, \ @@ -101,7 +96,6 @@ namespace { ScTabViewShell * lcl_GetTabViewShell( SfxBindings *pBindings ); } SfxChildWinInfo* pInfo ) \ : SfxChildWindow(pParentP, nId) \ { \ - /*//<!--Added by PengYunQuan for Validity Cell Range Picker*/\ /************************************************************************************/\ /* When a new document is creating, the SfxViewFrame may be ready, */\ /* But the ScTabViewShell may have not been activated yet. In this */\ @@ -109,7 +103,6 @@ namespace { ScTabViewShell * lcl_GetTabViewShell( SfxBindings *pBindings ); } /* and we should lcl_GetTabViewShell( p ) instead of SfxViewShell::Current() */\ /************************************************************************************/\ ScTabViewShell* pViewShell = lcl_GetTabViewShell( p ); \ - /*//-->Added by PengYunQuan for Validity Cell Range Picker*/\ if (!pViewShell) \ pViewShell = PTR_CAST( ScTabViewShell, SfxViewShell::Current() ); \ DBG_ASSERT( pViewShell, "missing view shell :-(" ); \ @@ -218,8 +211,6 @@ ScSimpleRefDlgWrapper::ScSimpleRefDlgWrapper( Window* pParentP, SfxChildWinInfo* pInfo ) : SfxChildWindow(pParentP, nId) { -// ScTabViewShell* pViewShell = -// PTR_CAST( ScTabViewShell, SfxViewShell::Current() ); ScTabViewShell* pViewShell = NULL; SfxDispatcher* pDisp = p->GetDispatcher(); @@ -363,30 +354,7 @@ void ScAcceptChgDlgWrapper::ReInitDlg() IMPL_CHILD_CTOR( ScHighlightChgDlgWrapper, FID_CHG_SHOW ) -/*------------------------------------------------------------------------*/ -/*@@@ - //------------------------------------------------------------------------- - // ScFunctionDlgWrapper - //------------------------------------------------------------------------- - IMPL_CHILD_CTOR( ScFunctionDlgWrapper, SID_OPENDLG_FUNCTION ) - - //------------------------------------------------------------------------- - // ScEditFunctionDlgWrapper - //------------------------------------------------------------------------- - - IMPL_CHILD_CTOR( ScEditFunctionDlgWrapper, SID_OPENDLG_EDITFUNCTION ) - - //------------------------------------------------------------------------- - // ScArgumentDlgWrapper - //------------------------------------------------------------------------- - - IMPL_CHILD_CTOR( ScArgumentDlgWrapper, SID_OPENDLG_ARGUMENT ) -@@@*/ -/*------------------------------------------------------------------------*/ - - -//<!--Added by PengYunQuan for Validity Cell Range Picker namespace { ScTabViewShell * lcl_GetTabViewShell( SfxBindings *pBindings ) @@ -419,8 +387,6 @@ ScValidityRefChildWin::ScValidityRefChildWin( Window* pParentP, DBG_ASSERT( pViewShell, "missing view shell :-(" ); \ if (pViewShell && !pWindow) \ pViewShell->GetViewFrame()->SetChildWindow( nId, FALSE ); \ - else if( pWindow /*&& pWindow->ISA(ScValidationDlg)*/ ) - {}//pWindow = new Window( pParentP, WB_HIDE ); if( pWindow ) m_pSavedWndParent = pWindow->GetParent(); } @@ -432,6 +398,5 @@ ScValidityRefChildWin::~ScValidityRefChildWin() if( m_bFreeWindowLock ) pWindow = NULL; } -//-->Added by PengYunQuan for Validity Cell Range Picker /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/view/select.cxx b/sc/source/ui/view/select.cxx index 52139ccb8f04..8d726e002c3d 100644 --- a/sc/source/ui/view/select.cxx +++ b/sc/source/ui/view/select.cxx @@ -35,6 +35,7 @@ #include <tools/urlobj.hxx> #include <vcl/sound.hxx> +#include <vcl/svapp.hxx> #include <sfx2/docfile.hxx> #include "select.hxx" @@ -46,6 +47,8 @@ #include "docsh.hxx" #include "tabprotection.hxx" +#define SC_SELENG_REFMODE_UPDATE_INTERVAL_MIN 65 + extern USHORT nScFillModeMouseModifier; // global.cxx using namespace com::sun::star; @@ -78,6 +81,83 @@ ScSplitPos ScViewFunctionSet::GetWhich() return pViewData->GetActivePart(); } +ULONG ScViewFunctionSet::CalcUpdateInterval( const Size& rWinSize, const Point& rEffPos, + bool bLeftScroll, bool bTopScroll, bool bRightScroll, bool bBottomScroll ) +{ + ULONG nUpdateInterval = SELENG_AUTOREPEAT_INTERVAL_MAX; + Window* pWin = pEngine->GetWindow(); + Rectangle aScrRect = pWin->GetDesktopRectPixel(); + Point aRootPos = pWin->OutputToAbsoluteScreenPixel(Point(0,0)); + if (bRightScroll) + { + double nWinRight = rWinSize.getWidth() + aRootPos.getX(); + double nMarginRight = aScrRect.GetWidth() - nWinRight; + double nHOffset = rEffPos.X() - rWinSize.Width(); + double nHAccelRate = nHOffset / nMarginRight; + + if (nHAccelRate > 1.0) + nHAccelRate = 1.0; + + nUpdateInterval = static_cast<ULONG>(SELENG_AUTOREPEAT_INTERVAL_MAX*(1.0 - nHAccelRate)); + } + + if (bLeftScroll) + { + double nMarginLeft = aRootPos.getX(); + double nHOffset = -rEffPos.X(); + double nHAccelRate = nHOffset / nMarginLeft; + + if (nHAccelRate > 1.0) + nHAccelRate = 1.0; + + ULONG nTmp = static_cast<ULONG>(SELENG_AUTOREPEAT_INTERVAL_MAX*(1.0 - nHAccelRate)); + if (nUpdateInterval > nTmp) + nUpdateInterval = nTmp; + } + + if (bBottomScroll) + { + double nWinBottom = rWinSize.getHeight() + aRootPos.getY(); + double nMarginBottom = aScrRect.GetHeight() - nWinBottom; + double nVOffset = rEffPos.Y() - rWinSize.Height(); + double nVAccelRate = nVOffset / nMarginBottom; + + if (nVAccelRate > 1.0) + nVAccelRate = 1.0; + + ULONG nTmp = static_cast<ULONG>(SELENG_AUTOREPEAT_INTERVAL_MAX*(1.0 - nVAccelRate)); + if (nUpdateInterval > nTmp) + nUpdateInterval = nTmp; + } + + if (bTopScroll) + { + double nMarginTop = aRootPos.getY(); + double nVOffset = -rEffPos.Y(); + double nVAccelRate = nVOffset / nMarginTop; + + if (nVAccelRate > 1.0) + nVAccelRate = 1.0; + + ULONG nTmp = static_cast<ULONG>(SELENG_AUTOREPEAT_INTERVAL_MAX*(1.0 - nVAccelRate)); + if (nUpdateInterval > nTmp) + nUpdateInterval = nTmp; + } + +#ifdef WNT + ScTabViewShell* pViewShell = pViewData->GetViewShell(); + bool bRefMode = pViewShell && pViewShell->IsRefInputMode(); + if (bRefMode && nUpdateInterval < SC_SELENG_REFMODE_UPDATE_INTERVAL_MIN) + // Lower the update interval during ref mode, because re-draw can be + // expensive on Windows. Making this interval too small would queue up + // the scroll/paint requests which would cause semi-infinite + // scrolls even after the mouse cursor is released. We don't have + // this problem on Linux. + nUpdateInterval = SC_SELENG_REFMODE_UPDATE_INTERVAL_MIN; +#endif + return nUpdateInterval; +} + void ScViewFunctionSet::SetSelectionEngine( ScViewSelectionEngine* pSelEngine ) { pEngine = pSelEngine; @@ -85,7 +165,7 @@ void ScViewFunctionSet::SetSelectionEngine( ScViewSelectionEngine* pSelEngine ) // Drag & Drop -void __EXPORT ScViewFunctionSet::BeginDrag() +void ScViewFunctionSet::BeginDrag() { SCTAB nTab = pViewData->GetTabNo(); @@ -160,7 +240,7 @@ void __EXPORT ScViewFunctionSet::BeginDrag() // Selection -void __EXPORT ScViewFunctionSet::CreateAnchor() +void ScViewFunctionSet::CreateAnchor() { if (bAnchor) return; @@ -215,7 +295,7 @@ void ScViewFunctionSet::SetAnchor( SCCOL nPosX, SCROW nPosY ) bAnchor = TRUE; } -void __EXPORT ScViewFunctionSet::DestroyAnchor() +void ScViewFunctionSet::DestroyAnchor() { BOOL bRefMode = SC_MOD()->IsFormulaMode(); if (bRefMode) @@ -231,7 +311,7 @@ void ScViewFunctionSet::SetAnchorFlag( BOOL bSet ) bAnchor = bSet; } -BOOL __EXPORT ScViewFunctionSet::SetCursorAtPoint( const Point& rPointPixel, BOOL /* bDontSelectAtCursor */ ) +BOOL ScViewFunctionSet::SetCursorAtPoint( const Point& rPointPixel, BOOL /* bDontSelectAtCursor */ ) { if ( bDidSwitch ) { @@ -255,10 +335,11 @@ BOOL __EXPORT ScViewFunctionSet::SetCursorAtPoint( const Point& rPointPixel, BOO // Scrolling Size aWinSize = pEngine->GetWindow()->GetOutputSizePixel(); - BOOL bRightScroll = ( aEffPos.X() >= aWinSize.Width() ); - BOOL bBottomScroll = ( aEffPos.Y() >= aWinSize.Height() ); - BOOL bNegScroll = ( aEffPos.X() < 0 || aEffPos.Y() < 0 ); - BOOL bScroll = bRightScroll || bBottomScroll || bNegScroll; + bool bRightScroll = ( aEffPos.X() >= aWinSize.Width() ); + bool bLeftScroll = ( aEffPos.X() < 0 ); + bool bBottomScroll = ( aEffPos.Y() >= aWinSize.Height() ); + bool bTopScroll = ( aEffPos.Y() < 0 ); + bool bScroll = bRightScroll || bBottomScroll || bLeftScroll || bTopScroll; SCsCOL nPosX; SCsROW nPosY; @@ -311,6 +392,19 @@ BOOL __EXPORT ScViewFunctionSet::SetCursorAtPoint( const Point& rPointPixel, BOO } } + if (bScroll) + { + // Adjust update interval based on how far the mouse pointer is from the edge. + ULONG nUpdateInterval = CalcUpdateInterval( + aWinSize, aEffPos, bLeftScroll, bTopScroll, bRightScroll, bBottomScroll); + pEngine->SetUpdateInterval(nUpdateInterval); + } + else + { + // Don't forget to reset the interval when not scrolling! + pEngine->SetUpdateInterval(SELENG_AUTOREPEAT_INTERVAL); + } + pViewData->ResetOldCursor(); return SetCursorAtCell( nPosX, nPosY, bScroll ); } @@ -612,7 +706,7 @@ BOOL ScViewFunctionSet::SetCursorAtCell( SCsCOL nPosX, SCsROW nPosY, BOOL bScrol return TRUE; } -BOOL __EXPORT ScViewFunctionSet::IsSelectionAtPoint( const Point& rPointPixel ) +BOOL ScViewFunctionSet::IsSelectionAtPoint( const Point& rPointPixel ) { BOOL bRefMode = SC_MOD()->IsFormulaMode(); if (bRefMode) @@ -633,12 +727,12 @@ BOOL __EXPORT ScViewFunctionSet::IsSelectionAtPoint( const Point& rPointPixel ) return FALSE; } -void __EXPORT ScViewFunctionSet::DeselectAtPoint( const Point& /* rPointPixel */ ) +void ScViewFunctionSet::DeselectAtPoint( const Point& /* rPointPixel */ ) { // gibt's nicht } -void __EXPORT ScViewFunctionSet::DeselectAll() +void ScViewFunctionSet::DeselectAll() { if (pViewData->IsAnyFillMode()) return; @@ -696,12 +790,12 @@ void ScHeaderFunctionSet::SetWhich( ScSplitPos eNew ) eWhich = eNew; } -void __EXPORT ScHeaderFunctionSet::BeginDrag() +void ScHeaderFunctionSet::BeginDrag() { // gippsnich } -void __EXPORT ScHeaderFunctionSet::CreateAnchor() +void ScHeaderFunctionSet::CreateAnchor() { if (bAnchor) return; @@ -721,13 +815,13 @@ void __EXPORT ScHeaderFunctionSet::CreateAnchor() bAnchor = TRUE; } -void __EXPORT ScHeaderFunctionSet::DestroyAnchor() +void ScHeaderFunctionSet::DestroyAnchor() { pViewData->GetView()->DoneBlockMode( TRUE ); bAnchor = FALSE; } -BOOL __EXPORT ScHeaderFunctionSet::SetCursorAtPoint( const Point& rPointPixel, BOOL /* bDontSelectAtCursor */ ) +BOOL ScHeaderFunctionSet::SetCursorAtPoint( const Point& rPointPixel, BOOL /* bDontSelectAtCursor */ ) { if ( bDidSwitch ) { @@ -830,7 +924,7 @@ BOOL __EXPORT ScHeaderFunctionSet::SetCursorAtPoint( const Point& rPointPixel, B return TRUE; } -BOOL __EXPORT ScHeaderFunctionSet::IsSelectionAtPoint( const Point& rPointPixel ) +BOOL ScHeaderFunctionSet::IsSelectionAtPoint( const Point& rPointPixel ) { SCsCOL nPosX; SCsROW nPosY; @@ -844,11 +938,11 @@ BOOL __EXPORT ScHeaderFunctionSet::IsSelectionAtPoint( const Point& rPointPixel return rMark.IsRowMarked( nPosY ); } -void __EXPORT ScHeaderFunctionSet::DeselectAtPoint( const Point& /* rPointPixel */ ) +void ScHeaderFunctionSet::DeselectAtPoint( const Point& /* rPointPixel */ ) { } -void __EXPORT ScHeaderFunctionSet::DeselectAll() +void ScHeaderFunctionSet::DeselectAll() { pViewData->GetView()->DoneBlockMode( FALSE ); bAnchor = FALSE; diff --git a/sc/source/ui/view/tabcont.cxx b/sc/source/ui/view/tabcont.cxx index daea22b78027..9bc33b63cb50 100644 --- a/sc/source/ui/view/tabcont.cxx +++ b/sc/source/ui/view/tabcont.cxx @@ -255,12 +255,6 @@ void ScTabControl::Select() for (i=0; i<nCount; i++) rMark.SelectTable( i, IsPageSelected(static_cast<sal_uInt16>(i)+1) ); -/* Markierungen werden per Default nicht pro Tabelle gehalten - USHORT nSelCnt = GetSelectPageCount(); - if (nSelCnt>1) - pDoc->ExtendMarksFromTable( nPage ); -*/ - SfxDispatcher& rDisp = pViewData->GetDispatcher(); if (rDisp.IsLocked()) pViewData->GetView()->SetTabNo( static_cast<SCTAB>(nPage) ); @@ -384,26 +378,12 @@ void ScTabControl::UpdateStatus() void ScTabControl::ActivateView(BOOL bActivate) { -// ScDocument* pDoc = pViewData->GetDocument(); ScMarkData& rMark = pViewData->GetMarkData(); -// ResetMark direkt in TabView -// pDoc->ResetMark(); - USHORT nCurId = GetCurPageId(); if (!nCurId) return; // kann vorkommen, wenn bei Excel-Import alles versteckt ist USHORT nPage = nCurId - 1; -// USHORT nCount = GetMaxId(); - /* - USHORT i; - for (i=0; i<nCount; i++) - { - SelectPage( i+1, FALSE ); - if (bActivate) - rMark.SelectTable( i, FALSE ); - } - */ if (bActivate) { SelectPage( nPage+1, TRUE ); diff --git a/sc/source/ui/view/tabsplit.cxx b/sc/source/ui/view/tabsplit.cxx index 7babaad6d154..868d7d478bdf 100644 --- a/sc/source/ui/view/tabsplit.cxx +++ b/sc/source/ui/view/tabsplit.cxx @@ -54,7 +54,7 @@ ScTabSplitter::~ScTabSplitter() { } -void __EXPORT ScTabSplitter::MouseMove( const MouseEvent& rMEvt ) +void ScTabSplitter::MouseMove( const MouseEvent& rMEvt ) { if (bFixed) Window::MouseMove( rMEvt ); @@ -62,7 +62,7 @@ void __EXPORT ScTabSplitter::MouseMove( const MouseEvent& rMEvt ) Splitter::MouseMove( rMEvt ); } -void __EXPORT ScTabSplitter::MouseButtonUp( const MouseEvent& rMEvt ) +void ScTabSplitter::MouseButtonUp( const MouseEvent& rMEvt ) { if (bFixed) Window::MouseButtonUp( rMEvt ); @@ -70,7 +70,7 @@ void __EXPORT ScTabSplitter::MouseButtonUp( const MouseEvent& rMEvt ) Splitter::MouseButtonUp( rMEvt ); } -void __EXPORT ScTabSplitter::MouseButtonDown( const MouseEvent& rMEvt ) +void ScTabSplitter::MouseButtonDown( const MouseEvent& rMEvt ) { if (bFixed) Window::MouseButtonDown( rMEvt ); @@ -78,7 +78,7 @@ void __EXPORT ScTabSplitter::MouseButtonDown( const MouseEvent& rMEvt ) Splitter::MouseButtonDown( rMEvt ); } -void __EXPORT ScTabSplitter::Splitting( Point& rSplitPos ) +void ScTabSplitter::Splitting( Point& rSplitPos ) { Window* pParent = GetParent(); Point aScreenPos = pParent->OutputToNormalizedScreenPixel( rSplitPos ); diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx index 58da4e399c5a..7e1ab1f07179 100644 --- a/sc/source/ui/view/tabview.cxx +++ b/sc/source/ui/view/tabview.cxx @@ -45,7 +45,6 @@ ////////////////////// Umsetzen der Standard-Defines ////////////////////// -//#define _SVDDRAG_HXX // SdrDragStat #define _SVDPAGE_HXX // SdrPage #ifdef _SDR_NOSURROGATEOBJ @@ -116,13 +115,8 @@ #undef _SVDORECT_HXX #endif -//#ifdef _SDR_NOVIEWS -// #define _SVDDRAG_HXX -//#endif - ////////////////////// Ende der SVDRAW-Modifikationen ///////////////////// - // INCLUDE --------------------------------------------------------------- #include "scitems.hxx" @@ -183,11 +177,11 @@ ScCornerButton::ScCornerButton( Window* pParent, ScViewData* pData, BOOL bAdditi EnableRTL( FALSE ); } -__EXPORT ScCornerButton::~ScCornerButton() +ScCornerButton::~ScCornerButton() { } -void __EXPORT ScCornerButton::Paint( const Rectangle& rRect ) +void ScCornerButton::Paint( const Rectangle& rRect ) { Size aSize = GetOutputSizePixel(); long nPosX = aSize.Width()-1; @@ -200,7 +194,7 @@ void __EXPORT ScCornerButton::Paint( const Rectangle& rRect ) BOOL bLayoutRTL = pViewData->GetDocument()->IsLayoutRTL( pViewData->GetTabNo() ); long nDarkX = bLayoutRTL ? 0 : nPosX; - if ( !bAdd && !rStyleSettings.GetHighContrastMode() ) + if ( !bAdd ) { // match the shaded look of column/row headers @@ -253,12 +247,12 @@ void ScCornerButton::DataChanged( const DataChangedEvent& rDCEvt ) } -void __EXPORT ScCornerButton::Resize() +void ScCornerButton::Resize() { Invalidate(); } -void __EXPORT ScCornerButton::MouseButtonDown( const MouseEvent& rMEvt ) +void ScCornerButton::MouseButtonDown( const MouseEvent& rMEvt ) { ScModule* pScMod = SC_MOD(); BOOL bDisable = pScMod->IsFormulaMode() || pScMod->IsModalMode(); @@ -379,7 +373,6 @@ void ScTabView::ResetTimer() IMPL_LINK( ScTabView, TimerHdl, Timer*, EMPTYARG ) { -// aScrollTimer.Stop(); if (pTimerWindow) pTimerWindow->MouseMove( aTimerMEvt ); @@ -447,7 +440,6 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, BOOL bInner ) long nPosY = rOffset.Y(); long nSizeX = rSize.Width(); long nSizeY = rSize.Height(); - long nSize1; bMinimized = ( nSizeX<=SC_ICONSIZE || nSizeY<=SC_ICONSIZE ); if ( bMinimized ) @@ -472,7 +464,6 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, BOOL bInner ) if ( WhichH( aViewData.GetActivePart() ) == SC_SPLIT_RIGHT ) ActivatePart( SC_SPLIT_BOTTOMLEFT ); InvalidateSplit(); -// UpdateShow(); } if ( aViewData.GetVSplitMode() != SC_SPLIT_NONE ) if ( aViewData.GetVSplitPos() > nSizeY - SPLIT_MARGIN ) @@ -481,7 +472,6 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, BOOL bInner ) if ( WhichV( aViewData.GetActivePart() ) == SC_SPLIT_TOP ) ActivatePart( SC_SPLIT_BOTTOMLEFT ); InvalidateSplit(); -// UpdateShow(); } UpdateShow(); @@ -491,13 +481,11 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, BOOL bInner ) long nScrollBarSize = pFrameWin->GetSettings().GetStyleSettings().GetScrollBarSize(); if (bVScroll) { -// nBarX = aVScrollBottom.GetSizePixel().Width(); nBarX = nScrollBarSize; nSizeX -= nBarX - nOverlap; } if (bHScroll) { -// nBarY = aHScrollLeft.GetSizePixel().Height(); nBarY = nScrollBarSize; nSizeY -= nBarY - nOverlap; } @@ -618,7 +606,7 @@ void ScTabView::DoResize( const Point& rOffset, const Size& rSize, BOOL bInner ) nBarY = aHScrollLeft.GetSizePixel().Height(); nBarX = aVScrollBottom.GetSizePixel().Width(); - nSize1 = nSizeX + nOverlap; + long nSize1 = nSizeX + nOverlap; long nTabSize = nSize1; if (nTabSize < 0) nTabSize = 0; @@ -1015,11 +1003,6 @@ void ScTabView::SetActivePointer( const Pointer& rPointer ) for (USHORT i=0; i<4; i++) if (pGridWin[i]) pGridWin[i]->SetPointer( rPointer ); - -/* ScSplitPos ePos = aViewData.GetActivePart(); - if (pGridWin[ePos]) - pGridWin[ePos]->SetPointer( rPointer ); -*/ } @@ -1761,7 +1744,6 @@ void ScTabView::DoHSplit(long nSplitPos) else { nOldDelta = aViewData.GetPosX( SC_SPLIT_LEFT ); -// aViewData.SetPosX( SC_SPLIT_LEFT, nOldDelta ); long nLeftWidth = nSplitPos - pRowBar[SC_SPLIT_BOTTOM]->GetSizePixel().Width(); if ( nLeftWidth < 0 ) nLeftWidth = 0; nNewDelta = nOldDelta + aViewData.CellsAtX( nOldDelta, 1, SC_SPLIT_LEFT, @@ -2453,5 +2435,4 @@ void ScTabView::EnableRefInput(BOOL bFlag) } - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/view/tabview2.cxx b/sc/source/ui/view/tabview2.cxx index a3692828c10f..58155a589939 100644 --- a/sc/source/ui/view/tabview2.cxx +++ b/sc/source/ui/view/tabview2.cxx @@ -110,7 +110,6 @@ void ScTabView::InitOwnBlockMode() if (!rMark.IsMarked() && !rMark.IsMultiMarked()) GetSelEngine()->CursorPosChanging( FALSE, FALSE ); -// bIsBlockMode = TRUE; bIsBlockMode = SC_BLOCKMODE_OWN; //! Variable umbenennen! nBlockStartX = 0; nBlockStartY = 0; @@ -148,7 +147,6 @@ void ScTabView::InitBlockMode( SCCOL nCurX, SCROW nCurY, SCTAB nCurZ, bBlockNeg = FALSE; rMark.SetMarkNegative(bBlockNeg); -// bIsBlockMode = TRUE; bIsBlockMode = SC_BLOCKMODE_NORMAL; //! Variable umbenennen! bBlockCols = bCols; bBlockRows = bRows; @@ -210,7 +208,6 @@ void ScTabView::DoneBlockMode( BOOL bContinue ) // Default FALSE else rMark.ResetMark(); } -// bIsBlockMode = FALSE; bIsBlockMode = SC_BLOCKMODE_NONE; //! Variable umbenennen! rMark.SetMarking(bFlag); @@ -380,9 +377,6 @@ void ScTabView::MarkCursor( SCCOL nCurX, SCROW nCurY, SCTAB nCurZ, nDrawEndCol, nDrawEndRow, bCont ); if ( bDraw ) { -//? PutInOrder( nDrawStartCol, nDrawEndCol ); -//? PutInOrder( nDrawStartRow, nDrawEndRow ); - HideAllCursors(); InvertBlockMark( nDrawStartCol, nDrawStartRow, nDrawEndCol, nDrawEndRow ); if (bCont) @@ -399,7 +393,6 @@ void ScTabView::MarkCursor( SCCOL nCurX, SCROW nCurY, SCTAB nCurZ, nOldCurY = nCurY; aViewData.GetViewShell()->UpdateInputHandler(); -// InvalidateAttribs(); } if ( !bCols && !bRows ) @@ -450,8 +443,12 @@ void ScTabView::GetAreaMoveEndPosition(SCsCOL nMovX, SCsROW nMovY, ScFollowMode } else if (IsBlockMode()) { + // block end position. nNewX = nBlockEndX; nNewY = nBlockEndY; + // cursor position - diagonally opposite of the block end position. + nCurX = aViewData.GetCurX(); + nCurY = aViewData.GetCurY(); } else { @@ -467,16 +464,16 @@ void ScTabView::GetAreaMoveEndPosition(SCsCOL nMovX, SCsROW nMovY, ScFollowMode SCsCOLROW i; if ( nMovX > 0 ) for ( i=0; i<nMovX; i++ ) - pDoc->FindAreaPos( nNewX, nNewY, nTab, 1, 0 ); + pDoc->FindAreaPos( nNewX, nCurY, nTab, 1, 0 ); if ( nMovX < 0 ) for ( i=0; i<-nMovX; i++ ) - pDoc->FindAreaPos( nNewX, nNewY, nTab, -1, 0 ); + pDoc->FindAreaPos( nNewX, nCurY, nTab, -1, 0 ); if ( nMovY > 0 ) for ( i=0; i<nMovY; i++ ) - pDoc->FindAreaPos( nNewX, nNewY, nTab, 0, 1 ); + pDoc->FindAreaPos( nCurX, nNewY, nTab, 0, 1 ); if ( nMovY < 0 ) for ( i=0; i<-nMovY; i++ ) - pDoc->FindAreaPos( nNewX, nNewY, nTab, 0, -1 ); + pDoc->FindAreaPos( nCurX, nNewY, nTab, 0, -1 ); if (eMode==SC_FOLLOW_JUMP) // unten/rechts nicht zuviel grau anzeigen { @@ -1023,7 +1020,6 @@ void ScTabView::SelectAllTables() { ScDocument* pDoc = aViewData.GetDocument(); ScMarkData& rMark = aViewData.GetMarkData(); -// SCTAB nTab = aViewData.GetTabNo(); SCTAB nCount = pDoc->GetTableCount(); if (nCount>1) @@ -1031,9 +1027,6 @@ void ScTabView::SelectAllTables() for (SCTAB i=0; i<nCount; i++) rMark.SelectTable( i, TRUE ); - // Markierungen werden per Default nicht pro Tabelle gehalten -// pDoc->ExtendMarksFromTable( nTab ); - aViewData.GetDocShell()->PostPaintExtras(); SfxBindings& rBind = aViewData.GetBindings(); rBind.Invalidate( FID_FILL_TAB ); diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx index e9659ef962cd..f97f0c6e9f02 100644 --- a/sc/source/ui/view/tabview3.cxx +++ b/sc/source/ui/view/tabview3.cxx @@ -269,9 +269,6 @@ void ScTabView::InvalidateAttribs() rBindings.Invalidate( SID_NUMBER_CURRENCY ); rBindings.Invalidate( SID_NUMBER_PERCENT ); rBindings.Invalidate( SID_NUMBER_TIME ); - -// rBindings.Invalidate( SID_RANGE_VALUE ); -// rBindings.Invalidate( SID_RANGE_FORMULA ); } // SetCursor - Cursor setzen, zeichnen, InputWin updaten @@ -402,7 +399,6 @@ void ScTabView::SelectionChanged() rBindings.Invalidate( FID_MERGE_TOGGLE ); rBindings.Invalidate( SID_AUTOFILTER_HIDE ); rBindings.Invalidate( SID_UNFILTER ); -// rBindings.Invalidate( SID_IMPORT_DATA ); // jetzt wieder immer moeglich rBindings.Invalidate( SID_REIMPORT_DATA ); rBindings.Invalidate( SID_REFRESH_DBAREA ); rBindings.Invalidate( SID_OUTLINE_SHOW ); @@ -442,7 +438,6 @@ void ScTabView::SelectionChanged() rBindings.Invalidate( SID_INSERT_POSTIT ); rBindings.Invalidate( SID_CHARMAP ); rBindings.Invalidate( SID_OPENDLG_FUNCTION ); -// rBindings.Invalidate( FID_CONDITIONAL_FORMAT ); rBindings.Invalidate( SID_OPENDLG_CONDFRMT ); rBindings.Invalidate( FID_VALIDATION ); rBindings.Invalidate( SID_EXTERNAL_SOURCE ); @@ -980,7 +975,6 @@ void ScTabView::MoveCursorRel( SCsCOL nMovX, SCsROW nMovY, ScFollowMode eMode, nCurY = (nMovY != 0) ? nOldY+nMovY : (SCsROW) aViewData.GetOldCurY(); } - BOOL bSkipCell = FALSE; aViewData.ResetOldCursor(); if (nMovX != 0 && VALIDCOLROW(nCurX,nCurY)) @@ -1815,7 +1809,6 @@ void ScTabView::KillEditView( BOOL bNoPaint ) { pGridWin[i]->UpdateCursorOverlay(); pGridWin[i]->UpdateAutoFillOverlay(); - // pGridWin[i]->UpdateAllOverlays(); } } } @@ -2077,8 +2070,10 @@ void ScTabView::DoChartSelection( if( ScRangeStringConverter::GetRangeListFromString( aRangeList, rHilightRanges[i].RangeRepresentation, pDoc, pDoc->GetAddressConvention(), sep )) { - for ( ScRangePtr p = aRangeList.First(); p; p = aRangeList.Next()) + size_t nListSize = aRangeList.size(); + for ( size_t j = 0; j < nListSize; ++j ) { + ScRange* p = aRangeList[j]; if( rHilightRanges[i].Index == - 1 ) AddHighlightRange( *p, aSelColor ); else @@ -2376,9 +2371,7 @@ void ScTabView::ActivateView( BOOL bActivate, BOOL bFirst ) if (!bRefMode) { - //pScMod->InputEnterHandler(); - - // #80843# pass view to GetInputHdl, this view may not be current anymore + // pass view to GetInputHdl, this view may not be current anymore ScInputHandler* pHdl = SC_MOD()->GetInputHdl(aViewData.GetViewShell()); if (pHdl) pHdl->EnterHandler(); @@ -2396,9 +2389,6 @@ void ScTabView::ActivateView( BOOL bActivate, BOOL bFirst ) else if (!bFirst) ShowAllCursors(); - //HMHif (pDrawView) - //HMH DrawShowMarkHdl(bActivate); // Drawing-Markierung - if (bActivate) { if ( bFirst ) @@ -2516,7 +2506,6 @@ void ScTabView::ActivatePart( ScSplitPos eWhich ) { // GrabFocus nur, wenn vorher das andere GridWindow den Focus hatte // (z.B. wegen Suchen & Ersetzen) -//! aViewData.GetViewShell()->GetViewFrame()->GetWindow().GrabFocus(); pGridWin[eWhich]->GrabFocus(); } @@ -2595,14 +2584,6 @@ void ScTabView::ZoomChanged() SetNewVisArea(); - /* the old code - ScGridWindow* pWin = pGridWin[aViewData.GetActivePart()]; - if (pWin) - { - pWin->SetMapMode( pWin->GetDrawMapMode() ); // mit neuem Zoom - SetNewVisArea(); // benutzt den gesetzten MapMode - } */ - InterpretVisible(); // #69343# have everything calculated before painting SfxBindings& rBindings = aViewData.GetBindings(); diff --git a/sc/source/ui/view/tabview4.cxx b/sc/source/ui/view/tabview4.cxx index 13ef6ca977b0..a6b5f7fe1b1b 100644 --- a/sc/source/ui/view/tabview4.cxx +++ b/sc/source/ui/view/tabview4.cxx @@ -334,7 +334,6 @@ void ScTabView::InitRefMode( SCCOL nCurX, SCROW nCurY, SCTAB nCurZ, ScRefType eT } } -// static void ScTabView::SetScrollBar( ScrollBar& rScroll, long nRangeMax, long nVisible, long nPos, BOOL bLayoutRTL ) { if ( nVisible == 0 ) @@ -358,7 +357,6 @@ void ScTabView::SetScrollBar( ScrollBar& rScroll, long nRangeMax, long nVisible, } } -// static long ScTabView::GetScrollBarPos( ScrollBar& rScroll, BOOL bLayoutRTL ) { if ( bLayoutRTL ) diff --git a/sc/source/ui/view/tabview5.cxx b/sc/source/ui/view/tabview5.cxx index c77034366c85..dd94345aaea1 100644 --- a/sc/source/ui/view/tabview5.cxx +++ b/sc/source/ui/view/tabview5.cxx @@ -73,7 +73,7 @@ using namespace com::sun::star; // STATIC DATA ----------------------------------------------------------- -void __EXPORT ScTabView::Init() +void ScTabView::Init() { /* RTL layout of the view windows is done manually, because it depends on the sheet orientation, not the UI setting. Note: controls that are @@ -148,7 +148,7 @@ void __EXPORT ScTabView::Init() TestHintWindow(); } -__EXPORT ScTabView::~ScTabView() +ScTabView::~ScTabView() { USHORT i; @@ -533,20 +533,6 @@ void ScTabView::DrawEnableAnim(BOOL bSet) } } -//HMHvoid ScTabView::DrawShowMarkHdl(BOOL bShow) -//HMH{ - //HMHif (!pDrawView) - //HMH return; - - //HMHif (bShow) - //HMH{ - //HMH if (!pDrawView->IsDisableHdl()) - //HMH pDrawView->ShowMarkHdl(); - //HMH} - //HMHelse - //HMH pDrawView->HideMarkHdl(); -//HMH} - void ScTabView::UpdateDrawTextOutliner() { if ( pDrawView ) diff --git a/sc/source/ui/view/tabvwsh.cxx b/sc/source/ui/view/tabvwsh.cxx index d5e166d121a7..04195db0b261 100644 --- a/sc/source/ui/view/tabvwsh.cxx +++ b/sc/source/ui/view/tabvwsh.cxx @@ -97,10 +97,7 @@ SFX_IMPL_INTERFACE(ScTabViewShell,SfxViewShell,ScResId(SCSTR_TABVIEWSHELL)) SFX_CHILDWINDOW_REGISTRATION(GalleryChildWindow::GetChildWindowId()); SFX_CHILDWINDOW_REGISTRATION(ScSpellDialogChildWindow::GetChildWindowId()); SFX_CHILDWINDOW_REGISTRATION( ::avmedia::MediaPlayer::GetChildWindowId() ); - - //<!--Added by PengYunQuan for Validity Cell Range Picker SFX_CHILDWINDOW_REGISTRATION(ScValidityRefChildWin::GetChildWindowId()); - //-->Added by PengYunQuan for Validity Cell Range Picker } SFX_IMPL_NAMED_VIEWFACTORY( ScTabViewShell, "Default" ) diff --git a/sc/source/ui/view/tabvwsh2.cxx b/sc/source/ui/view/tabvwsh2.cxx index 81a011516cbd..fbda547eb46e 100644 --- a/sc/source/ui/view/tabvwsh2.cxx +++ b/sc/source/ui/view/tabvwsh2.cxx @@ -71,7 +71,7 @@ // ----------------------------------------------------------------------- -SdrView* __EXPORT ScTabViewShell::GetDrawView() const +SdrView* ScTabViewShell::GetDrawView() const { return ((ScTabViewShell*)this)->GetScDrawView(); // GetScDrawView ist nicht-const } diff --git a/sc/source/ui/view/tabvwsh3.cxx b/sc/source/ui/view/tabvwsh3.cxx index 7eb78c81d003..8bfb7b6bf9e5 100644 --- a/sc/source/ui/view/tabvwsh3.cxx +++ b/sc/source/ui/view/tabvwsh3.cxx @@ -1065,8 +1065,6 @@ void ScTabViewShell::Execute( SfxRequest& rReq ) SCTAB nTab = GetViewData()->GetTabNo(); bool bOldProtection = pDoc->IsTabProtected(nTab); -#if ENABLE_SHEET_PROTECTION - if( pReqArgs ) { const SfxPoolItem* pItem; @@ -1134,85 +1132,6 @@ void ScTabViewShell::Execute( SfxRequest& rReq ) } } } -#else - auto_ptr<SfxPasswordDialog> pDlg; - String aPassword; - BOOL bCancel = FALSE; - bool bNewProtection = ! bOldProtection; - - if( pReqArgs ) - { - const SfxPoolItem* pItem; - if( IS_AVAILABLE( FID_PROTECT_TABLE, &pItem ) ) - bNewProtection = ((const SfxBoolItem*)pItem)->GetValue(); - if( bNewProtection == bOldProtection ) - { - rReq.Ignore(); - break; - } - } - - if ( bOldProtection) - { - // Unprotect a protected sheet. - - ScTableProtection* pProtect = pDoc->GetTabProtection(nTab); - if (pProtect && pProtect->isProtectedWithPass()) - { - String aText( ScResId(SCSTR_PASSWORDOPT) ); - pDlg.reset(new SfxPasswordDialog(GetDialogParent(), &aText)); - pDlg->SetText( ScResId(SCSTR_UNPROTECTTAB) ); - pDlg->SetMinLen( 0 ); - pDlg->SetHelpId( FID_PROTECT_TABLE ); - pDlg->SetEditHelpId( HID_PASSWD_TABLE ); - - if (pDlg->Execute() == RET_OK) - aPassword = pDlg->GetPassword(); - else - bCancel = TRUE; - } - - if (!pReqArgs) - { - rReq.AppendItem( SfxBoolItem(FID_PROTECT_TABLE, false) ); - rReq.Done(); - } - } - else - { - String aText( ScResId(SCSTR_PASSWORDOPT) ); - - pDlg.reset(new SfxPasswordDialog(GetDialogParent(), &aText)); - pDlg->SetText( ScResId(SCSTR_PROTECTTAB) ); - pDlg->SetMinLen( 0 ); - pDlg->SetHelpId( FID_PROTECT_TABLE ); - pDlg->SetEditHelpId( HID_PASSWD_TABLE ); - pDlg->ShowExtras( SHOWEXTRAS_CONFIRM ); - - if (pDlg->Execute() == RET_OK) - aPassword = pDlg->GetPassword(); - else - bCancel = TRUE; - } - - if( !bCancel ) - { - if ( bOldProtection ) - Unprotect( nTab, aPassword ); - else - { - pScMod->InputEnterHandler(); - - Protect( nTab, aPassword ); - } - - if( !pReqArgs ) - { - rReq.AppendItem( SfxBoolItem( FID_PROTECT_TABLE, bNewProtection ) ); - rReq.Done(); - } - } -#endif TabChanged(); UpdateInputHandler(true); // damit sofort wieder eingegeben werden kann SelectionChanged(); diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx index 493f45341ff4..dec1ddd34eea 100644 --- a/sc/source/ui/view/tabvwsh4.cxx +++ b/sc/source/ui/view/tabvwsh4.cxx @@ -114,7 +114,7 @@ USHORT ScTabViewShell::nInsObjCtrlState = SID_INSERT_DIAGRAM; // ----------------------------------------------------------------------- -void __EXPORT ScTabViewShell::Activate(BOOL bMDI) +void ScTabViewShell::Activate(BOOL bMDI) { SfxViewShell::Activate(bMDI); @@ -228,7 +228,7 @@ void __EXPORT ScTabViewShell::Activate(BOOL bMDI) // beim Umschalten zwischen Dokumenten) } -void __EXPORT ScTabViewShell::Deactivate(BOOL bMDI) +void ScTabViewShell::Deactivate(BOOL bMDI) { HideTip(); @@ -283,7 +283,7 @@ void ScTabViewShell::SetActive() ActiveGrabFocus(); } -USHORT __EXPORT ScTabViewShell::PrepareClose(BOOL bUI, BOOL bForBrowsing) +USHORT ScTabViewShell::PrepareClose(BOOL bUI, BOOL bForBrowsing) { // Call EnterHandler even in formula mode here, // so a formula change in an embedded object isn't lost @@ -319,7 +319,7 @@ USHORT __EXPORT ScTabViewShell::PrepareClose(BOOL bUI, BOOL bForBrowsing) //------------------------------------------------------------------ -Size __EXPORT ScTabViewShell::GetOptimalSizePixel() const +Size ScTabViewShell::GetOptimalSizePixel() const { Size aOptSize; @@ -367,12 +367,12 @@ void ScTabViewShell::UpdateOleZoom() } } -void __EXPORT ScTabViewShell::AdjustPosSizePixel( const Point &rPos, const Size &rSize ) +void ScTabViewShell::AdjustPosSizePixel( const Point &rPos, const Size &rSize ) { OuterResizePixel( rPos, rSize ); } -void __EXPORT ScTabViewShell::InnerResizePixel( const Point &rOfs, const Size &rSize ) +void ScTabViewShell::InnerResizePixel( const Point &rOfs, const Size &rSize ) { Size aNewSize( rSize ); if ( GetViewFrame()->GetFrame().IsInPlace() ) @@ -412,11 +412,10 @@ void __EXPORT ScTabViewShell::InnerResizePixel( const Point &rOfs, const Size &r UpdateOleZoom(); // Zoom fuer In-Place berechnen -// GetViewData()->GetDocShell()->UpdateOle( GetViewData() ); GetViewData()->GetDocShell()->SetDocumentModified(); } -void __EXPORT ScTabViewShell::OuterResizePixel( const Point &rOfs, const Size &rSize ) +void ScTabViewShell::OuterResizePixel( const Point &rOfs, const Size &rSize ) { SvBorder aBorder; GetBorderSize( aBorder, rSize ); @@ -430,7 +429,7 @@ void __EXPORT ScTabViewShell::OuterResizePixel( const Point &rOfs, const Size &r ForceMove(); } -void __EXPORT ScTabViewShell::SetZoomFactor( const Fraction &rZoomX, const Fraction &rZoomY ) +void ScTabViewShell::SetZoomFactor( const Fraction &rZoomX, const Fraction &rZoomY ) { // fuer OLE... @@ -458,7 +457,7 @@ void __EXPORT ScTabViewShell::SetZoomFactor( const Fraction &rZoomX, const Fract SfxViewShell::SetZoomFactor( rZoomX, rZoomY ); } -void __EXPORT ScTabViewShell::QueryObjAreaPixel( Rectangle& rRect ) const +void ScTabViewShell::QueryObjAreaPixel( Rectangle& rRect ) const { // auf ganze Zellen anpassen (in 1/100 mm) @@ -489,7 +488,7 @@ void __EXPORT ScTabViewShell::QueryObjAreaPixel( Rectangle& rRect ) const //------------------------------------------------------------------ -void __EXPORT ScTabViewShell::Move() +void ScTabViewShell::Move() { Point aNewPos = GetViewFrame()->GetWindow().OutputToScreenPixel(Point()); @@ -502,7 +501,7 @@ void __EXPORT ScTabViewShell::Move() //------------------------------------------------------------------ -void __EXPORT ScTabViewShell::ShowCursor(bool /* bOn */) +void ScTabViewShell::ShowCursor(bool /* bOn */) { /*!!! ShowCursor wird nicht paarweise wie im gridwin gerufen. Der CursorLockCount am Gridwin muss hier direkt auf 0 gesetzt werden @@ -516,7 +515,7 @@ void __EXPORT ScTabViewShell::ShowCursor(bool /* bOn */) //------------------------------------------------------------------ -void __EXPORT ScTabViewShell::WriteUserData(String& rData, BOOL /* bBrowse */) +void ScTabViewShell::WriteUserData(String& rData, BOOL /* bBrowse */) { GetViewData()->WriteUserData(rData); } @@ -526,7 +525,7 @@ void ScTabViewShell::WriteUserDataSequence (uno::Sequence < beans::PropertyValue GetViewData()->WriteUserDataSequence (rSettings); } -void __EXPORT ScTabViewShell::ReadUserData(const String& rData, BOOL /* bBrowse */) +void ScTabViewShell::ReadUserData(const String& rData, BOOL /* bBrowse */) { if ( !GetViewData()->GetDocShell()->IsPreview() ) DoReadUserData( rData ); @@ -1088,18 +1087,18 @@ ScTabViewShell* ScTabViewShell::GetActiveViewShell() //------------------------------------------------------------------ -SfxPrinter* __EXPORT ScTabViewShell::GetPrinter( BOOL bCreate ) +SfxPrinter* ScTabViewShell::GetPrinter( BOOL bCreate ) { // Drucker ist immer da (wird fuer die FontListe schon beim Starten angelegt) return GetViewData()->GetDocShell()->GetPrinter(bCreate); } -USHORT __EXPORT ScTabViewShell::SetPrinter( SfxPrinter *pNewPrinter, USHORT nDiffFlags, bool ) +USHORT ScTabViewShell::SetPrinter( SfxPrinter *pNewPrinter, USHORT nDiffFlags, bool ) { return GetViewData()->GetDocShell()->SetPrinter( pNewPrinter, nDiffFlags ); } -PrintDialog* __EXPORT ScTabViewShell::CreatePrintDialog( Window *pParent ) +PrintDialog* ScTabViewShell::CreatePrintDialog( Window *pParent ) { ScDocShell* pDocShell = GetViewData()->GetDocShell(); ScDocument* pDoc = pDocShell->GetDocument(); @@ -1165,7 +1164,7 @@ SfxTabPage* ScTabViewShell::CreatePrintOptionsPage( Window *pParent, const SfxIt return 0; } -void __EXPORT ScTabViewShell::PreparePrint( PrintDialog* pPrintDialog ) +void ScTabViewShell::PreparePrint( PrintDialog* pPrintDialog ) { ScDocShell* pDocShell = GetViewData()->GetDocShell(); @@ -1212,7 +1211,7 @@ ErrCode ScTabViewShell::DoPrint( SfxPrinter *pPrinter, } uno::Sequence < beans::PropertyValue > aProps(1); - aProps[0].Name=::rtl::OUString::createFromAscii("PrintSheets"); + aProps[0].Name=::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PrintSheets")); aProps[0].Value <<= aSheets; SetAdditionalPrintOptions( aProps ); @@ -1225,7 +1224,7 @@ ErrCode ScTabViewShell::DoPrint( SfxPrinter *pPrinter, return nRet; } -USHORT __EXPORT ScTabViewShell::Print( SfxProgress& rProgress, BOOL bIsAPI, +USHORT ScTabViewShell::Print( SfxProgress& rProgress, BOOL bIsAPI, PrintDialog* pPrintDialog ) { ScDocShell* pDocShell = GetViewData()->GetDocShell(); @@ -1568,9 +1567,8 @@ BOOL ScTabViewShell::SfxKeyInput(const KeyEvent& rKeyEvent) return sal::static_int_cast<BOOL>(SfxViewShell::KeyInput( rKeyEvent )); } -bool __EXPORT ScTabViewShell::KeyInput( const KeyEvent &rKeyEvent ) +bool ScTabViewShell::KeyInput( const KeyEvent &rKeyEvent ) { -// return SfxViewShell::KeyInput( rKeyEvent ); return TabKeyInput( rKeyEvent ); } @@ -1617,7 +1615,6 @@ bool __EXPORT ScTabViewShell::KeyInput( const KeyEvent &rKeyEvent ) bPrintSelected(FALSE), \ bReadOnly(FALSE), \ pScSbxObject(NULL), \ - /*bChartDlgIsEdit(FALSE),*/ \ bChartAreaValid(FALSE), \ nCurRefDlgId(0), \ pAccessibilityBroadcaster(NULL) @@ -1635,7 +1632,6 @@ void ScTabViewShell::Construct( BYTE nForceDesignMode ) SetName( String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("View")) ); // fuer SBX Color aColBlack( COL_BLACK ); -// SetPool( &pSfxApp->GetPool() ); SetPool( &SC_MOD()->GetPool() ); SetWindow( GetActiveWin() ); @@ -1862,9 +1858,6 @@ ScTabViewShell::ScTabViewShell( SfxViewFrame* pViewFrame, SetZoomType( rAppOpt.GetZoomType(), TRUE ); } - /*uno::Reference<frame::XFrame> xFrame = pViewFrame->GetFrame().GetFrameInterface(); - if (xFrame.is()) - xFrame->setComponent( uno::Reference<awt::XWindow>(), new ScTabViewObj( this ) );*/ // make Controller known to SFX new ScTabViewObj( this ); @@ -1881,7 +1874,7 @@ ScTabViewShell::ScTabViewShell( SfxViewFrame* pViewFrame, //------------------------------------------------------------------ -__EXPORT ScTabViewShell::~ScTabViewShell() +ScTabViewShell::~ScTabViewShell() { ScDocShell* pDocSh = GetViewData()->GetDocShell(); EndListening(*pDocSh); diff --git a/sc/source/ui/view/tabvwsh5.cxx b/sc/source/ui/view/tabvwsh5.cxx index c6cb9d5cfb37..972cfe4416c6 100644 --- a/sc/source/ui/view/tabvwsh5.cxx +++ b/sc/source/ui/view/tabvwsh5.cxx @@ -57,7 +57,7 @@ //================================================================== -void __EXPORT ScTabViewShell::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) +void ScTabViewShell::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) { if (rHint.ISA(SfxSimpleHint)) // ohne Parameter { diff --git a/sc/source/ui/view/tabvwsh8.cxx b/sc/source/ui/view/tabvwsh8.cxx index 2f4ca5c72bab..ec9a30f70e31 100644 --- a/sc/source/ui/view/tabvwsh8.cxx +++ b/sc/source/ui/view/tabvwsh8.cxx @@ -61,7 +61,7 @@ void ScTabViewShell::SetDefaultFrameLine( const SvxBorderLine* pLine ) //------------------------------------------------------------------ -BOOL __EXPORT ScTabViewShell::HasSelection( BOOL bText ) const +BOOL ScTabViewShell::HasSelection( BOOL bText ) const { BOOL bHas = FALSE; ScViewData* pData = (ScViewData*)GetViewData(); // const weggecasted diff --git a/sc/source/ui/view/tabvwsh9.cxx b/sc/source/ui/view/tabvwsh9.cxx index 3984465f1f50..9b9ab82a894a 100644 --- a/sc/source/ui/view/tabvwsh9.cxx +++ b/sc/source/ui/view/tabvwsh9.cxx @@ -172,7 +172,7 @@ ScInputHandler* ScTabViewShell::GetInputHandler() const //------------------------------------------------------------------ -String __EXPORT ScTabViewShell::GetDescription() const +String ScTabViewShell::GetDescription() const { return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(" ** Test ** ")); } diff --git a/sc/source/ui/view/tabvwsha.cxx b/sc/source/ui/view/tabvwsha.cxx index aaa55a4ad596..670daa305b73 100644 --- a/sc/source/ui/view/tabvwsha.cxx +++ b/sc/source/ui/view/tabvwsha.cxx @@ -162,7 +162,7 @@ BOOL ScTabViewShell::GetFunction( String& rFuncStr, sal_uInt16 nErrCode ) // FID_VALIDATION -void __EXPORT ScTabViewShell::GetState( SfxItemSet& rSet ) +void ScTabViewShell::GetState( SfxItemSet& rSet ) { ScViewData* pViewData = GetViewData(); ScDocument* pDoc = pViewData->GetDocument(); @@ -706,7 +706,7 @@ void ScTabViewShell::UpdateInputHandlerCellAdjust( SvxCellHorJustify eJust ) //------------------------------------------------------------------ -void __EXPORT ScTabViewShell::ExecuteSave( SfxRequest& rReq ) +void ScTabViewShell::ExecuteSave( SfxRequest& rReq ) { // nur SID_SAVEDOC / SID_SAVEASDOC @@ -722,7 +722,7 @@ void __EXPORT ScTabViewShell::ExecuteSave( SfxRequest& rReq ) GetViewData()->GetDocShell()->ExecuteSlot( rReq ); } -void __EXPORT ScTabViewShell::GetSaveState( SfxItemSet& rSet ) +void ScTabViewShell::GetSaveState( SfxItemSet& rSet ) { SfxShell* pDocSh = GetViewData()->GetDocShell(); @@ -782,8 +782,6 @@ void ScTabViewShell::ExecuteUndo(SfxRequest& rReq) GetViewFrame()->GetBindings().InvalidateAll(sal_False); } break; -// default: -// GetViewFrame()->ExecuteSlot( rReq ); } } diff --git a/sc/source/ui/view/tabvwshb.cxx b/sc/source/ui/view/tabvwshb.cxx index f650b0bb68cd..f5e73e6a11ca 100644 --- a/sc/source/ui/view/tabvwshb.cxx +++ b/sc/source/ui/view/tabvwshb.cxx @@ -125,10 +125,6 @@ BOOL ScTabViewShell::ActivateObject( SdrOle2Obj* pObj, long nVerb ) ErrCode nErr = ERRCODE_NONE; BOOL bErrorShown = FALSE; - // linked objects aren't supported -// if ( xIPObj->IsLink() ) -// nErr = xIPObj->DoVerb(nVerb); // gelinkt -> ohne Client etc. -// else { SfxInPlaceClient* pClient = FindIPClient( xObj, pWin ); if ( !pClient ) @@ -220,14 +216,13 @@ BOOL ScTabViewShell::ActivateObject( SdrOle2Obj* pObj, long nVerb ) return ( !(nErr & ERRCODE_ERROR_MASK) ); } -ErrCode __EXPORT ScTabViewShell::DoVerb(long nVerb) +ErrCode ScTabViewShell::DoVerb(long nVerb) { SdrView* pView = GetSdrView(); if (!pView) return ERRCODE_SO_NOTIMPL; // soll nicht sein SdrOle2Obj* pOle2Obj = NULL; - SdrGrafObj* pGrafObj = NULL; SdrObject* pObj = NULL; ErrCode nErr = ERRCODE_NONE; @@ -237,10 +232,6 @@ ErrCode __EXPORT ScTabViewShell::DoVerb(long nVerb) pObj = rMarkList.GetMark(0)->GetMarkedSdrObj(); if (pObj->GetObjIdentifier() == OBJ_OLE2) pOle2Obj = (SdrOle2Obj*) pObj; - else if (pObj->GetObjIdentifier() == OBJ_GRAF) - { - pGrafObj = (SdrGrafObj*) pObj; - } } if (pOle2Obj) @@ -289,7 +280,6 @@ void ScTabViewShell::ExecDrawIns(SfxRequest& rReq) ScDrawView* pView = pTabView->GetScDrawView(); ScDocShell* pDocSh = GetViewData()->GetDocShell(); ScDocument* pDoc = pDocSh->GetDocument(); -// SdrModel* pDrModel = pDocSh->MakeDrawLayer(); SdrModel* pDrModel = pView->GetModel(); switch ( nSlot ) @@ -306,7 +296,6 @@ void ScTabViewShell::ExecDrawIns(SfxRequest& rReq) case SID_INSERT_DIAGRAM: FuInsertChart(this, pWin, pView, pDrModel, rReq); -//? SC_MOD()->SetFunctionDlg( NULL );//XXX break; case SID_INSERT_OBJECT: diff --git a/sc/source/ui/view/tabvwshe.cxx b/sc/source/ui/view/tabvwshe.cxx index 07be1e04f39f..70f2876287ca 100644 --- a/sc/source/ui/view/tabvwshe.cxx +++ b/sc/source/ui/view/tabvwshe.cxx @@ -57,7 +57,7 @@ //================================================================== -String __EXPORT ScTabViewShell::GetSelectionText( BOOL bWholeWord ) +String ScTabViewShell::GetSelectionText( BOOL bWholeWord ) { String aStrSelection; diff --git a/sc/source/ui/view/tabvwshf.cxx b/sc/source/ui/view/tabvwshf.cxx index 3baa549f2932..7bfaf145c0c2 100644 --- a/sc/source/ui/view/tabvwshf.cxx +++ b/sc/source/ui/view/tabvwshf.cxx @@ -479,6 +479,7 @@ void ScTabViewShell::ExecuteTable( SfxRequest& rReq ) SCTAB nTab = pViewData->GetTabNo(); BOOL bCpy = FALSE; String aDocName; + String aTabName; if( pReqArgs != NULL ) { @@ -536,10 +537,15 @@ void ScTabViewShell::ExecuteTable( SfxRequest& rReq ) } else { + String aDefaultName; + pDoc->GetName( pViewData->GetTabNo(), aDefaultName ); + ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create(); DBG_ASSERT(pFact, "ScAbstractFactory create fail!"); - AbstractScMoveTableDlg* pDlg = pFact->CreateScMoveTableDlg( GetDialogParent(), RID_SCDLG_MOVETAB ); + AbstractScMoveTableDlg* pDlg = pFact->CreateScMoveTableDlg( GetDialogParent(), + aDefaultName, + RID_SCDLG_MOVETAB ); DBG_ASSERT(pDlg, "Dialog create fail!"); SCTAB nTableCount = pDoc->GetTableCount(); @@ -549,14 +555,24 @@ void ScTabViewShell::ExecuteTable( SfxRequest& rReq ) if(nTableCount==nTabSelCount) { - pDlg->SetCopyTable(); - pDlg->EnableCopyTable(FALSE); + pDlg->SetForceCopyTable(); } + + // We support direct renaming of sheet only when one sheet + // is selected. + pDlg->EnableRenameTable(nTabSelCount == 1); + if ( pDlg->Execute() == RET_OK ) { nDoc = pDlg->GetSelectedDocument(); nTab = pDlg->GetSelectedTable(); bCpy = pDlg->GetCopyTable(); + bool bRna = pDlg->GetRenameTable(); + // Leave aTabName string empty, when Rename is FALSE. + if( bRna ) + { + pDlg->GetTabNameString( aTabName ); + } bDoIt = TRUE; String aFoundDocName; @@ -586,7 +602,7 @@ void ScTabViewShell::ExecuteTable( SfxRequest& rReq ) { rReq.Done(); // aufzeichnen, solange das Dokument noch aktiv ist - MoveTable( nDoc, nTab, bCpy ); + MoveTable( nDoc, nTab, bCpy, &aTabName ); } } break; diff --git a/sc/source/ui/view/tabvwshg.cxx b/sc/source/ui/view/tabvwshg.cxx index f7aac8b56da4..664142375995 100644 --- a/sc/source/ui/view/tabvwshg.cxx +++ b/sc/source/ui/view/tabvwshg.cxx @@ -33,8 +33,6 @@ // INCLUDE --------------------------------------------------------------- -//#define SI_VCDRAWOBJ - #include <tools/urlobj.hxx> #include <svx/fmglob.hxx> #include <svx/svdouno.hxx> @@ -74,7 +72,6 @@ void ScTabViewShell::InsertURLButton( const String& rName, const String& rURL, MakeDrawLayer(); ScTabView* pView = pViewData->GetView(); -// SdrView* pDrView = pView->GetSdrView(); ScDrawView* pDrView = pView->GetScDrawView(); SdrModel* pModel = pDrView->GetModel(); @@ -91,21 +88,21 @@ void ScTabViewShell::InsertURLButton( const String& rName, const String& rURL, uno::Any aAny; aAny <<= rtl::OUString(rName); - xPropSet->setPropertyValue( rtl::OUString::createFromAscii( "Label" ), aAny ); + xPropSet->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Label" )), aAny ); ::rtl::OUString aTmp = INetURLObject::GetAbsURL( pDoc->GetDocumentShell()->GetMedium()->GetBaseURL(), rURL ); aAny <<= aTmp; - xPropSet->setPropertyValue( rtl::OUString::createFromAscii( "TargetURL" ), aAny ); + xPropSet->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "TargetURL" )), aAny ); if( rTarget.Len() ) { aAny <<= rtl::OUString(rTarget); - xPropSet->setPropertyValue( rtl::OUString::createFromAscii( "TargetFrame" ), aAny ); + xPropSet->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "TargetFrame" )), aAny ); } form::FormButtonType eButtonType = form::FormButtonType_URL; aAny <<= eButtonType; - xPropSet->setPropertyValue( rtl::OUString::createFromAscii( "ButtonType" ), aAny ); + xPropSet->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ButtonType" )), aAny ); if ( ::avmedia::MediaWindow::isMediaURL( rURL ) ) { @@ -127,7 +124,6 @@ void ScTabViewShell::InsertURLButton( const String& rName, const String& rURL, aPos.X() -= aSize.Width(); pObj->SetLogicRect(Rectangle(aPos, aSize)); -// pObj->Resize(Point(), Fraction(1, 1), Fraction(1, 1)); // am alten VC-Button musste die Position/Groesse nochmal explizit // gesetzt werden - das scheint mit UnoControls nicht noetig zu sein diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx index 4ffb4d6db889..8e290a09e386 100644 --- a/sc/source/ui/view/viewdata.cxx +++ b/sc/source/ui/view/viewdata.cxx @@ -1082,19 +1082,18 @@ void ScViewData::SetEditEngine( ScSplitPos eWhich, if (!bWasThere) pNewEngine->InsertView(pEditView[eWhich]); - // Hintergrundfarbe der Zelle + // background color of the cell Color aBackCol = ((const SvxBrushItem&)pPattern->GetItem(ATTR_BACKGROUND)).GetColor(); ScModule* pScMod = SC_MOD(); - if ( aBackCol.GetTransparency() > 0 || - Application::GetSettings().GetStyleSettings().GetHighContrastMode() ) + if ( aBackCol.GetTransparency() > 0 ) { aBackCol.SetColor( pScMod->GetColorConfig().GetColorValue(svtools::DOCCOLOR).nColor ); } pEditView[eWhich]->SetBackgroundColor( aBackCol ); - pEditView[eWhich]->Invalidate(); // noetig ?? - // noetig, wenn Position geaendert + pEditView[eWhich]->Invalidate(); // needed ?? + // needed, wenn position changed } IMPL_LINK_INLINE_START( ScViewData, EmptyEditHdl, EditStatus *, EMPTYARG ) @@ -1594,7 +1593,7 @@ Point ScViewData::GetScrPos( SCCOL nWhereX, SCROW nWhereY, ScSplitPos eWhich, } // -// Anzahl Zellen auf einem Bildschirm +// Number of cells on a screen // SCCOL ScViewData::CellsAtX( SCsCOL nPosX, SCsCOL nDir, ScHSplitPos eWhichX, USHORT nScrSizeX ) const @@ -2582,12 +2581,6 @@ void ScViewData::ReadExtOptions( const ScExtDocOptions& rDocOpt ) // get some settings from displayed Excel sheet, set at Calc document if( nTab == GetTabNo() ) { - // selection only for displayed sheet, do not select single cell -// Disabled, does not work correctly. Anyway, our own XML filters do not import a selection at all. -// const ScRangeList& rSel = rTabSett.maSelection; -// if( (rSel.Count() >= 2) || ((rSel.Count() == 1) && (*rSel.GetObject( 0 ) != ScRange( rCursor ))) ) -// rMarkData.MarkFromRangeList( rTabSett.maSelection, FALSE ); - // grid color -- #i47435# set automatic grid color explicitly if( pOptions ) { @@ -3035,7 +3028,6 @@ ScAddress ScViewData::GetCurPos() const } -// static void ScViewData::AddPixelsWhile( long & rScrY, long nEndPixels, SCROW & rPosY, SCROW nEndRow, double nPPTY, const ScDocument * pDoc, SCTAB nTabNo ) { @@ -3075,7 +3067,6 @@ void ScViewData::AddPixelsWhile( long & rScrY, long nEndPixels, SCROW & rPosY, } -// static void ScViewData::AddPixelsWhileBackward( long & rScrY, long nEndPixels, SCROW & rPosY, SCROW nStartRow, double nPPTY, const ScDocument * pDoc, SCTAB nTabNo ) diff --git a/sc/source/ui/view/viewfun2.cxx b/sc/source/ui/view/viewfun2.cxx index 49f93c43ffac..17504f88f3fa 100644 --- a/sc/source/ui/view/viewfun2.cxx +++ b/sc/source/ui/view/viewfun2.cxx @@ -56,7 +56,6 @@ #include <basic/sbstar.hxx> #include <com/sun/star/container/XNameContainer.hpp> #include <com/sun/star/script/XLibraryContainer.hpp> -using namespace com::sun::star; #include "viewfunc.hxx" @@ -98,11 +97,16 @@ using namespace com::sun::star; #include <com/sun/star/script/XLibraryContainer.hpp> #include <boost/scoped_ptr.hpp> +#include <vector> +#include <memory> using namespace com::sun::star; using ::rtl::OUStringBuffer; using ::rtl::OUString; +using ::std::vector; +using ::std::auto_ptr; + // helper func defined in docfunc.cxx void VBA_DeleteModule( ScDocShell& rDocSh, String& sModuleName ); @@ -741,9 +745,11 @@ String ScViewFunc::GetAutoSumFormula( const ScRangeList& rRangeList, bool bSubTo } ScRangeList aRangeList = rRangeList; - const ScRange* pFirst = aRangeList.First(); - for (const ScRange* p = pFirst; p; p = aRangeList.Next()) + const ScRange* pFirst = aRangeList.front(); + size_t ListSize = aRangeList.size(); + for ( size_t i = 0; i < ListSize; ++i ) { + const ScRange* p = aRangeList[i]; if (p != pFirst) pArray->AddOpCode(ocSep); ScComplexRefData aRef; @@ -989,18 +995,12 @@ void ScViewFunc::SetPrintRanges( BOOL bEntireSheet, const String* pPrint, else if ( rMark.IsMultiMarked() ) { rMark.MarkToMulti(); - ScRangeListRef aList( new ScRangeList ); - rMark.FillRangeListWithMarks( aList, FALSE ); - USHORT nCnt = (USHORT) aList->Count(); - if ( nCnt ) + ScRangeListRef pList( new ScRangeList ); + rMark.FillRangeListWithMarks( pList, FALSE ); + for (size_t i = 0, n = pList->size(); i < n; ++i) { - ScRangePtr pR; - USHORT i; - for ( pR = aList->First(), i=0; i < nCnt; - pR = aList->Next(), i++ ) - { - pDoc->AddPrintRange( nTab, *pR ); - } + ScRange* pR = (*pList)[i]; + pDoc->AddPrintRange(nTab, *pR); } } } @@ -1405,12 +1405,11 @@ void ScViewFunc::FillTab( USHORT nFlags, USHORT nFunction, BOOL bSkipEmpty, BOOL aMarkRange = ScRange( GetViewData()->GetCurX(), GetViewData()->GetCurY(), nTab ); ScDocument* pUndoDoc = NULL; -// if ( bRecord ) + if (bUndo) { pUndoDoc = new ScDocument( SCDOCMODE_UNDO ); pUndoDoc->InitUndo( pDoc, nTab, nTab ); -// pUndoDoc->SelectTable( nTab, TRUE ); // nur fuer Markierung SCTAB nTabCount = pDoc->GetTableCount(); for (SCTAB i=0; i<nTabCount; i++) @@ -1420,7 +1419,6 @@ void ScViewFunc::FillTab( USHORT nFlags, USHORT nFunction, BOOL bSkipEmpty, BOOL aMarkRange.aStart.SetTab( i ); aMarkRange.aEnd.SetTab( i ); pDoc->CopyToDocument( aMarkRange, IDF_ALL, bMulti, pUndoDoc ); -// pUndoDoc->SelectTable( i, TRUE ); } } @@ -1433,7 +1431,6 @@ void ScViewFunc::FillTab( USHORT nFlags, USHORT nFunction, BOOL bSkipEmpty, BOOL pDoc->FillTab( aMarkRange, rMark, nFlags, nFunction, bSkipEmpty, bAsLink ); } -// if ( bRecord ) if (bUndo) { //! fuer ChangeTrack erst zum Schluss pDocSh->GetUndoManager()->AddUndoAction( @@ -1685,7 +1682,6 @@ void ScViewFunc::SearchAndReplace( const SvxSearchItem* pSearchItem, SCCOL nCol = GetViewData()->GetCurX(); SCROW nRow = GetViewData()->GetCurY(); SCTAB nTab = GetViewData()->GetTabNo(); -// BOOL bAttrib = pSearchItem->GetPattern(); USHORT nCommand = pSearchItem->GetCommand(); BOOL bAllTables = pSearchItem->IsAllTables(); BOOL* pOldSelectedTables = NULL; @@ -2218,11 +2214,8 @@ BOOL ScViewFunc::DeleteTables(const SvShorts &TheTabs, BOOL bRecord ) if (bRecord) { pUndoDoc = new ScDocument( SCDOCMODE_UNDO ); -// pUndoDoc->InitDrawLayer( pDocSh ); SCTAB nCount = pDoc->GetTableCount(); -// pUndoDoc->InitUndo( pDoc, 0, nCount-1 ); // incl. Ref. - String aOldName; for(i=0;i<TheTabs.Count();i++) { @@ -2430,7 +2423,6 @@ void ScViewFunc::ImportTables( ScDocShell* pSrcShell, ScDocShell* pDocSh = GetViewData()->GetDocShell(); ScDocument* pDoc = pDocSh->GetDocument(); BOOL bUndo(pDoc->IsUndoEnabled()); - //SCTAB nTab = GetViewData()->GetTabNo(); BOOL bError = FALSE; BOOL bRefs = FALSE; @@ -2547,7 +2539,7 @@ void ScViewFunc::ImportTables( ScDocShell* pSrcShell, //---------------------------------------------------------------------------- // Tabelle in anderes Dokument verschieben / kopieren -void ScViewFunc::MoveTable( USHORT nDestDocNo, SCTAB nDestTab, BOOL bCopy ) +void ScViewFunc::MoveTable( USHORT nDestDocNo, SCTAB nDestTab, BOOL bCopy, const String* pNewTabName ) { ScDocument* pDoc = GetViewData()->GetDocument(); ScDocShell* pDocShell = GetViewData()->GetDocShell(); @@ -2555,6 +2547,7 @@ void ScViewFunc::MoveTable( USHORT nDestDocNo, SCTAB nDestTab, BOOL bCopy ) ScDocShell* pDestShell = NULL; ScTabViewShell* pDestViewSh = NULL; BOOL bUndo (pDoc->IsUndoEnabled()); + bool bRename = pNewTabName && pNewTabName->Len(); BOOL bNewDoc = ( nDestDocNo == SC_DOC_NEW ); if ( bNewDoc ) @@ -2593,6 +2586,14 @@ void ScViewFunc::MoveTable( USHORT nDestDocNo, SCTAB nDestTab, BOOL bCopy ) return; } + ScMarkData& rMark = GetViewData()->GetMarkData(); + if (bRename && rMark.GetSelectCount() != 1) + { + // Custom sheet name is provided, but more than one sheet is selected. + // We don't support this scenario at the moment. + return; + } + pDestDoc = pDestShell->GetDocument(); SCTAB nTab = GetViewData()->GetTabNo(); @@ -2608,7 +2609,6 @@ void ScViewFunc::MoveTable( USHORT nDestDocNo, SCTAB nDestTab, BOOL bCopy ) FALSE ); } - ScMarkData& rMark = GetViewData()->GetMarkData(); SCTAB nTabCount = pDoc->GetTableCount(); SCTAB nTabSelCount = rMark.GetSelectCount(); @@ -2649,7 +2649,11 @@ void ScViewFunc::MoveTable( USHORT nDestDocNo, SCTAB nDestTab, BOOL bCopy ) for( USHORT j=0; j<TheTabs.Count(); j++, nDestTab1++ ) { // #63304# insert sheets first and update all references String aName; - pDoc->GetName( TheTabs[j], aName ); + if (bRename) + aName = *pNewTabName; + else + pDoc->GetName( TheTabs[j], aName ); + pDestDoc->CreateValidTabName( aName ); if ( !pDestDoc->InsertTab( nDestTab1, aName ) ) { @@ -2704,13 +2708,7 @@ void ScViewFunc::MoveTable( USHORT nDestDocNo, SCTAB nDestTab, BOOL bCopy ) default: break; } - //pDestShell->GetUndoManager()->Clear(); //! Undo implementieren !!! -/* - String sName; - pDestDoc->GetName(nDestTab, sName); - pDestShell->GetUndoManager()->AddUndoAction( - new ScUndoInsertTab( pDestShell, nDestTab, TRUE, sName ) ); -*/ + if (!bCopy) { if(nTabCount!=nTabSelCount) @@ -2726,7 +2724,6 @@ void ScViewFunc::MoveTable( USHORT nDestDocNo, SCTAB nDestTab, BOOL bCopy ) pDestDoc->UpdateChartListenerCollection(); pDestDoc->DeleteTab(static_cast<SCTAB>(TheTabs.Count())); // alte erste Tabelle -//? pDestDoc->SelectTable(0, TRUE); // neue erste Tabelle selektieren if (pDestViewSh) pDestViewSh->TabChanged(); // Pages auf dem Drawing-Layer pDestShell->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, @@ -2746,17 +2743,19 @@ void ScViewFunc::MoveTable( USHORT nDestDocNo, SCTAB nDestTab, BOOL bCopy ) pDestShell->SetDocumentModified(); SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_TABLES_CHANGED ) ); } - else // innerhalb des Dokuments + else { - - ScMarkData& rMark = GetViewData()->GetMarkData(); + // Move or copy within the same document. SCTAB nTabCount = pDoc->GetTableCount(); - SvShorts TheTabs; - SvShorts TheDestTabs; - SvStrings TheTabNames; + auto_ptr< vector<SCTAB> > pSrcTabs(new vector<SCTAB>); + auto_ptr< vector<SCTAB> > pDestTabs(new vector<SCTAB>); + auto_ptr< vector<OUString> > pTabNames(new vector<OUString>); + auto_ptr< vector<OUString> > pDestNames(NULL); + pSrcTabs->reserve(nTabCount); + pDestTabs->reserve(nTabCount); + pTabNames->reserve(nTabCount); String aDestName; - String *pString; for(SCTAB i=0;i<nTabCount;i++) { @@ -2764,19 +2763,18 @@ void ScViewFunc::MoveTable( USHORT nDestDocNo, SCTAB nDestTab, BOOL bCopy ) { String aTabName; pDoc->GetName( i, aTabName); - TheTabNames.Insert(new String(aTabName),TheTabNames.Count()); + pTabNames->push_back(aTabName); for(SCTAB j=i+1;j<nTabCount;j++) { if((!pDoc->IsVisible(j))&&(pDoc->IsScenario(j))) { pDoc->GetName( j, aTabName); - TheTabNames.Insert(new String(aTabName),TheTabNames.Count()); + pTabNames->push_back(aTabName); i=j; } else break; } - } } @@ -2786,11 +2784,11 @@ void ScViewFunc::MoveTable( USHORT nDestDocNo, SCTAB nDestTab, BOOL bCopy ) pDoc->GetName( nDestTab, aDestName); SCTAB nDestTab1=nDestTab; SCTAB nMovTab=0; - for(int j=0;j<TheTabNames.Count();j++) + for (size_t j = 0, n = pTabNames->size(); j < n; ++j) { nTabCount = pDoc->GetTableCount(); - pString=TheTabNames[sal::static_int_cast<USHORT>(j)]; - if(!pDoc->GetTable(*pString,nMovTab)) + const OUString& rStr = (*pTabNames)[j]; + if(!pDoc->GetTable(rStr,nMovTab)) { nMovTab=nTabCount; } @@ -2815,20 +2813,38 @@ void ScViewFunc::MoveTable( USHORT nDestDocNo, SCTAB nDestTab, BOOL bCopy ) pDoc->SetVisible(nDestTab1,bVisible ); } - TheTabs.Insert(nMovTab,TheTabs.Count()); + pSrcTabs->push_back(nMovTab); if(!bCopy) { - if(!pDoc->GetTable(*pString,nDestTab1)) + if(!pDoc->GetTable(rStr,nDestTab1)) { nDestTab1=nTabCount; } } - TheDestTabs.Insert(nDestTab1,TheDestTabs.Count()); - delete pString; + pDestTabs->push_back(nDestTab1); } + // Rename must be done after all sheets have been moved. + if (bRename) + { + pDestNames.reset(new vector<OUString>); + size_t n = pDestTabs->size(); + pDestNames->reserve(n); + for (size_t j = 0; j < n; ++j) + { + SCTAB nRenameTab = (*pDestTabs)[j]; + String aTabName = *pNewTabName; + pDoc->CreateValidTabName( aTabName ); + pDestNames->push_back(aTabName); + pDoc->RenameTab(nRenameTab, aTabName); + } + } + else + // No need to keep this around when we are not renaming. + pTabNames.reset(); + nTab = GetViewData()->GetTabNo(); if (bUndo) @@ -2836,12 +2852,14 @@ void ScViewFunc::MoveTable( USHORT nDestDocNo, SCTAB nDestTab, BOOL bCopy ) if (bCopy) { pDocShell->GetUndoManager()->AddUndoAction( - new ScUndoCopyTab( pDocShell, TheTabs, TheDestTabs)); + new ScUndoCopyTab( + pDocShell, pSrcTabs.release(), pDestTabs.release(), pDestNames.release())); } else { pDocShell->GetUndoManager()->AddUndoAction( - new ScUndoMoveTab( pDocShell, TheTabs, TheDestTabs)); + new ScUndoMoveTab( + pDocShell, pSrcTabs.release(), pDestTabs.release(), pTabNames.release(), pDestNames.release())); } } diff --git a/sc/source/ui/view/viewfun3.cxx b/sc/source/ui/view/viewfun3.cxx index a3096463d544..992f797e17ee 100644 --- a/sc/source/ui/view/viewfun3.cxx +++ b/sc/source/ui/view/viewfun3.cxx @@ -58,18 +58,12 @@ #define _MODALDLG_HXX #define _MOREBUTTON_HXX #define _OUTLINER_HXX -//#define _PRNDLG_HXX -//#define _POLY_HXX #define _PVRWIN_HXX -//#define _QUEUE_HXX #define _RULER_HXX #define _SCRWIN_HXX #define _SETBRW_HXX -//#define _STACK_HXX -//#define _STATUS_HXX *** #define _STDCTRL_HXX #define _STDMENU_HXX -//#define _TAB_HXX #define _TABBAR_HXX #define _TREELIST_HXX #define _VALUESET_HXX @@ -80,38 +74,23 @@ #define _VCONT_HXX #define _VDRWOBJ_HXX -//#define _SELENG_HXX -//#define _SOUND_HXX -//#define _SYSDLG_HXX - - - - #define _PASSWD_HXX #define _SFX_DOCFILE_HXX -//#define _SFX_DOCFILT_HXX #define _SFX_DOCINF_HXX #define _SFX_DOCSH_HXX -//#define _SFXDOCFILT_HXX -//#define _SFXDOCINF_HXX -//#define _SFXDOCSH_HXX #define _SFX_PRNMON_HXX #define _SFX_RESMGR_HXX #define _SFX_TEMPLDLG_HXX -//#define _SFXAPPWIN_HXX #define _SFXBASIC_HXX #define _SFXCTRLITEM #define _SFXDLGCFG_HXX -//#define _SFXDISPATCH_HXX #define _SFXFILEDLG_HXX -//#define _SFXIMGMGR_HXX #define _SFXIPFRM_HXX #define _SFX_MACRO_HXX #define _SFXMNUITEM_HXX #define _SFXMNUMGR_HXX #define _SFXMULTISEL_HXX -//#define _SFXMSG_HXX #define _SFXMSGDESCR_HXX #define _SFXMSGPOOL_HXX #define _SFX_MINFITEM_HXX @@ -124,14 +103,6 @@ #define _SFXTBXMGR_HXX #define _SI_HXX -//#define _SI_DLL_HXX -//#define _SIDLL_HXX -//#define _SI_NOITEMS -//#define _SI_NOOTHERFORMS -//#define _SI_NOSBXCONTROLS -//#define _SINOSBXCONTROLS -//#define _SI_NODRW -//#define _SI_NOCONTROL #define _SVBOXITM_HXX #define _SVCONTNR_HXX // @@ -140,7 +111,6 @@ #define _SVDRAG_HXX #define _SVINCVW_HXX -//#define _SV_MULTISEL_HXX #define _SVRTV_HXX #define _SVTABBX_HXX #define _SVTREEBOX_HXX @@ -211,7 +181,7 @@ #include "drwtrans.hxx" #include "docuno.hxx" #include "clipparam.hxx" -#include "undodat.hxx" // Amelia Wang +#include "undodat.hxx" using namespace com::sun::star; @@ -403,15 +373,16 @@ BOOL ScViewFunc::CopyToClip( ScDocument* pClipDoc, BOOL bCut, BOOL bApi, BOOL bI // Check for geometrical feasibility of the ranges. bool bValidRanges = true; - ScRangePtr p = aClipParam.maRanges.First(); + ScRange* p = aClipParam.maRanges.front(); SCCOL nPrevColDelta = 0; SCROW nPrevRowDelta = 0; SCCOL nPrevCol = p->aStart.Col(); SCROW nPrevRow = p->aStart.Row(); SCCOL nPrevColSize = p->aEnd.Col() - p->aStart.Col() + 1; SCROW nPrevRowSize = p->aEnd.Row() - p->aStart.Row() + 1; - for (p = aClipParam.maRanges.Next(); p; p = aClipParam.maRanges.Next()) + for ( size_t i = 1; i < aClipParam.maRanges.size(); ++i ) { + p = aClipParam.maRanges[i]; if (pDoc->HasSelectedBlockMatrixFragment( p->aStart.Col(), p->aStart.Row(), p->aEnd.Col(), p->aEnd.Row(), rMark)) { @@ -652,7 +623,6 @@ void ScViewFunc::PasteFromSystem() { TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( pWin ) ); -// if (pClipObj.Is()) { ULONG nBiff8 = SotExchange::RegisterFormatName( String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("Biff8"))); @@ -729,13 +699,8 @@ void ScViewFunc::PasteFromSystem() PasteFromSystem( SOT_FORMATSTR_ID_EMBED_SOURCE_OLE ); else if (aDataHelper.HasFormat( SOT_FORMATSTR_ID_LINK_SOURCE_OLE )) PasteFromSystem( SOT_FORMATSTR_ID_LINK_SOURCE_OLE ); -// else -// ErrorMessage(STR_PASTE_ERROR); } -// else -// ErrorMessage(STR_PASTE_ERROR); } - // keine Fehlermeldung, weil SID_PASTE in der idl das FastCall-Flag hat, // also auch gerufen wird, wenn nichts im Clipboard steht (#42531#) } @@ -1075,28 +1040,45 @@ BOOL ScViewFunc::PasteFromClip( USHORT nFlags, ScDocument* pClipDoc, bool bMarkIsFiltered = (eMarkType == SC_MARK_SIMPLE_FILTERED); bool bNoPaste = ((eMarkType != SC_MARK_SIMPLE && !bMarkIsFiltered) || (bMarkIsFiltered && (eMoveMode != INS_NONE || bAsLink))); - if (!bNoPaste && !rMark.IsMarked()) + + if (!bNoPaste) { - // Create a selection with clipboard row count and check that for - // filtered. - nStartCol = GetViewData()->GetCurX(); - nStartRow = GetViewData()->GetCurY(); - nStartTab = GetViewData()->GetTabNo(); - nEndCol = nStartCol + nDestSizeX; - nEndRow = nStartRow + nDestSizeY; - nEndTab = nStartTab; - aMarkRange = ScRange( nStartCol, nStartRow, nStartTab, nEndCol, nEndRow, nEndTab); - if (ScViewUtil::HasFiltered( aMarkRange, pDoc)) + if (!rMark.IsMarked()) { - bMarkIsFiltered = true; - // Fit to clipboard's row count unfiltered rows. If there is no - // fit assume that pasting is not possible. Note that nDestSizeY is - // size-1 (difference). - if (!ScViewUtil::FitToUnfilteredRows( aMarkRange, pDoc, nDestSizeY+1)) - bNoPaste = true; + // Create a selection with clipboard row count and check that for + // filtered. + nStartCol = GetViewData()->GetCurX(); + nStartRow = GetViewData()->GetCurY(); + nStartTab = GetViewData()->GetTabNo(); + nEndCol = nStartCol + nDestSizeX; + nEndRow = nStartRow + nDestSizeY; + nEndTab = nStartTab; + aMarkRange = ScRange( nStartCol, nStartRow, nStartTab, nEndCol, nEndRow, nEndTab); + if (ScViewUtil::HasFiltered( aMarkRange, pDoc)) + { + bMarkIsFiltered = true; + // Fit to clipboard's row count unfiltered rows. If there is no + // fit assume that pasting is not possible. Note that nDestSizeY is + // size-1 (difference). + if (!ScViewUtil::FitToUnfilteredRows( aMarkRange, pDoc, nDestSizeY+1)) + bNoPaste = true; + } + aFilteredMark.SetMarkArea( aMarkRange); + } + else + { + // Expand the marked area when the destination area is larger than the + // current selection, to get the undo do the right thing. (i#106711) + ScRange aRange; + aFilteredMark.GetMarkArea( aRange ); + if( (aRange.aEnd.Col() - aRange.aStart.Col()) < nDestSizeX ) + { + aRange.aEnd.SetCol(aRange.aStart.Col() + nDestSizeX); + aFilteredMark.SetMarkArea(aRange); + } } - aFilteredMark.SetMarkArea( aMarkRange); } + if (bNoPaste) { ErrorMessage(STR_MSSG_PASTEFROMCLIP_0); @@ -1110,8 +1092,10 @@ BOOL ScViewFunc::PasteFromClip( USHORT nFlags, ScDocument* pClipDoc, ScViewUtil::UnmarkFiltered( aFilteredMark, pDoc); aFilteredMark.FillRangeListWithMarks( &aRangeList, FALSE); nUnfilteredRows = 0; - for (ScRange* p = aRangeList.First(); p; p = aRangeList.Next()) + size_t ListSize = aRangeList.size(); + for ( size_t i = 0; i < ListSize; ++i ) { + ScRange* p = aRangeList[i]; nUnfilteredRows += p->aEnd.Row() - p->aStart.Row() + 1; } #if 0 @@ -1260,12 +1244,6 @@ BOOL ScViewFunc::PasteFromClip( USHORT nFlags, ScDocument* pClipDoc, nUndoEndCol = sal::static_int_cast<SCCOL>( nUndoEndCol + nEndCol ); nUndoEndRow = sal::static_int_cast<SCROW>( nUndoEndRow + nEndRow ); // destination area, expanded for merged cells -// if (nUndoEndCol < nEndCol) nUndoEndCol = nEndCol; -// if (nUndoEndRow < nEndRow) nUndoEndRow = nEndRow; - -// nUndoEndCol += nMarkAddX; -// nUndoEndRow += nMarkAddY; - if (nUndoEndCol>MAXCOL || nUndoEndRow>MAXROW) { ErrorMessage(STR_PASTE_FULL); @@ -1286,9 +1264,6 @@ BOOL ScViewFunc::PasteFromClip( USHORT nFlags, ScDocument* pClipDoc, //! Test auf Ueberlappung //! nur wirkliche Schnittmenge testen !!!!!!! - // pDoc->HasCommonAttr( StartCol,nStartRow, nUndoEndCol,nUndoEndRow, nStartTab, - // pClipDoc, nClipStartX, nClipStartY ); - ScDocFunc& rDocFunc = pDocSh->GetDocFunc(); if ( bRecord ) { @@ -1441,9 +1416,6 @@ BOOL ScViewFunc::PasteFromClip( USHORT nFlags, ScDocument* pClipDoc, TRUE, FALSE, bIncludeFiltered ); } - // - // - // pDocSh->UpdatePaintExt( nExtFlags, nStartCol, nStartRow, nStartTab, nEndCol, nEndRow, nEndTab ); // content after the change @@ -1904,7 +1876,6 @@ void ScViewFunc::DataFormPutData( SCROW nCurrentRow , } USHORT nExtFlags = 0; pDocSh->UpdatePaintExt( nExtFlags, nStartCol, nStartRow, nStartTab , nEndCol, nEndRow, nEndTab ); // content before the change - //rMark.SetMarkArea( aUserRange ); pDoc->BeginDrawUndo(); for(sal_uInt16 i = 0; i < aColLength; i++) @@ -1915,7 +1886,6 @@ void ScViewFunc::DataFormPutData( SCROW nCurrentRow , pDoc->SetString( nStartCol + i, nCurrentRow, nTab, aFieldName ); } } - //pDoc->ExtendMergeSel( nStartCol, nStartRow, nEndCol, nEndRow, rMark, TRUE ); // Refresh pDocSh->UpdatePaintExt( nExtFlags, nStartCol, nCurrentRow, nStartTab, nEndCol, nCurrentRow, nEndTab ); // content after the change SfxUndoAction* pUndo = new ScUndoDataForm( pDocSh, nStartCol, nCurrentRow, nStartTab, diff --git a/sc/source/ui/view/viewfun4.cxx b/sc/source/ui/view/viewfun4.cxx index 52fe04459ad8..e4a08ac956e0 100644 --- a/sc/source/ui/view/viewfun4.cxx +++ b/sc/source/ui/view/viewfun4.cxx @@ -239,15 +239,15 @@ void ScViewFunc::DoRefConversion( BOOL bRecord ) ScRangeListRef xRanges; GetViewData()->GetMultiArea( xRanges ); - ULONG nCount = xRanges->Count(); + size_t nCount = xRanges->size(); for (SCTAB i=0; i<nTabCount; i++) { if (rMark.GetTableSelect(i)) { - for (ULONG j=0; j<nCount; j++) + for (size_t j = 0; j < nCount; ++j) { - ScRange aRange = *xRanges->GetObject(j); + ScRange aRange = *(*xRanges)[j]; aRange.aStart.SetTab(i); aRange.aEnd.SetTab(i); ScCellIterator aIter( pDoc, aRange ); @@ -393,9 +393,11 @@ void ScViewFunc::DoThesaurus( BOOL bRecord ) if (pCell) { ((ScEditCell*) pCell)->GetData(pTObject); - pOldTObj = pTObject->Clone(); if (pTObject) + { + pOldTObj = pTObject->Clone(); pThesaurusEngine->SetText(*pTObject); + } } } else @@ -476,14 +478,12 @@ void ScViewFunc::DoSheetConversion( const ScConversionParam& rConvParam, BOOL bR ScMarkData& rMark = rViewData.GetMarkData(); ScSplitPos eWhich = rViewData.GetActivePart(); EditView* pEditView = NULL; - ESelection* pEditSel = NULL; BOOL bIsEditMode = rViewData.HasEditView(eWhich); if (bRecord && !pDoc->IsUndoEnabled()) bRecord = FALSE; if (bIsEditMode) // Edit-Mode aktiv { rViewData.GetEditView(eWhich, pEditView, nCol, nRow); - pEditSel = new ESelection(pEditView->GetSelection()); SC_MOD()->InputEnterHandler(); } else @@ -503,7 +503,6 @@ void ScViewFunc::DoSheetConversion( const ScConversionParam& rConvParam, BOOL bR if (!aTester.IsEditable()) { ErrorMessage(aTester.GetMessageId()); - delete pEditSel; return; } } @@ -597,7 +596,6 @@ void ScViewFunc::DoSheetConversion( const ScConversionParam& rConvParam, BOOL bR rViewData.SetSpellingView( NULL ); KillEditView(TRUE); delete pEngine; - delete pEditSel; pDocSh->PostPaintGridAll(); rViewData.GetViewShell()->UpdateInputHandler(); pDoc->DisableIdle(bOldDis); @@ -657,7 +655,6 @@ BOOL ScViewFunc::PasteFile( const Point& rPos, const String& rFile, BOOL bLink ) Graphic aGraphic; GraphicFilter* pGraphicFilter = GraphicFilter::GetGraphicFilter(); -// GraphicProgress aGraphicProgress(&aGraphicFilter); if (!pGraphicFilter->ImportGraphic(aGraphic, aURL, GRFILTER_FORMAT_DONTKNOW, &nFilterFormat )) diff --git a/sc/source/ui/view/viewfun5.cxx b/sc/source/ui/view/viewfun5.cxx index 5ab159cf7dbc..98146947d007 100644 --- a/sc/source/ui/view/viewfun5.cxx +++ b/sc/source/ui/view/viewfun5.cxx @@ -192,17 +192,6 @@ BOOL ScViewFunc::PasteDataFormat( ULONG nFormatId, // try to get the replacement image from the clipboard Graphic aGraphic; ULONG nGrFormat = 0; -// (wg. Selection Manager bei Trustet Solaris) -#ifndef SOLARIS -/* - if( aDataHelper.GetGraphic( SOT_FORMATSTR_ID_SVXB, aGraphic ) ) - nGrFormat = SOT_FORMATSTR_ID_SVXB; - else if( aDataHelper.GetGraphic( FORMAT_GDIMETAFILE, aGraphic ) ) - nGrFormat = SOT_FORMAT_GDIMETAFILE; - else if( aDataHelper.GetGraphic( FORMAT_BITMAP, aGraphic ) ) - nGrFormat = SOT_FORMAT_BITMAP; -*/ -#endif // insert replacement image ( if there is one ) into the object helper if ( nGrFormat ) @@ -224,9 +213,6 @@ BOOL ScViewFunc::PasteDataFormat( ULONG nFormatId, } else { -// uno::Reference < io::XInputStream > xStm; -// TransferableObjectDescriptor aObjDesc; - if ( aDataHelper.GetTransferableObjectDescriptor( SOT_FORMATSTR_ID_OBJECTDESCRIPTOR_OLE, aObjDesc ) ) { ::rtl::OUString aName; @@ -320,8 +306,27 @@ BOOL ScViewFunc::PasteDataFormat( ULONG nFormatId, ::rtl::OUString aStr; SotStorageStreamRef xStream; if ( aDataHelper.GetSotStorageStream( nFormatId, xStream ) && xStream.Is() ) + { + if (nFormatId == SOT_FORMATSTR_ID_HTML) + { + // Launch the text import options dialog. For now, we do + // this for html pasting only, but in the future it may + // make sense to do it for other data types too. + ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create(); + ::std::auto_ptr<AbstractScTextImportOptionsDlg> pDlg( + pFact->CreateScTextImportOptionsDlg(NULL, RID_SCDLG_TEXT_IMPORT_OPTIONS)); + + if (pDlg->Execute() == RET_OK) + { + ScAsciiOptions aOptions; + aOptions.SetLanguage(pDlg->GetLanguageType()); + aOptions.SetDetectSpecialNumber(pDlg->IsDateConversionSet()); + aObj.SetExtOptions(aOptions); + } + } // mba: clipboard always must contain absolute URLs (could be from alien source) bRet = aObj.ImportStream( *xStream, String(), nFormatId ); + } else if (nFormatId == FORMAT_STRING && aDataHelper.GetString( nFormatId, aStr )) { // Do CSV dialog if more than one line. diff --git a/sc/source/ui/view/viewfun6.cxx b/sc/source/ui/view/viewfun6.cxx index 3aaae4e10f0d..90e42b2ead28 100644 --- a/sc/source/ui/view/viewfun6.cxx +++ b/sc/source/ui/view/viewfun6.cxx @@ -36,6 +36,7 @@ #include <vcl/msgbox.hxx> #include <vcl/sound.hxx> #include "svl/zforlist.hxx" +#include "svl/zformat.hxx" #include "viewfunc.hxx" #include "detfunc.hxx" @@ -167,27 +168,32 @@ void ScViewFunc::MarkAndJumpToRanges(const ScRangeList& rRanges) ScDocShell* pDocSh = pView->GetDocShell(); ScRangeList aRanges(rRanges); - ScRange* p = aRanges.First(); + ScRange* p = aRanges.front(); ScRangeList aRangesToMark; ScAddress aCurPos = pView->GetCurPos(); - for (; p; p = aRanges.Next()) + size_t ListSize = aRanges.size(); + for ( size_t i = 0; i < ListSize; ++i ) { + p = aRanges[i]; // Collect only those ranges that are on the same sheet as the current // cursor. - if (p->aStart.Tab() == aCurPos.Tab()) aRangesToMark.Append(*p); } - if (!aRangesToMark.Count()) + if (aRangesToMark.empty()) return; // Jump to the first range of all precedent ranges. - p = aRangesToMark.First(); + p = aRangesToMark.front(); lcl_jumpToRange(*p, pView, pDocSh->GetDocument()); - for (; p; p = aRangesToMark.Next()) + ListSize = aRangesToMark.size(); + for ( size_t i = 0; i < ListSize; ++i ) + { + p = aRangesToMark[i]; MarkRange(*p, false, true); + } } void ScViewFunc::DetectiveMarkPred() @@ -203,14 +209,14 @@ void ScViewFunc::DetectiveMarkPred() else aRanges.Append(aCurPos); - vector<ScSharedTokenRef> aRefTokens; + vector<ScTokenRef> aRefTokens; pDocSh->GetDocFunc().DetectiveCollectAllPreds(aRanges, aRefTokens); if (aRefTokens.empty()) // No precedents found. Nothing to do. return; - ScSharedTokenRef p = aRefTokens.front(); + ScTokenRef p = aRefTokens.front(); if (ScRefTokenHelper::isExternalRef(p)) { // This is external. Open the external document if available, and @@ -268,7 +274,7 @@ void ScViewFunc::DetectiveMarkSucc() else aRanges.Append(aCurPos); - vector<ScSharedTokenRef> aRefTokens; + vector<ScTokenRef> aRefTokens; pDocSh->GetDocFunc().DetectiveCollectAllSuccs(aRanges, aRefTokens); if (aRefTokens.empty()) @@ -297,7 +303,13 @@ void ScViewFunc::InsertCurrentTime(short nCellFmt, const OUString& rUndoStr) fTime /= D_TIMEFACTOR; pUndoMgr->EnterListAction(rUndoStr, rUndoStr); pDocSh->GetDocFunc().PutCell(aCurPos, new ScValueCell(fDate+fTime), false); - SetNumberFormat(nCellFmt); + + // Set the new cell format only when it differs from the current cell + // format type. + sal_uInt32 nCurNumFormat = pDoc->GetNumberFormat(aCurPos); + const SvNumberformat* pEntry = pFormatter->GetEntry(nCurNumFormat); + if (!pEntry || !(pEntry->GetType() & nCellFmt)) + SetNumberFormat(nCellFmt); pUndoMgr->LeaveListAction(); } diff --git a/sc/source/ui/view/viewfun7.cxx b/sc/source/ui/view/viewfun7.cxx index b01c7c53da35..6b4387b16b90 100644 --- a/sc/source/ui/view/viewfun7.cxx +++ b/sc/source/ui/view/viewfun7.cxx @@ -70,7 +70,6 @@ using namespace com::sun::star; void lcl_AdjustInsertPos( ScViewData* pData, Point& rPos, Size& rSize ) { -// SdrPage* pPage = pData->GetDocument()->GetDrawLayer()->GetPage( pData->GetTabNo() ); SdrPage* pPage = pData->GetScDrawView()->GetModel()->GetPage( static_cast<sal_uInt16>(pData->GetTabNo()) ); DBG_ASSERT(pPage,"pPage ???"); Size aPgSize( pPage->GetSize() ); @@ -160,9 +159,7 @@ void ScViewFunc::PasteDraw( const Point& rLogicPos, SdrModel* pModel, const SdrMark* pM=aMark.GetMark(nm); const SdrObject* pObj=pM->GetMarkedSdrObj(); - // #116235# SdrObject* pNeuObj=pObj->Clone(); - //SdrObject* pNeuObj=pObj->Clone(pDestPage,pDrawModel); if (pNeuObj!=NULL) { @@ -374,7 +371,7 @@ BOOL ScViewFunc::PasteGraphic( const Point& rPos, const Graphic& rGraphic, } Size aSize = pWin->LogicToLogic( rGraphic.GetPrefSize(), &aSourceMap, &aDestMap ); -// lcl_AdjustInsertPos( GetViewData(), aPos, aSize ); + if ( GetViewData()->GetDocument()->IsNegativePage( GetViewData()->GetTabNo() ) ) aPos.X() -= aSize.Width(); diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx index 2997b71822e5..dac8601c63e4 100644 --- a/sc/source/ui/view/viewfunc.cxx +++ b/sc/source/ui/view/viewfunc.cxx @@ -93,6 +93,20 @@ #include "cellsuno.hxx" //================================================================== +static void lcl_PostRepaintCondFormat( const ScConditionalFormat *pCondFmt, ScDocShell *pDocSh ) +{ + if( pCondFmt ) + { + const ScRangeListRef& aRanges = pCondFmt->GetRangeInfo(); + size_t nCount = aRanges->size(); + for( size_t n = 0 ; n < nCount; n++ ) + pDocSh->PostPaint( *((*aRanges)[n]), PAINT_ALL ); + } +} + + +//================================================================== + ScViewFunc::ScViewFunc( Window* pParent, ScDocShell& rDocSh, ScTabViewShell* pViewShell ) : ScTabView( pParent, rDocSh, pViewShell ), bFormatValid( FALSE ) @@ -409,7 +423,7 @@ void ScViewFunc::EnterData( SCCOL nCol, SCROW nRow, SCTAB nTab, const String& rS ++nUndoPos; } - DBG_ASSERT( nUndoPos==nSelCount, "nUndoPos!=nSelCount" ); + OSL_ENSURE( nUndoPos==nSelCount, "nUndoPos!=nSelCount" ); pUndoData = ( pData ? pData->Clone() : NULL ); } @@ -667,6 +681,7 @@ void ScViewFunc::EnterData( SCCOL nCol, SCROW nRow, SCTAB nTab, const String& rS } aModificator.SetDocumentModified(); + lcl_PostRepaintCondFormat( pDoc->GetCondFormat( nCol, nRow, nTab ), pDocSh ); } else { @@ -708,11 +723,6 @@ void ScViewFunc::EnterValue( SCCOL nCol, SCROW nRow, SCTAB nTab, const double& r new ScUndoEnterValue( pDocSh, aPos, pUndoCell, rValue, bNeedHeight ) ); } -/*! Zeilenhoehe anpassen? Dann auch bei Undo... - if (bNeedHeight) - AdjustRowHeight(nRow,nRow); -*/ - pDocSh->PostPaintCell( aPos ); pDocSh->UpdateOle(GetViewData()); aModificator.SetDocumentModified(); @@ -865,6 +875,7 @@ void ScViewFunc::EnterData( SCCOL nCol, SCROW nRow, SCTAB nTab, const EditTextOb aModificator.SetDocumentModified(); } + lcl_PostRepaintCondFormat( pDoc->GetCondFormat( nCol, nRow, nTab ), pDocSh ); delete pCellAttrs; delete pNewData; @@ -943,10 +954,10 @@ BYTE ScViewFunc::GetSelectionScriptType() { ScRangeList aRanges; rMark.FillRangeListWithMarks( &aRanges, FALSE ); - ULONG nCount = aRanges.Count(); - for (ULONG i=0; i<nCount; i++) + size_t nCount = aRanges.size(); + for ( size_t i=0; i < nCount; i++ ) { - ScRange aRange = *aRanges.GetObject(i); + ScRange aRange = *aRanges[i]; ScCellIterator aIter( pDoc, aRange ); ScBaseCell* pCell = aIter.GetFirst(); while ( pCell ) @@ -1940,7 +1951,6 @@ void ScViewFunc::DeleteContents( USHORT nFlags, BOOL bRecord ) aMarkRange.aEnd = aMarkRange.aStart; if ( pDoc->HasAttrib( aMarkRange, HASATTR_MERGED ) ) { -// InitOwnBlockMode(); aFuncMark.SetMarkArea( aMarkRange ); } else @@ -2037,7 +2047,6 @@ void ScViewFunc::DeleteContents( USHORT nFlags, BOOL bRecord ) else { pDoc->DeleteSelection( nFlags, aFuncMark ); -// aFuncMark.MarkToSimple(); } if ( bRecord ) diff --git a/sc/source/ui/view/viewutil.cxx b/sc/source/ui/view/viewutil.cxx index 050fb131bfae..92f9844fb2c4 100644 --- a/sc/source/ui/view/viewutil.cxx +++ b/sc/source/ui/view/viewutil.cxx @@ -68,7 +68,6 @@ //================================================================== -// static void ScViewUtil::PutItemScript( SfxItemSet& rShellSet, const SfxItemSet& rCoreSet, USHORT nWhichId, USHORT nScript ) { @@ -87,7 +86,6 @@ void ScViewUtil::PutItemScript( SfxItemSet& rShellSet, const SfxItemSet& rCoreSe rShellSet.InvalidateItem( nWhichId ); } -// static USHORT ScViewUtil::GetEffLanguage( ScDocument* pDoc, const ScAddress& rPos ) { // used for thesaurus @@ -117,7 +115,6 @@ USHORT ScViewUtil::GetEffLanguage( ScDocument* pDoc, const ScAddress& rPos ) return eLnge; } -// static sal_Int32 ScViewUtil::GetTransliterationType( USHORT nSlotID ) { sal_Int32 nType = 0; @@ -154,7 +151,6 @@ sal_Int32 ScViewUtil::GetTransliterationType( USHORT nSlotID ) return nType; } -// static BOOL ScViewUtil::IsActionShown( const ScChangeAction& rAction, const ScChangeViewSettings& rSettings, ScDocument& rDocument ) @@ -255,7 +251,6 @@ BOOL ScViewUtil::IsActionShown( const ScChangeAction& rAction, return TRUE; } -// static void ScViewUtil::UnmarkFiltered( ScMarkData& rMark, ScDocument* pDoc ) { rMark.MarkToMulti(); @@ -294,7 +289,6 @@ void ScViewUtil::UnmarkFiltered( ScMarkData& rMark, ScDocument* pDoc ) } -// static bool ScViewUtil::FitToUnfilteredRows( ScRange & rRange, ScDocument * pDoc, size_t nRows ) { SCTAB nTab = rRange.aStart.Tab(); @@ -309,8 +303,6 @@ bool ScViewUtil::FitToUnfilteredRows( ScRange & rRange, ScDocument * pDoc, size_ return static_cast<size_t>(nCount) == nRows && bOneTabOnly; } - -// static bool ScViewUtil::HasFiltered( const ScRange& rRange, ScDocument* pDoc ) { SCROW nStartRow = rRange.aStart.Row(); @@ -324,7 +316,6 @@ bool ScViewUtil::HasFiltered( const ScRange& rRange, ScDocument* pDoc ) return false; } -// static void ScViewUtil::HideDisabledSlot( SfxItemSet& rSet, SfxBindings& rBindings, USHORT nSlotId ) { SvtCJKOptions aCJKOptions; |