sc/source/filter/xml/xmlcelli.cxx | 99 ++++++++++++-------------------------- sc/source/filter/xml/xmlcelli.hxx | 6 -- 2 files changed, 35 insertions(+), 70 deletions(-)
New commits: commit 576fea5068cd43999da230a872c8d1217a5d2e86 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Thu Feb 7 23:12:55 2013 -0500 Import multi-line content into ScEditCell. Change-Id: I4fc53ddb888ff31a78dc233dd487f0e70daa6522 diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx index 2272e98..abe8353 100644 --- a/sc/source/filter/xml/xmlcelli.cxx +++ b/sc/source/filter/xml/xmlcelli.cxx @@ -676,6 +676,27 @@ void ScXMLTableRowCellContext::SetFormulaCell(ScFormulaCell* pFCell) const } } +namespace { + +ScBaseCell* createEditCell(ScDocument* pDoc, const std::vector<OUString>& rParagraphs) +{ + // Create edit cell. + OUStringBuffer aBuf; + std::vector<OUString>::const_iterator it = rParagraphs.begin(), itEnd = rParagraphs.end(); + bool bFirst = true; + for (; it != itEnd; ++it) + { + if (bFirst) + bFirst = false; + else + aBuf.append('\n'); + aBuf.append(*it); + } + return ScBaseCell::CreateTextCell(aBuf.makeStringAndClear(), pDoc); +} + +} + void ScXMLTableRowCellContext::PutTextCell( const ScAddress& rCurrentPos, const SCCOL nCurrentCol, const ::boost::optional< rtl::OUString >& pOUText ) { @@ -728,7 +749,7 @@ void ScXMLTableRowCellContext::PutTextCell( const ScAddress& rCurrentPos, if (maStringValue) pNewCell = ScBaseCell::CreateTextCell( *maStringValue, pDoc ); else if (!maParagraphs.empty()) - pNewCell = ScBaseCell::CreateTextCell(maParagraphs.back(), pDoc); + pNewCell = createEditCell(pDoc, maParagraphs); else if ( nCurrentCol > 0 && pOUText && !pOUText->isEmpty() ) pNewCell = ScBaseCell::CreateTextCell( *pOUText, pDoc ); commit 5e2305c438eed64a56ff8beb515126ca0107306b Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Thu Feb 7 22:57:00 2013 -0500 No need to check for empty value; it's checked when a value is assigned. Change-Id: I7d96910a6d8216aa17858b0cb05e161080c8dccc diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx index d1df64f..2272e98 100644 --- a/sc/source/filter/xml/xmlcelli.cxx +++ b/sc/source/filter/xml/xmlcelli.cxx @@ -690,7 +690,7 @@ void ScXMLTableRowCellContext::PutTextCell( const ScAddress& rCurrentPos, { ScFormulaCell* pFCell = static_cast<ScFormulaCell*>(pCell); OUString aCellString; - if (maStringValue && !maStringValue->isEmpty()) + if (maStringValue) aCellString = *maStringValue; else if (!maParagraphs.empty()) aCellString = maParagraphs.back(); @@ -725,7 +725,7 @@ void ScXMLTableRowCellContext::PutTextCell( const ScAddress& rCurrentPos, { ScBaseCell* pNewCell = NULL; ScDocument* pDoc = rXMLImport.GetDocument(); - if (maStringValue && !maStringValue->isEmpty()) + if (maStringValue) pNewCell = ScBaseCell::CreateTextCell( *maStringValue, pDoc ); else if (!maParagraphs.empty()) pNewCell = ScBaseCell::CreateTextCell(maParagraphs.back(), pDoc); @@ -935,7 +935,7 @@ void ScXMLTableRowCellContext::AddNonFormulaCell( const ScAddress& rCellPos ) pOUText.reset( getOutputString(rXMLImport.GetDocument(), rCellPos) ); if (maParagraphs.empty() && !pOUText && !maStringValue) - bIsEmpty = true; + bIsEmpty = true; } ScAddress aCurrentPos( rCellPos ); commit 21c7138535f64d4263da822607537f661db95181 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Thu Feb 7 22:51:50 2013 -0500 These method names should use singular 'Cell', not 'Cells'. Change-Id: I9faa2727eda05be041aff4347f921ec9cd9b49d2 diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx index 179c992..d1df64f 100644 --- a/sc/source/filter/xml/xmlcelli.cxx +++ b/sc/source/filter/xml/xmlcelli.cxx @@ -785,7 +785,7 @@ bool isEmptyOrNote( ScDocument* pDoc, const ScAddress& rCurrentPos ) } -void ScXMLTableRowCellContext::AddTextAndValueCells( const ScAddress& rCellPos, +void ScXMLTableRowCellContext::AddTextAndValueCell( const ScAddress& rCellPos, const ::boost::optional< rtl::OUString >& pOUText, ScAddress& rCurrentPos ) { ScMyTables& rTables = rXMLImport.GetTables(); @@ -925,7 +925,7 @@ rtl::OUString getOutputString(ScDocument* pDoc, const ScAddress& aCellPos) } -void ScXMLTableRowCellContext::AddNonFormulaCells( const ScAddress& rCellPos ) +void ScXMLTableRowCellContext::AddNonFormulaCell( const ScAddress& rCellPos ) { ::boost::optional< rtl::OUString > pOUText; @@ -942,7 +942,7 @@ void ScXMLTableRowCellContext::AddNonFormulaCells( const ScAddress& rCellPos ) if( HasSpecialContent() ) bIsEmpty = false; - AddTextAndValueCells( rCellPos, pOUText, aCurrentPos ); + AddTextAndValueCell( rCellPos, pOUText, aCurrentPos ); if( CellsAreRepeated() ) { @@ -1114,10 +1114,11 @@ void ScXMLTableRowCellContext::EndElement() aCellPos.SetRow( aCellPos.Row() - (nRepeatedRows - 1) ); if( bIsMerged ) DoMerge( aCellPos, nMergedCols - 1, nMergedRows - 1 ); - if (!maFormula) - AddNonFormulaCells( aCellPos ); + + if (maFormula) + AddFormulaCell(aCellPos); else - AddFormulaCell( aCellPos ); + AddNonFormulaCell(aCellPos); UnlockSolarMutex(); //if LockSolarMutex got used, we presumably need to ensure an UnlockSolarMutex diff --git a/sc/source/filter/xml/xmlcelli.hxx b/sc/source/filter/xml/xmlcelli.hxx index b71537e..58d0e45 100644 --- a/sc/source/filter/xml/xmlcelli.hxx +++ b/sc/source/filter/xml/xmlcelli.hxx @@ -81,9 +81,9 @@ class ScXMLTableRowCellContext : public SvXMLImportContext void PutTextCell ( const ScAddress& rScCurrentPos, const SCCOL nCurrentCol, const ::boost::optional< rtl::OUString >& pOUText ); void PutValueCell ( const ScAddress& rScCurrentPos ); - void AddTextAndValueCells ( const ScAddress& rScCellPos, + void AddTextAndValueCell ( const ScAddress& rScCellPos, const ::boost::optional< rtl::OUString >& pOUText, ScAddress& rScCurrentPos ); - void AddNonFormulaCells ( const ScAddress& rScCellPos ); + void AddNonFormulaCell ( const ScAddress& rScCellPos ); void PutFormulaCell ( const ScAddress& rScCurrentPos ); void AddFormulaCell ( const ScAddress& rScCellPos ); commit 0757bf72bc77eb559c61b375aabce58777014ba0 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Thu Feb 7 22:36:07 2013 -0500 Removal of more obsolete stuff... Change-Id: Idad9121270ae89c504577f4e8d70ca4c4ed2e64b diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx index 4659c2a..179c992 100644 --- a/sc/source/filter/xml/xmlcelli.cxx +++ b/sc/source/filter/xml/xmlcelli.cxx @@ -120,7 +120,6 @@ ScXMLTableRowCellContext::ScXMLTableRowCellContext( ScXMLImport& rImport, bIsMatrix(false), bIsCovered(bTempIsCovered), bIsEmpty(true), - bHasTextImport(false), bIsFirstTextImport(false), bSolarMutexLocked(false), bFormulaTextResult(false), @@ -306,42 +305,6 @@ void ScXMLTableRowCellContext::PushParagraph(const OUString& rPara) maParagraphs.push_back(rPara); } -void ScXMLTableRowCellContext::SetCursorOnTextImport(const rtl::OUString& rOUTempText) -{ - ScAddress aCellPos = rXMLImport.GetTables().GetCurrentCellPos(); - if (cellExists(aCellPos)) - { - sal_Int32 nCol = static_cast<sal_Int32>( aCellPos.Col() ); - sal_Int32 nRow = static_cast<sal_Int32>( aCellPos.Row() ); - uno::Reference<table::XCellRange> xCellRange(rXMLImport.GetTables().GetCurrentXCellRange()); - if (xCellRange.is()) - { - com::sun::star::uno::Reference<com::sun::star::table::XCell> xBaseCell( xCellRange->getCellByPosition(nCol, nRow) ); - if (xBaseCell.is()) - { - com::sun::star::uno::Reference<com::sun::star::document::XActionLockable> xLockable(xBaseCell, uno::UNO_QUERY); - if (xLockable.is()) - xLockable->addActionLock(); - uno::Reference<text::XText> xText(xBaseCell, uno::UNO_QUERY); - if (xText.is()) - { - uno::Reference<text::XTextCursor> xTextCursor(xText->createTextCursor()); - if (xTextCursor.is()) - { - xTextCursor->setString(rOUTempText); - xTextCursor->gotoEnd(false); - rXMLImport.GetTextImport()->SetCursor(xTextCursor); - } - } - } - } - } - else - { - OSL_FAIL("this method should only be called for a existing cell"); - } -} - SvXMLImportContext *ScXMLTableRowCellContext::CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLName, const ::com::sun::star::uno::Reference< @@ -777,7 +740,7 @@ void ScXMLTableRowCellContext::PutTextCell( const ScAddress& rCurrentPos, // so ProgressBarIncrement must be called with bEditCell = FALSE. // Formatted text that is put into the cell by the child context // is handled in AddCellsToTable() (bIsEmpty is true then). - if (bDoIncrement || bHasTextImport) + if (bDoIncrement) rXMLImport.ProgressBarIncrement(false); } @@ -901,11 +864,6 @@ void ScXMLTableRowCellContext::AddTextAndValueCells( const ScAddress& rCellPos, } else { - // #i56027# If the child context put formatted text into the cell, - // bIsEmpty is true and ProgressBarIncrement has to be called - // with bEditCell = TRUE. - if (bHasTextImport) - rXMLImport.ProgressBarIncrement(true); if ((i == 0) && (rCellPos.Col() == 0)) { for (sal_Int32 j = 1; j < nRepeatedRows; ++j) @@ -1144,19 +1102,6 @@ bool ScXMLTableRowCellContext::IsPossibleErrorString() const void ScXMLTableRowCellContext::EndElement() { - if( bHasTextImport && rXMLImport.GetRemoveLastChar() ) - { - UniReference< XMLTextImportHelper > aTextImport = rXMLImport.GetTextImport(); - if( aTextImport->GetCursor().is() ) - { - if( aTextImport->GetCursor()->goLeft(1, true) ) - { - aTextImport->GetText()->insertString( - aTextImport->GetCursorAsRange(), rtl::OUString(), true ); - } - aTextImport->ResetCursor(); - } - } HasSpecialCaseFormulaText(); if( bFormulaTextResult && (mbPossibleErrorCell || mbCheckWithCompilerForError) ) { diff --git a/sc/source/filter/xml/xmlcelli.hxx b/sc/source/filter/xml/xmlcelli.hxx index cd0ce08..b71537e 100644 --- a/sc/source/filter/xml/xmlcelli.hxx +++ b/sc/source/filter/xml/xmlcelli.hxx @@ -55,7 +55,6 @@ class ScXMLTableRowCellContext : public SvXMLImportContext bool bIsMatrix; bool bIsCovered; bool bIsEmpty; - bool bHasTextImport; bool bIsFirstTextImport; bool bSolarMutexLocked; bool bFormulaTextResult; @@ -108,7 +107,6 @@ public: ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); void PushParagraph(const OUString& rPara); - void SetCursorOnTextImport(const rtl::OUString& rOUTempText); void SetAnnotation( const ScAddress& rPosition ); void SetDetectiveObj( const ScAddress& rPosition ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits