sc/qa/unit/data/contentCSV/new_cond_format_test.csv | 22 ++++++++++++ sc/qa/unit/data/xlsx/new_cond_format_test.xlsx |binary sc/qa/unit/helper/csv_handler.hxx | 3 + sc/qa/unit/subsequent_filters-test.cxx | 28 ++++++++++++++++ sc/source/filter/excel/xecontent.cxx | 34 ++++++++++++++++++++ sc/source/ui/condformat/condformatdlgentry.cxx | 5 ++ 6 files changed, 92 insertions(+)
New commits: commit 4e1f89f08bd9712edeb0a0770193cb21633c054c Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat Nov 3 19:00:58 2012 +0100 hide the second edit field for all necessary cond formats Change-Id: I56c5ba7829540d0c619adb8ff68eacc736ff92ff diff --git a/sc/source/ui/condformat/condformatdlgentry.cxx b/sc/source/ui/condformat/condformatdlgentry.cxx index 77f51d0..1f4a1f0 100644 --- a/sc/source/ui/condformat/condformatdlgentry.cxx +++ b/sc/source/ui/condformat/condformatdlgentry.cxx @@ -158,6 +158,7 @@ ScConditionFrmtEntry::ScConditionFrmtEntry( Window* pParent, ScDocument* pDoc, c StyleSelectHdl(NULL); ScConditionMode eMode = pFormatEntry->GetOperation(); maEdVal1.SetText(pFormatEntry->GetExpression(maPos, 0)); + maEdVal2.Hide(); switch(eMode) { case SC_COND_EQUAL: @@ -179,10 +180,12 @@ ScConditionFrmtEntry::ScConditionFrmtEntry( Window* pParent, ScDocument* pDoc, c maLbCondType.SelectEntryPos(5); break; case SC_COND_BETWEEN: + maEdVal2.Show(); maEdVal2.SetText(pFormatEntry->GetExpression(maPos, 1)); maLbCondType.SelectEntryPos(6); break; case SC_COND_NOTBETWEEN: + maEdVal2.Show(); maEdVal2.SetText(pFormatEntry->GetExpression(maPos, 1)); maLbCondType.SelectEntryPos(7); break; @@ -209,9 +212,11 @@ ScConditionFrmtEntry::ScConditionFrmtEntry( Window* pParent, ScDocument* pDoc, c maLbCondType.SelectEntryPos(13); break; case SC_COND_ABOVE_AVERAGE: + maEdVal1.Hide(); maLbCondType.SelectEntryPos(14); break; case SC_COND_BELOW_AVERAGE: + maEdVal1.Hide(); maLbCondType.SelectEntryPos(15); break; case SC_COND_NONE: commit 338c7073e45df2463dfe1e85babe34bc10017a1c Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat Nov 3 19:00:34 2012 +0100 improve cond format export to ooxml Change-Id: Ie89d5595c528b546b5de870421bf7d27a928c739 diff --git a/sc/source/filter/excel/xecontent.cxx b/sc/source/filter/excel/xecontent.cxx index e278a09..9672dc4 100644 --- a/sc/source/filter/excel/xecontent.cxx +++ b/sc/source/filter/excel/xecontent.cxx @@ -853,16 +853,50 @@ const char* GetTypeString(ScConditionMode eMode) } } +bool IsTopBottomRule(ScConditionMode eMode) +{ + switch(eMode) + { + case SC_COND_TOP10: + case SC_COND_BOTTOM10: + case SC_COND_TOP_PERCENT: + case SC_COND_BOTTOM_PERCENT: + return true; + default: + break; + } + + return false; +} + } void XclExpCFImpl::SaveXml( XclExpXmlStream& rStrm ) { bool bFmla2 = false; + ScConditionMode eOperation = mrFormatEntry.GetOperation(); + sal_Int32 nAboveAverage = eOperation == SC_COND_ABOVE_AVERAGE; + sal_Int32 nBottom = eOperation == SC_COND_BOTTOM10 + || eOperation == SC_COND_BOTTOM_PERCENT; + sal_Int32 nPercent = eOperation == SC_COND_TOP_PERCENT || + eOperation == SC_COND_BOTTOM_PERCENT; + rtl::OString aRank; + if(IsTopBottomRule(eOperation)) + { + // position and formula grammar are not important + // we only store a number there + aRank = XclXmlUtils::ToOString(mrFormatEntry.GetExpression(ScAddress(0,0,0), 0)); + } + sax_fastparser::FSHelperPtr& rWorksheet = rStrm.GetCurrentStream(); rWorksheet->startElement( XML_cfRule, XML_type, GetTypeString( mrFormatEntry.GetOperation() ), XML_priority, OString::valueOf( mnPriority + 1 ).getStr(), XML_operator, GetOperatorString( mrFormatEntry.GetOperation(), bFmla2 ), + XML_aboveAverage, OString::valueOf( nAboveAverage ).getStr(), + XML_bottom, OString::valueOf( nBottom ).getStr(), + XML_percent, OString::valueOf( nPercent ).getStr(), + XML_rank, aRank.getStr(), XML_dxfId, OString::valueOf( GetDxfs().GetDxfId( mrFormatEntry.GetStyle() ) ).getStr(), FSEND ); rWorksheet->startElement( XML_formula, FSEND ); commit 167ba3fee2f3f52420197d7791a3125787a93247 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat Nov 3 18:59:32 2012 +0100 add an import test for the new cond formats Change-Id: I2c25604df183ce27845f9e01bb27ab92fc8ffbec diff --git a/sc/qa/unit/data/contentCSV/new_cond_format_test.csv b/sc/qa/unit/data/contentCSV/new_cond_format_test.csv new file mode 100644 index 0000000..156f2a0 --- /dev/null +++ b/sc/qa/unit/data/contentCSV/new_cond_format_test.csv @@ -0,0 +1,22 @@ +,top n elements,,bottom n elements,,top n percent,,bottom n percent,,above average,,below average,,above equal average,,below equal average +,1,,1.00,,1,,1.00,,1,,1.00,,2,,2.00 +,2,,2.00,,2,,2.00,,2,,2.00,,3,,3.00 +,3,,3.00,,3,,3.00,,3,,3.00,,4,,4.00 +,4,,4.00,,4,,4,,4,,4.00,,5,,5.00 +,5,,5,,5,,5,,5,,5.00,,6,,6.00 +,6,,6,,6,,6,,6,,6.00,,7,,7.00 +,7,,7,,7,,7,,7,,7.00,,11.00,,11 +,10,,10,,10,,10,,10.00,,10,,10.00,,10.00 +,11,,11,,11,,11,,11.00,,11,,11.00,,11 +,12,,12,,12,,12,,12.00,,12,,12.00,,12 +,13,,13,,13,,13,,13.00,,13,,13.00,,13 +,14,,14,,14,,14,,14.00,,14,,14.00,,14 +,15.00,,15,,15,,15,,15.00,,15,,15.00,,15 +,16.00,,16,,16,,16,,16.00,,16,,16.00,,16 +,17.00,,17,,17,,17,,17.00,,17,,17.00,,17 +,18.00,,18,,18.00,,18,,18.00,,18,,18.00,,18 +,19.00,,19,,19.00,,19,,19.00,,19,,19.00,,19 +,20.00,,20,,20.00,,20,,20.00,,20,,20.00,,20 +,1,,1.00,,1,,1.00,,1,,1.00,,2,,2.00 +,2,,2.00,,2,,2.00,,2,,2.00,,2,,2.00 +,3,,3.00,,3,,3.00,,3,,3.00,,3,,3.00 diff --git a/sc/qa/unit/data/xlsx/new_cond_format_test.xlsx b/sc/qa/unit/data/xlsx/new_cond_format_test.xlsx new file mode 100644 index 0000000..f5a6977 Binary files /dev/null and b/sc/qa/unit/data/xlsx/new_cond_format_test.xlsx differ diff --git a/sc/qa/unit/subsequent_filters-test.cxx b/sc/qa/unit/subsequent_filters-test.cxx index 798ce07..4bed60f 100644 --- a/sc/qa/unit/subsequent_filters-test.cxx +++ b/sc/qa/unit/subsequent_filters-test.cxx @@ -1664,12 +1664,40 @@ void ScFiltersTest::testColorScaleXLSX() void ScFiltersTest::testDataBarODS() { +} + +namespace { + +void testNewCondFormatData( const rtl::OUString& rFilePath, ScDocument* pDoc ) +{ + +} } void ScFiltersTest::testNewCondFormat() { + const rtl::OUString aFileNameBase("new_cond_format_test."); + rtl::OUString aFileExtension(aFileFormats[XLSX].pName, strlen(aFileFormats[XLSX].pName), RTL_TEXTENCODING_UTF8 ); + rtl::OUString aFilterName(aFileFormats[XLSX].pFilterName, strlen(aFileFormats[XLSX].pFilterName), RTL_TEXTENCODING_UTF8) ; + rtl::OUString aFileName; + createFileURL(aFileNameBase, aFileExtension, aFileName); + rtl::OUString aFilterType(aFileFormats[XLSX].pTypeName, strlen(aFileFormats[XLSX].pTypeName), RTL_TEXTENCODING_UTF8); + std::cout << aFileFormats[XLSX].pName << " Test" << std::endl; + unsigned int nFormatType = aFileFormats[XLSX].nFormatType; + unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0; + ScDocShellRef xDocSh = load(aFilterName, aFileName, rtl::OUString(), aFilterType, + nFormatType, nClipboardId, SOFFICE_FILEFORMAT_CURRENT); + + CPPUNIT_ASSERT_MESSAGE("Failed to load new_cond_format_test.xlsx", xDocSh.Is()); + + ScDocument* pDoc = xDocSh->GetDocument(); + + rtl::OUString aCSVFile("new_cond_format_test."); + rtl::OUString aCSVPath; + createCSVPath( aCSVFile, aCSVPath ); + testCondFile(aCSVPath, pDoc, 0); } ScFiltersTest::ScFiltersTest() commit 81fd504f0b39130770144ac73c39e7309a836731 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat Nov 3 18:57:45 2012 +0100 be more forgiving for empty cells in tests with csv files Change-Id: I69f66cc580da0aab79e7df15ad5201624ce0f9f2 diff --git a/sc/qa/unit/helper/csv_handler.hxx b/sc/qa/unit/helper/csv_handler.hxx index 4d16576..8493f10 100644 --- a/sc/qa/unit/helper/csv_handler.hxx +++ b/sc/qa/unit/helper/csv_handler.hxx @@ -44,6 +44,9 @@ rtl::OUString getConditionalFormatString(ScDocument* pDoc, SCCOL nCol, SCROW nRo rtl::OUString aString; Color* pColor; ScBaseCell* pCell = pDoc->GetCell(ScAddress(nCol, nRow, nTab)); + if(!pCell) + return aString; + const SfxItemSet* pCondSet = pDoc->GetCondResult( nCol, nRow, nTab ); const ScPatternAttr* pPattern = pDoc->GetPattern(nCol, nRow, nTab); SvNumberFormatter* pFormatter = pDoc->GetFormatTable(); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits