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

Reply via email to